annotate LightClone/Source/ScreenManager.cpp @ 73:0574e2cf8bac

Additional screen types
author koryspansel
date Tue, 11 Oct 2011 17:44:10 -0700
parents bc8afcf7e1ec
children
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
73
0574e2cf8bac Additional screen types
koryspansel
parents: 71
diff changeset
81 //for(int32 i = kStack.Size() - 1; i >= 0 && !bDirty; --i)
0574e2cf8bac Additional screen types
koryspansel
parents: 71
diff changeset
82 //{
0574e2cf8bac Additional screen types
koryspansel
parents: 71
diff changeset
83 // kStack[i]->Update(fElapsed);
0574e2cf8bac Additional screen types
koryspansel
parents: 71
diff changeset
84 //}
0574e2cf8bac Additional screen types
koryspansel
parents: 71
diff changeset
85 if(kStack.Size() > 0)
71
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
86 {
73
0574e2cf8bac Additional screen types
koryspansel
parents: 71
diff changeset
87 Screen* pTop = kStack.Peek();
0574e2cf8bac Additional screen types
koryspansel
parents: 71
diff changeset
88 ASSERT(pTop != NULL);
0574e2cf8bac Additional screen types
koryspansel
parents: 71
diff changeset
89
0574e2cf8bac Additional screen types
koryspansel
parents: 71
diff changeset
90 pTop->Update(fElapsed);
71
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
91 }
68
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
92 }
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
93
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
94 /*
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
95 * Render
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
96 */
70
ffaeccdc105e Work on screen manager
koryspansel
parents: 68
diff changeset
97 void ScreenManager::Render(RenderContext& kContext)
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 const int32 nSize = kStack.Size();
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 for(int32 i = 0; i < nSize; ++i)
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 kStack[i]->Render(kContext);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
104 }
68
c4ece16cf995 Finish cleaning up memory leaks; Starting on screen manager
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
105 }
71
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 /*
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
108 * Set
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 void ScreenManager::Set(const char* pName)
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 while(kStack.Size() > 1)
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
113 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
114 Screen* pScreen = kStack.Pop();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
115 ASSERT(pScreen != NULL);
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 pScreen->OnExit();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
118
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
119 Screen* pTop = kStack.Peek();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
120 ASSERT(pTop != NULL);
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 pTop->OnResume();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
123 }
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 if(kStack.Size() > 0)
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 ASSERT(kStack.Size() == 1);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
128
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
129 Screen* pScreen = kStack.Pop();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
130 ASSERT(pScreen != NULL);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
131
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
132 pScreen->OnExit();
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
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
135 Screen** pInstance = kScreens.Find(pName);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
136 if(pInstance)
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
137 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
138 ASSERT(*pInstance != NULL);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
139 (*pInstance)->OnEnter();
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 kStack.Push(*pInstance);
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
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
144 bDirty = true;
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
145 }
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
146
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 * Push
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 void ScreenManager::Push(const char* pName)
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
151 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
152 Screen** pInstance = kScreens.Find(pName);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
153 ASSERT(pInstance != NULL);
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 if(kStack.Size() > 0)
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
156 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
157 Screen* pTop = kStack.Peek();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
158 ASSERT(pTop != NULL);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
159
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
160 pTop->OnPause();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
161 }
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 ASSERT(*pInstance != NULL);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
164 (*pInstance)->OnEnter();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
165
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
166 kStack.Push(*pInstance);
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
167
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
168 bDirty = true;
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
169 }
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 /*
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
172 * Pop
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 void ScreenManager::Pop()
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 ASSERT(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* pScreen = kStack.Pop();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
179 ASSERT(pScreen != 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 pScreen->OnExit();
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 if(kStack.Size() > 0)
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
184 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
185 Screen* pTop = kStack.Peek();
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
186 ASSERT(pTop != NULL);
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 pTop->OnResume();
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
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
191 bDirty = true;
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
192 }
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
193
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
194 /*
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
195 * IsActive
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
196 */
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
197 bool ScreenManager::IsActive() const
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
198 {
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
199 return kStack.Size() > 0;
bc8afcf7e1ec Refactor world into game screen
koryspansel <koryspansel@bendbroadband.com>
parents: 70
diff changeset
200 }