1 /*
2  * DESCRIPCION DEL JUEGO
3  * Copyright (C) 2007  Javier P�rez Pacheco
4  *
5  * Este juego tienen licencia Creative Commons y se permite
6  * su modificacion y utilizacion libremente siempre y cuando se
7  * cite al autor original y se comparta con la misma licencia.
8  * No se permite su uso comercial.
9  *
10  * Para mas informacion visite la web:
11  * http://creativecommons.org/licenses/by-nc-sa/2.0/es/
12  *
13  * PROGRAMADOR
14  * Javier P�rez Pacheco
15  * Cadiz (Spain)
16  * javielinux@gmail.com
17  *
18  * GRAFISMO Y 3D
19  * Jesus Carrasco
20  * Cadiz (Spain)
21  * carrasco.carrasco@gmail.com
22  *
23  * MUSICA Y GRAFISMO
24  * Shano Lores
25  * Cadiz (Spain)
26  * shanakla@gmail.com
27  *
28  */
29 
30 #ifndef SCENEEDITGAME_H_
31 #define SCENEEDITGAME_H_
32 
33 #include "martian.h"
34 #include "scene.h"
35 #include "class_editgame.h"
36 #include "class_game.h"
37 
38 
39 #include <dirent.h>
40 
41 #define SCENE_EDITGAME_MAIN 0
42 #define SCENE_EDITGAME_ADDOBJECT 1
43 #define SCENE_EDITGAME_EDITFOOD 2
44 #define SCENE_EDITGAME_EDITINFO 3
45 #define SCENE_EDITGAME_CLEAN 4
46 #define SCENE_EDITGAME_HELP 5
47 #define SCENE_EDITGAME_ADDINFOTOWN 6
48 
49 #define SCENE_EDITGAME_ADDOBJECT_GAME 0
50 #define SCENE_EDITGAME_ADDOBJECT_PERSONAL 1
51 #define SCENE_EDITGAME_ADDOBJECT_TEXT 2
52 
53 #define SCENE_EDITGAME_EDITINFO_MAIN 0
54 #define SCENE_EDITGAME_EDITINFO_DATA 1
55 #define SCENE_EDITGAME_EDITINFO_MUSIC 2
56 
57 using namespace std;
58 using namespace Martian;
59 
60 class SceneEditGame;
61 
62 class InfoButton : public Group  {
63 
64 private:
65 	Element *bg;
66 	Element *title;
67 	Button *bEdit, *bDelete;
68 	int indexz;
69 	int index;
70 
71 public:
72 	InfoButton ();
73 	~InfoButton();
74 
75 	void setTitle(string t);
76 
77 	void setIndex (int i);
getIndex()78 	int getIndex () { return index; }
79 
setIndexZ(int z)80 	void setIndexZ (int z) { indexz = z; }
getIndexZ()81 	int getIndexZ () { return indexz; }
82 
83 	void draw();
84 
85 	void onOver();
86 
87 	void unLoad();
88 
89 	void verifyClick(SceneEditGame *sc);
90 
91 };
92 
93 class SceneEditGame : public Scene {
94 
95 private:
96 	int nElmHelp;
97 
98 public:
99 
100 	Element *multiLanguageNoSupport;
101 
102 	VectorColors *vcolorsWall, *vcolorsTextInWall;
103 
104 	Entry *missionName;
105 	Entry *nameAuthor;
106 
107 	Entry *levelName;
108 	Entry *provinceName;
109 
110 	Button *bInfoMain, *bInfoData, *bInfoMusic;
111 
112 	SelectButton *typeButtonInfoTown;
113 	Entry *eTitleInfoTown;
114 	Entry *taInfoTown;
115 
116 	ListView *dataInfo;
117 	Element *noExistInfoTown;
118 	int indexEditInfoTown;
119 	Button *bAddInfo;
120 
121 	RadioButton *radMusic0, *radMusic1, *radMusic2, *radMusic3;
122 
123 	int pageEditInfo;
124 
125 	RadioButton *bNimuh, *bEnemy1, *bEnemy2, *bEnemy3, *bWallRight, *bWallBottom, *bDoor;
126 	RadioButton *bBlackHole1, *bBlackHole2, *bTrap, *bKey, *bDoorKey, *bEat;
127 
128 	Element *menuText;
129 	MarqueeElement *menuTown;
130 
131 	SelectButton *typeBoard, *typeFloor, *typeWall, *typeTiled, *typeTerrain, *colorWall, *nTilesClosed, *typePavement, *typeWallScenary;
132 
133 	Group *menu;
134 	Element *menuBg;
135 
136 	Element *frameUp, *frameDown;
137 
138 	Element *blueLine;
139 
140 	Group *handTray;
141 	Element *bgHandTray;
142 	Button *btHandTray;
143 
144 	Button *bQuit, *bEditInfo, *bAddObject, *bSave, *bRules, *bClean, *bHelp;
145 
146 	Element *bgBox;
147 	Element *bgHelp;
148 	Element *middleBox;
149 	Entry *titleFood;
150 	Entry *textFood;
151 
152 	Element *elmHelp;
153 
154 	Element *titleIndex;
155 
156 	Button *bIndex, *bPrevious, *bNext;
157 
158 	Button *bHelp1, *bHelp2, *bHelp3, *bHelp4, *bHelp5, *bHelp6, *bHelp7, *bHelp8;
159 
160 	Element *infoImageFood;
161 
162 	Button *bAccept, *bCancel;
163 
164 	Button *bCleanScenary, *bCleanBoard, *bCleanReset;
165 
166 	Button *bObjectsGame, *bObjectsPersonal, *bObjectsTexts;
167 
168 	Element *infoObjectsPersonal;
169 
170 	Element *bgArrow;
171 	Element *bgButton;
172 
173 	RadioButton *rbTypeClosedWindows, *rbTypeClosedDoors, *rbTypeClosedLights, *rbTypeClosedElements, *rbTypeClosedDecorative;
174 	RadioButton *rbTypeOpenedNature, *rbTypeOpenedBeach, *rbTypeOpenedBench, *rbTypeOpenedConstruction, *rbTypeOpenedElements;
175 
176 	ListImage *objectsGame;
177 	ListImage *objectsPersonal;
178 
179 	RadioButton *rad2d, *rad3d;
180 
181 	Entry *taText;
182 	Element *titleTypeTextsInWall;
183 	SelectButton *typeTextsInWall;
184 	SelectButton *colorTextsInWall;
185 
186 	RadioButton *radAlignLeftText, *radAlignCenterText, *radAlignRightText;
187 
188 	Button *bInsertText;
189 
190 	Button *bCancelObjects;
191 
192 	int pageAddObject;
193 
194 	void setTextDisplay(int i);
195 
setPageAddObject(int p)196 	void setPageAddObject(int p) { pageAddObject = p; }
getPageAddObject()197 	int getPageAddObject() { return pageAddObject; }
198 
setPageEditInfo(int p)199 	void setPageEditInfo(int p) { pageEditInfo = p; }
getPageEditInfo()200 	int getPageEditInfo() { return pageEditInfo; }
201 
202 	SceneEditGame();
203 	~SceneEditGame();
204 	void load();
205 
206 	void loadObjectsPersonal ();
207 
208 	void setStatusScene(int s);
209 
210 	void addInfoTown(InformationTown it);
211 
212 	void createInfoButtons();
213 
previousElmHelp()214 	void previousElmHelp() { if (nElmHelp>=0) { setElmHelp(nElmHelp-1); } }
nextElmHelp()215 	void nextElmHelp() { if (nElmHelp<elmHelp->getFrames()-1) { setElmHelp(nElmHelp+1); } }
216 	void setElmHelp(int i);
217 
218 
219 	/*********************
220 	* BUTTONS
221 	**********************/
222 	void verifyClickElements_Main();
223 	void verifyOverElements_Main();
224 	void verifyClickElements_AddObject();
225 	void verifyOverElements_AddObject();
226 	void verifyClickElements_EditFood();
227 	void verifyOverElements_EditFood();
228 	void verifyClickElements_EditInfo();
229 	void verifyOverElements_EditInfo();
230 	void verifyClickElements_AddInfoTown();
231 	void verifyOverElements_AddInfoTown();
232 	void verifyClickElements_Clean();
233 	void verifyOverElements_Clean();
234 	void verifyClickElements_Help();
235 	void verifyOverElements_Help();
236 	/*********************
237 	* ESCENES
238 	**********************/
239 	bool drawScene ();
240 
241 	void drawSceneMain ();
242 	void drawSceneMainByIndexZ(int z);
243 
244 	void drawSceneAddObject ();
245 	void drawSceneAddObjectByIndexZ(int z);
246 
247 	void drawSceneEditFood ();
248 	void drawSceneEditFoodByIndexZ(int z);
249 
250 	void drawSceneEditInfo ();
251 	void drawSceneEditInfoByIndexZ(int z);
252 
253 	void drawSceneAddInfoTown ();
254 	void drawSceneAddInfoTownByIndexZ(int z);
255 
256 	void drawSceneClean ();
257 	void drawSceneCleanByIndexZ(int z);
258 
259 	void drawSceneHelp ();
260 	void drawSceneHelpByIndexZ(int z);
261 
262 	/*********************
263 	* CONTROL
264 	**********************/
265 	void unLoad();
266 };
267 
268 
269 
270 #endif /* SCENEEDITGAME_H_ */
271