OpenBarnyard
 
Loading...
Searching...
No Matches
AMovieState.cpp
Go to the documentation of this file.
1#include "pch.h"
2#include "AMovieState.h"
4#include "GUI/AFadeManager.h"
7
9
10//-----------------------------------------------------------------------------
11// Enables memory debugging.
12// Note: Should be the last include!
13//-----------------------------------------------------------------------------
14#include <Core/TMemoryDebugOn.h>
15
17
19
20AMovieState::AMovieState( const TCHAR* a_szName, TBOOL a_bFlag1, AGameState* a_pNextGameState, TBOOL a_bFlag2 )
21{
22 m_pNextGameState = a_pNextGameState;
23 m_bFlag1 = a_bFlag1;
24 m_bFlag2 = a_bFlag2;
25 m_HUDParams.SetFlags( 0 );
26 m_FileName = a_szName;
27}
28
30{
31 if ( AFadeManager::GetSingleton()->HasAnyFadesInProgress( TTRUE ) || m_FadeOverListener.IsLinked() )
32 {
33 return TFALSE;
34 }
35
36 if ( a_pInputEvent->GetEventType() == TInputInterface::EVENT_TYPE_GONE_DOWN &&
37 a_pInputEvent->GetDoodad() == TInputDeviceMouse::BUTTON_1 )
38 {
39 SkipMovie( TFALSE );
40 return TTRUE;
41 }
42
43 return AGameState::ProcessInput( a_pInputEvent );
44}
45
46TBOOL AMovieState::ProcessCommand( AInputCommand a_eInputCommand, const TInputInterface::InputEvent* a_pInputEvent, TBOOL& a_rStopEvents )
47{
48 if ( AFadeManager::GetSingleton()->HasAnyFadesInProgress( TTRUE ) || m_FadeOverListener.IsLinked() )
49 {
50 return TFALSE;
51 }
52
53 if ( a_eInputCommand == AInputCommand_OK ||
54 a_eInputCommand == AInputCommand_Cancel ||
55 a_eInputCommand == AInputCommand_Start )
56 {
57 SkipMovie( TFALSE );
58 return TTRUE;
59 }
60
61 return TFALSE;
62}
63
65{
66 if ( AMoviePlayer::GetSingleton()->IsMoviePlaying() )
67 {
68 return AGameState::OnUpdate( a_fDeltaTime );
69 }
70 else
71 {
72 return EndMovieImmediately();
73 }
74}
75
76TPSTRING8_DECLARE( DialogInputMap );
77
79{
80 SetInputMap( TPS8( DialogInputMap ) );
82
83 if ( m_FileName == TPString8( "Attract" ) )
84 {
85 switch ( ALocaleManager::Interface()->GetLanguage() )
86 {
88 m_FileName = "AttractD";
89 break;
91 m_FileName = "AttractI";
92 break;
94 m_FileName = "AttractE";
95 break;
97 m_FileName = "AttractF";
98 break;
100 m_FileName = "AttractN";
101 break;
102 }
103 }
104
105 AMoviePlayer::GetSingleton()->PlayMovie( m_FileName, -( m_bFlag2 != TFALSE ) & 2 );
106}
107
109{
110 m_Listener1.Disconnect();
111 AMoviePlayer::GetSingleton()->StopMovie();
113}
114
115void AMovieState::SkipMovie( TBOOL a_bFastSkip )
116{
117 if ( !a_bFastSkip )
118 {
119 if ( !m_FadeOverListener.IsLinked() )
120 {
121 AFade::Color fadeFrom( 0, 0, 0, 0 );
122 AFade::Color fadeTo( 255, 0, 0, 0 );
123
124 auto pFade = AFadeManager::GetSingleton()->StartFade( fadeFrom, fadeTo, 0.5f );
125 m_FadeOverListener.Connect(
126 pFade->GetFadeOverEmitter(),
127 this,
128 []( AMovieState* a_pMovieState, AFade* a_pFade, TBOOL* ) {
129 return a_pMovieState->EndMovieImmediately();
130 },
131 0
132 );
133 }
134 }
135 else
136 {
137 EndMovieImmediately();
138 }
139}
140
141TBOOL AMovieState::EndMovieImmediately()
142{
143 AFade::Color fadeTo( 0, 0, 0, 0 );
144 AFade::Color fadeFrom( 0, 0, 0, 0 );
145
146 if ( m_bFlag1 )
147 {
148 m_FadeOverListener.Disconnect();
149 fadeFrom.A = 255;
150 fadeTo.A = 0;
151 }
152 else
153 {
154 if ( !m_pNextGameState )
155 {
156 m_FadeOverListener.Disconnect();
157 fadeFrom.A = 255;
158 fadeTo.A = 0;
159
160 AFadeManager::GetSingleton()->StartFade( fadeFrom, fadeTo, 0.75f );
161 AGameStateController::GetSingleton()->PopState( this );
162 return TTRUE;
163 }
164
165 m_FadeOverListener.Disconnect();
166 fadeFrom.A = 255;
167 fadeTo.A = 0;
168 }
169
170 AFadeManager::GetSingleton()->StartFade( fadeFrom, fadeTo, 0.75f );
171 AGameStateController::GetSingleton()->ReplaceState( m_pNextGameState );
172 return TTRUE;
173}
Mouse input device for the Toshi engine.
#define TOSHI_NAMESPACE_USING
Definition Defines.h:46
#define TDEFINE_CLASS_NORUNTIME(...)
Definition TObject.h:138
#define TPSTRING8_DECLARE(STR)
Definition TPString8.h:15
#define TPS8(STR)
Definition TPString8.h:16
char TCHAR
Definition Typedefs.h:20
float TFLOAT
Definition Typedefs.h:4
#define TFALSE
Definition Typedefs.h:24
#define TTRUE
Definition Typedefs.h:25
bool TBOOL
Definition Typedefs.h:6
AInputCommand
Definition AInputMap.h:12
@ AInputCommand_OK
Definition AInputMap.h:15
@ AInputCommand_Start
Definition AInputMap.h:21
@ AInputCommand_Cancel
Definition AInputMap.h:16
EVENT_TYPE GetEventType() const
virtual TBOOL OnUpdate(TFLOAT a_fDeltaTime)
virtual void OnRemoval()
virtual TBOOL ProcessInput(const Toshi::TInputInterface::InputEvent *a_pInputEvent)
void SetInputMap(const Toshi::TPString8 &a_MapName)
virtual void OnInsertion()
HUDParams m_HUDParams
Definition AGameState.h:135
virtual TBOOL OnUpdate(TFLOAT a_fDeltaTime) override
virtual TBOOL ProcessCommand(AInputCommand a_eInputCommand, const Toshi::TInputInterface::InputEvent *a_pInputEvent, TBOOL &a_rStopEvents) override
virtual void OnRemoval() override
AMovieState(const TCHAR *a_szName, TBOOL a_bFlag1, AGameState *a_pNextGameState, TBOOL a_bFlag2)
virtual TBOOL ProcessInput(const Toshi::TInputInterface::InputEvent *a_pInputEvent) override
virtual void OnInsertion() override
Definition AFade.h:9
static ALocaleManager * Interface()