-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathApplicationManager.cpp
More file actions
172 lines (135 loc) · 3.63 KB
/
Copy pathApplicationManager.cpp
File metadata and controls
172 lines (135 loc) · 3.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
#include "ApplicationManager.h"
#include "copycell.h"
#include "Cutobject.h"
#include "Paste.h"
#include "Grid.h"
#include "AddBeltAction.h"
#include "AddRotatingGearAction.h"
#include "AddFlagAction.h"
#include "NewGameAction.h"
#include "deleteobject.h"
#include "Savegrid.h"
#include"loadAction.h"
#include "AddAntennaAction.h"
#include "ConsumableAction.h"
///TODO: Add #include for all action types
ApplicationManager::ApplicationManager()
{
// Create Input, output and Grid
pOut = new Output();
pIn = pOut->CreateInput();
pGrid = new Grid(pIn, pOut);
}
////////////////////////////////////////////////////////////////////////////////////
ApplicationManager::~ApplicationManager()
{
delete pGrid;
}
//==================================================================================//
// Interface Management Functions //
//==================================================================================//
Grid * ApplicationManager::GetGrid() const
{
return pGrid;
}
void ApplicationManager::UpdateInterface() const
{
pGrid->UpdateInterface();
}
//==================================================================================//
// Actions Related Functions //
//==================================================================================//
ActionType ApplicationManager::GetUserAction() const
{
// Ask the input to get the action from the user.
return pIn->GetUserAction();
}
////////////////////////////////////////////////////////////////////////////////////
// Creates an action and executes it
void ApplicationManager::ExecuteAction(ActionType ActType)
{
Action* pAct = NULL;
// According to Action Type, create the corresponding action object
switch (ActType)
{
case SET_BELT:
pAct = new AddBeltAction(this);
break;
case SET_ANTENNA:
pAct = new AddAntennaAction(this);
break;
case SET_ROTATING_CLOCK:
pAct = new AddRotatingGearAction(this);
break;
case SET_ROTATING_COUNTER_CLOCK:
pAct = new AddRotatingGearAction(this);
break;
case USE_CONSUMABLE:
pAct = new ConsumableAction(this);
break;
case SET_DANGER_ZONE:
pAct = new AddDangerZoneAction (this);
case SET_WATER_PIT:
pAct = new AddWaterPitAction(this);
case SET_WORKSHOP:
pAct = new AddWorkShopAction(this);
case SET_ROTATING_CLOCK:
// create an object of AddRotatingGearAction here
pAct = new AddRotatingGearAction(this);
break;
case SET_FLAG_CELL:
// create an object of AddFlagAction here
pAct = new AddFlagAction(this);
break;
case EXIT:
break;
case COPY_OBJ:
pAct = new copycell(this);
break;
case CUT_OBJ:
pAct = new Cutobject(this);
break;
case PASTE_OBJ:
pAct = new Paste(this);
break;
case DELETE_OBJ:
pAct = new deleteobject(this);
break;
case SAVE_GRID:
pAct = new SaveGridAction(this);
break;
case OPEN_GRID:
pAct = new loadAction(this);
break;
case TO_PLAY_MODE: //TODO:
pOut->CreatePlayModeToolBar(); // temporary till you made its action class (CHANGE THIS LATTER)
break;
//
///TODO: Add a case for EACH Action type in the Design mode or Play mode
////play mode cases////Eyad//
case TO_DESIGN_MODE: //TODO:
pOut->CreateDesignModeToolBar(); // temporary till you made its action class (CHANGE THIS LATTER)
break;
case EXECUTE_COMMANDS:
break;
case SELECT_COMMAND:
break;
case NEW_GAME:
pAct = new NewGameAction(this);
UpdateInterface();
break;
case EXIT_Game:
break;
case REPAIR:
break;
case STATUS: // a click on the status bar ==> no action
return;
}
// Execute the created action
if(pAct != NULL)
{
pAct->Execute(); // Execute
delete pAct; // Action is not needed any more after executing ==> delete it
pAct = NULL;
}
}