annotate LightClone/Source/ScreenManager.cpp @ 71:bc8afcf7e1ec

Refactor world into game screen
author koryspansel <koryspansel@bendbroadband.com>
date Tue, 11 Oct 2011 13:20:43 -0700
parents ffaeccdc105e
children 0574e2cf8bac
rev   line source
68
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
1 /*
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
2 * ScreenManager
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
3 */
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
4
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
5 #include "ScreenManager.h"
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
6
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
7 /*
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
8 * ScreenManager
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
9 */
71
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
10 ScreenManager::ScreenManager() : bDirty(false)
68
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
11 {
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
12 }
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
13
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
14 /*
70
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
15 * Register
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
16 */
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
17 ErrorCode ScreenManager::Register(const char* pName, Screen* pInstance)
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
18 {
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
19 ErrorCode eCode = Error_Fail;
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
20
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
21 if(pInstance)
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
22 {
71
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
23 Screen** pScreen = kScreens.Find(pName);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
24
70
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
25 if(!pScreen)
71
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
26 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
27 pScreen = kScreens.Add(pName);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
28 }
70
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
29
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
30 if(pScreen)
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
31 {
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
32 (*pScreen) = pInstance;
71
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
33 (*pScreen)->pScreenManager = this;
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
34
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
35 eCode = Error_Success;
70
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
36 }
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
37 }
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
38
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
39 return eCode;
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
40 }
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
41
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
42 /*
68
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
43 * Initialize
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
44 */
70
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
45 ErrorCode ScreenManager::Initialize(ServiceProvider* pServiceProvider)
68
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
46 {
71
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
47 ErrorCode eCode = Error_Success;
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
48
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
49 ScreenMap::Iterator kScreen = kScreens.Begin();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
50 ScreenMap::Iterator kScreenEnd = kScreens.End();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
51
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
52 for(; kScreen != kScreenEnd && eCode == Error_Success; ++kScreen)
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
53 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
54 eCode = (*kScreen)->Initialize(pServiceProvider);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
55 }
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
56
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
57 return eCode;
68
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
58 }
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
59
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
60 /*
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
61 * Terminate
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
62 */
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
63 void ScreenManager::Terminate()
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
64 {
71
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
65 ScreenMap::Iterator kScreen = kScreens.Begin();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
66 ScreenMap::Iterator kScreenEnd = kScreens.End();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
67
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
68 for(; kScreen != kScreenEnd; ++kScreen)
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
69 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
70 (*kScreen)->Terminate();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
71 }
68
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
72 }
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
73
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
74 /*
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
75 * Update
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
76 */
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
77 void ScreenManager::Update(float fElapsed)
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
78 {
71
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
79 bDirty = false;
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
80
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
81 for(int32 i = kStack.Size() - 1; i >= 0 && !bDirty; --i)
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
82 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
83 kStack[i]->Update(fElapsed);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
84 }
68
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
85 }
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
86
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
87 /*
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
88 * Render
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
89 */
70
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
90 void ScreenManager::Render(RenderContext& kContext)
68
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
91 {
71
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
92 const int32 nSize = kStack.Size();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
93
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
94 for(int32 i = 0; i < nSize; ++i)
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
95 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
96 kStack[i]->Render(kContext);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
97 }
68
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
98 }
71
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
99
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
100 /*
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
101 * Set
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
102 */
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
103 void ScreenManager::Set(const char* pName)
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
104 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
105 while(kStack.Size() > 1)
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
106 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
107 Screen* pScreen = kStack.Pop();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
108 ASSERT(pScreen != NULL);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
109
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
110 pScreen->OnExit();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
111
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
112 Screen* pTop = kStack.Peek();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
113 ASSERT(pTop != NULL);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
114
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
115 pTop->OnResume();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
116 }
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
117
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
118 if(kStack.Size() > 0)
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
119 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
120 ASSERT(kStack.Size() == 1);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
121
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
122 Screen* pScreen = kStack.Pop();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
123 ASSERT(pScreen != NULL);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
124
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
125 pScreen->OnExit();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
126 }
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
127
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
128 Screen** pInstance = kScreens.Find(pName);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
129 if(pInstance)
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
130 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
131 ASSERT(*pInstance != NULL);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
132 (*pInstance)->OnEnter();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
133
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
134 kStack.Push(*pInstance);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
135 }
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
136
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
137 bDirty = true;
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
138 }
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
139
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
140 /*
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
141 * Push
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
142 */
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
143 void ScreenManager::Push(const char* pName)
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
144 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
145 Screen** pInstance = kScreens.Find(pName);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
146 ASSERT(pInstance != NULL);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
147
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
148 if(kStack.Size() > 0)
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
149 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
150 Screen* pTop = kStack.Peek();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
151 ASSERT(pTop != NULL);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
152
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
153 pTop->OnPause();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
154 }
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
155
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
156 ASSERT(*pInstance != NULL);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
157 (*pInstance)->OnEnter();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
158
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
159 kStack.Push(*pInstance);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
160
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
161 bDirty = true;
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
162 }
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
163
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
164 /*
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
165 * Pop
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
166 */
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
167 void ScreenManager::Pop()
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
168 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
169 ASSERT(kStack.Size() > 0);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
170
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
171 Screen* pScreen = kStack.Pop();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
172 ASSERT(pScreen != NULL);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
173
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
174 pScreen->OnExit();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
175
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
176 if(kStack.Size() > 0)
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
177 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
178 Screen* pTop = kStack.Peek();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
179 ASSERT(pTop != NULL);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
180
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
181 pTop->OnResume();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
182 }
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
183
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
184 bDirty = true;
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
185 }
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
186
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
187 /*
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
188 * IsActive
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
189 */
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
190 bool ScreenManager::IsActive() const
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
191 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
192 return kStack.Size() > 0;
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
193 }