OpenBarnyard
 
Loading...
Searching...
No Matches
AFadeManager.cpp
Go to the documentation of this file.
1#include "pch.h"
2#include "AFadeManager.h"
3#include "Tasks/ARootTask.h"
4#include "GUI/AGUI2.h"
5
6//-----------------------------------------------------------------------------
7// Enables memory debugging.
8// Note: Should be the last include!
9//-----------------------------------------------------------------------------
10#include <Core/TMemoryDebugOn.h>
11
13
15{
16 if ( !ARootTask::GetSingleton()->IsPaused() )
17 {
18 for ( auto it = m_ActiveFades.Begin(); it != m_ActiveFades.End(); it++ )
19 {
20 it->Update( a_fDeltaTime );
21 }
22
23 for ( auto it = m_ActiveFades.Begin(); it != m_ActiveFades.End(); )
24 {
25 auto pNext = it->Next();
26
27 if ( it->IsStillFading( TTRUE ) )
28 {
29 AFade::Color color;
30 it->GetCurrentColor( color );
31 it->GetRectangleElement().SetColour( color.GetTColor32() );
32 }
33 else
34 {
35 m_ActiveFades.Remove( it );
36 m_Fades.DeleteObject( it );
37 }
38
39 it = pNext;
40 }
41
42 return TTRUE;
43 }
44
45 return TFALSE;
46}
47
49{
50 while ( TTRUE )
51 {
52 auto it = m_ActiveFades.Begin();
53 if ( it == m_ActiveFades.End() ) break;
54
55 m_ActiveFades.Remove( it );
56 m_Fades.DeleteObject( it );
57 }
58}
59
60AFade* AFadeManager::StartFade( const AFade::Color& a_rFadeFrom, const AFade::Color& a_rFadeTo, TFLOAT a_fFadeTime )
61{
62 TFLOAT fWidth;
63 TFLOAT fHeight;
64 AGUI2::GetSingleton()->GetDimensions( fWidth, fHeight );
65
66 if ( m_Fades.GetUsedSize() == m_Fades.GetCapacity() )
67 {
68 auto pFade = m_ActiveFades.Begin();
69
70 if ( pFade != m_ActiveFades.End() )
71 {
72 m_ActiveFades.Remove( pFade );
73 m_Fades.DeleteObject( pFade );
74 }
75 }
76
77 TASSERT( m_Fades.GetUsedSize() != m_Fades.GetCapacity() );
78
79 auto pFade = m_Fades.NewObject();
80 m_ActiveFades.Push( pFade );
81
82 pFade->SetFadeTime( a_fFadeTime );
83 pFade->SetFadeFromColor( a_rFadeFrom );
84 pFade->SetFadeToColor( a_rFadeTo );
85
86 auto& rRectangle = pFade->GetRectangleElement();
87 rRectangle.Create( fWidth, fHeight );
88 rRectangle.SetAttachment( AGUI2ATTACHMENT_TOPCENTER, AGUI2ATTACHMENT_TOPCENTER );
89 rRectangle.SetColour( a_rFadeFrom.GetTColor32() );
90 rRectangle.SetInFront();
91
92 rRectangle.Unlink();
93 AGUI2::GetRootElement()->AddChildTail( rRectangle );
94 rRectangle.Show();
95
96 return pFade;
97}
98
100{
101 for ( auto it = m_ActiveFades.Begin(); it != m_ActiveFades.End(); it++ )
102 {
103 if ( it->IsStillFading( a_bThrowFadeOver ) )
104 {
105 return TTRUE;
106 }
107 }
108
109 return TFALSE;
110}
#define TASSERT(X,...)
Definition Defines.h:138
#define TDEFINE_CLASS(...)
Definition TObject.h:120
float TFLOAT
Definition Typedefs.h:4
#define TFALSE
Definition Typedefs.h:24
#define TTRUE
Definition Typedefs.h:25
bool TBOOL
Definition Typedefs.h:6
@ AGUI2ATTACHMENT_TOPCENTER
Definition AFade.h:9
constexpr TUINT32 GetTColor32() const
Definition AFade.h:32
AFadeManager()=default
virtual TBOOL OnUpdate(TFLOAT a_fDeltaTime) override
AFade * StartFade(const AFade::Color &a_rFadeFrom, const AFade::Color &a_rFadeTo, TFLOAT a_fFadeTime)
TBOOL HasAnyFadesInProgress(TBOOL a_bThrowFadeOver)
virtual void StopAllFades()
static AGUI2Element * GetRootElement()
Definition AGUI2.h:31
void AddChildTail(AGUI2Element &a_rElement)