0
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
1 /*
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
2 * Mediator
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
3 */
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
4
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
5 #include "Mediator.h"
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
6 #include <windows.h>
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
7
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
8 /*
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
9 * fUpdatePeriod
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
10 */
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
11 static const float fUpdatePeriod = 1.0f / 60.0f;
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
12
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
13 /*
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
14 * Mediator
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
15 */
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
16 Mediator::Mediator()
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
17 {
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
18 }
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
19
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
20 /*
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
21 * Run
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
22 */
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
23 ErrorCode Mediator::Run()
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
24 {
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
25 ErrorCode eCode = Initialize();
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
26 if(eCode == Error_Success)
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
27 {
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
28 float fAccumulator = 0.0f;
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
29
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
30 kClock.Reset();
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
31
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
32 while(pModel->nGameState != GameState_Exit)
|
7
|
33 //while(pWorld->IsActive())
|
0
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
34 {
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
35 ProcessMessages();
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
36
|
7
|
37 fAccumulator += Min(kClock.GetElapsed(), fUpdatePeriod);
|
0
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
38 while(fAccumulator >= fUpdatePeriod)
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
39 {
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
40 Update(fUpdatePeriod);
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
41 fAccumulator -= fUpdatePeriod;
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
42 }
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
43
|
7
|
44 //if(updated)
|
|
45 {
|
|
46 Render();
|
|
47 }
|
0
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
48 }
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
49
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
50 Terminate();
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
51 }
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
52
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
53 return eCode;
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
54 }
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
55
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
56 /*
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
57 * Initialize
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
58 */
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
59 ErrorCode Mediator::Initialize()
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
60 {
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
61 pModel = new Model();
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
62 pView = new View(pModel);
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
63 pController = new Controller(pModel, pView);
|
7
|
64 //pWorld = new World();
|
0
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
65
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
66 ErrorCode eCode = pView->Initialize();
|
7
|
67 //eCode = pWorld->Initialize();
|
0
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
68 if(eCode == Error_Success)
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
69 {
|
7
|
70 //pWorld->Activate();
|
|
71
|
0
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
72 eCode = pController->Initialize();
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
73 if(eCode == Error_Success)
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
74 {
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
75 pModel->nCurrentLevel = 0;
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
76 pModel->nGameState = GameState_LoadMap;
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
77 }
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
78 }
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
79
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
80 return eCode;
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
81 }
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
82
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
83 /*
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
84 * Terminate
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
85 */
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
86 void Mediator::Terminate()
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
87 {
|
7
|
88 /*
|
|
89 if(pWorld)
|
|
90 {
|
|
91 pWorld->Terminate();
|
|
92
|
|
93 delete pWorld;
|
|
94 pWorld = NULL;
|
|
95 }
|
|
96 */
|
|
97
|
0
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
98 if(pController)
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
99 {
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
100 pController->Terminate();
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
101
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
102 delete pController;
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
103 pController = 0;
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
104 }
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
105
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
106 if(pView)
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
107 {
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
108 pView->Terminate();
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
109
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
110 delete pView;
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
111 pView = 0;
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
112 }
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
113
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
114 delete pModel;
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
115 pModel = 0;
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
116 }
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
117
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
118 /*
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
119 * Update
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
120 */
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
121 void Mediator::Update(float fElapsed)
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
122 {
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
123 pController->Update(fElapsed);
|
7
|
124 //pWorld->Update(fElapsed);
|
0
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
125 }
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
126
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
127 /*
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
128 * Render
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
129 */
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
130 void Mediator::Render()
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
131 {
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
132 pView->Render();
|
7
|
133 //pWorld->Render();
|
0
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
134 }
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
135
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
136 /*
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
137 * ProcessMessages
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
138 */
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
139 void Mediator::ProcessMessages()
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
140 {
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
141 MSG kMessage;
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
142
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
143 while(PeekMessage(&kMessage, NULL, 0, 0, PM_REMOVE))
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
144 {
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
145 if(kMessage.message == WM_QUIT)
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
146 {
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
147 pModel->nGameState = GameState_Exit;
|
7
|
148 //pWorld->Deactivate();
|
0
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
149 break;
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
150 }
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
151
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
152 TranslateMessage(&kMessage);
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
153 DispatchMessage(&kMessage);
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
154 }
|
koryspansel <koryspansel@bendbroadband.com>
parents:
diff
changeset
|
155 } |