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 #include "scene_editgame.h"
31 
32 class SceneEditGame;
33 
typeBoard_SceneEditGame_OnClick(Scene * s,SelectButton * b)34 void typeBoard_SceneEditGame_OnClick (Scene *s, SelectButton *b) {
35 	SceneEditGame* se = (SceneEditGame*)s;
36 	EditBoard::GetInstance()->setTypeSize(se->typeBoard->getIndex());
37 }
38 
typeFloor_SceneEditGame_OnClick(Scene * s,SelectButton * b)39 void typeFloor_SceneEditGame_OnClick (Scene *s, SelectButton *b) {
40 	SceneEditGame* se = (SceneEditGame*)s;
41 	EditBoard::GetInstance()->setTypeFloor(se->typeFloor->getIndex());
42 }
43 
typePavement_SceneEditGame_OnClick(Scene * s,SelectButton * b)44 void typePavement_SceneEditGame_OnClick (Scene *s, SelectButton *b) {
45 	SceneEditGame* se = (SceneEditGame*)s;
46 	EditBoard::GetInstance()->setTypePavement(se->typePavement->getIndex());
47 }
48 
typeTiled_SceneEditGame_OnClick(Scene * s,SelectButton * b)49 void typeTiled_SceneEditGame_OnClick (Scene *s, SelectButton *b) {
50 	SceneEditGame* se = (SceneEditGame*)s;
51 	EditBoard::GetInstance()->getScenary()->setTypeTiled(se->typeTiled->getIndex());
52 }
53 
typeWall_SceneEditGame_OnClick(Scene * s,SelectButton * b)54 void typeWall_SceneEditGame_OnClick (Scene *s, SelectButton *b) {
55 	SceneEditGame* se = (SceneEditGame*)s;
56 	EditBoard::GetInstance()->setTypeWall(se->typeWall->getIndex());
57 }
58 
nTilesClosed_SceneEditGame_OnClick(Scene * s,SelectButton * b)59 void nTilesClosed_SceneEditGame_OnClick (Scene *s, SelectButton *b) {
60 	SceneEditGame* se = (SceneEditGame*)s;
61 	EditBoard::GetInstance()->getScenary()->setNVerticalTiles(se->nTilesClosed->getIndex());
62 }
63 
typeTerrain_SceneEditGame_OnClick(Scene * s,SelectButton * b)64 void typeTerrain_SceneEditGame_OnClick (Scene *s, SelectButton *b) {
65 	SceneEditGame* se = (SceneEditGame*)s;
66 	EditBoard::GetInstance()->getScenary()->setTypeTerrain(se->typeTerrain->getIndex());
67 }
68 
typeWallScenary_SceneEditGame_OnClick(Scene * s,SelectButton * b)69 void typeWallScenary_SceneEditGame_OnClick (Scene *s, SelectButton *b) {
70 	SceneEditGame* se = (SceneEditGame*)s;
71 	EditBoard::GetInstance()->getScenary()->setTypeWall(se->typeWallScenary->getIndex());
72 }
73 
colorWall_SceneEditGame_OnClick(Scene * s,SelectButton * b)74 void colorWall_SceneEditGame_OnClick (Scene *s, SelectButton *b) {
75 	SceneEditGame* se = (SceneEditGame*)s;
76 	int ind = se->colorWall->getIndex();
77 	int red = se->vcolorsWall->getColor(ind)->r;
78 	int green = se->vcolorsWall->getColor(ind)->g;
79 	int blue = se->vcolorsWall->getColor(ind)->b;
80 	EditBoard::GetInstance()->getScenary()->setColorInWalls(red, green, blue);
81 }
82 
bRules_SceneEditGame_OnClick(Scene * s,Button * b)83 void bRules_SceneEditGame_OnClick (Scene *s, Button *b) {
84 	EditBoard::GetInstance()->getScenary()->swapShowGuides();
85 }
86 
bAddObject_SceneEditGame_OnClick(Scene * s,Button * b)87 void bAddObject_SceneEditGame_OnClick (Scene *s, Button *b) {
88 	SceneEditGame* se = (SceneEditGame*)s;
89 	se->setSaveImage(true);
90 	se->setStatusScene(SCENE_EDITGAME_ADDOBJECT);
91 }
92 
insertObjectsGame_SceneEditGame_OnClick(Scene * s,Button * b)93 void insertObjectsGame_SceneEditGame_OnClick (Scene *s, Button *b) {
94 	SceneEditGame* se = (SceneEditGame*)s;
95 	EditBoard::GetInstance()->getScenary()->addObject(TYPEOBJECT_3D, ORIGENOBJECT_GAME, b->getParameter("name"));
96 	se->setStatusScene(SCENE_EDITGAME_MAIN);
97 }
98 
insertObjectsPersonal_SceneEditGame_OnClick(Scene * s,Button * b)99 void insertObjectsPersonal_SceneEditGame_OnClick (Scene *s, Button *b) {
100 	SceneEditGame* se = (SceneEditGame*)s;
101 	int tObj = TYPEOBJECT_3D;
102 	if (EditBoard::GetInstance()->getSceneEditGame()->rad2d->getActive()) {
103 		tObj = TYPEOBJECT_2D;
104 	}
105 
106 	EditBoard::GetInstance()->getScenary()->addObject(tObj, ORIGENOBJECT_PERSONAL, b->getParameter("name"));
107 	se->setStatusScene(SCENE_EDITGAME_MAIN);
108 }
109 
bInsertText_SceneGame_OnClick(Scene * s,Button * b)110 void bInsertText_SceneGame_OnClick (Scene *s, Button *b) {
111 	SceneEditGame* se = (SceneEditGame*)s;
112 	string font = "";
113 	int align = ALIGN_LEFT;
114 	char tmp[32];
115 	sprintf(tmp, "font-wall%d", EditBoard::GetInstance()->getSceneEditGame()->typeTextsInWall->getIndex());
116 	font = tmp;
117 	if (EditBoard::GetInstance()->getSceneEditGame()->radAlignLeftText->getActive()) {
118 		align = ALIGN_LEFT;
119 	} else if (EditBoard::GetInstance()->getSceneEditGame()->radAlignCenterText->getActive()) {
120 		align = ALIGN_CENTER;
121 	} else if (EditBoard::GetInstance()->getSceneEditGame()->radAlignRightText->getActive()) {
122 		align = ALIGN_RIGHT;
123 	}
124 	Color c;
125 	int ind = se->colorTextsInWall->getIndex();
126 	c.r = se->vcolorsTextInWall->getColor(ind)->r;
127 	c.g = se->vcolorsTextInWall->getColor(ind)->g;
128 	c.b = se->vcolorsTextInWall->getColor(ind)->b;
129 	EditBoard::GetInstance()->getScenary()->addTextObject(EditBoard::GetInstance()->getSceneEditGame()->taText->getText(), font, align, c, 10, 10, 1.0, false, false);
130 	se->setStatusScene(SCENE_EDITGAME_MAIN);
131 }
132 
bObjectsGame_SceneEditGame_OnClick(Scene * s,Button * b)133 void bObjectsGame_SceneEditGame_OnClick (Scene *s, Button *b) {
134 	SceneEditGame* se = (SceneEditGame*)s;
135 	se->bObjectsGame->setIndexZ(2);
136 	se->bObjectsGame->setRGB(255,255,255);
137 	se->bObjectsPersonal->setIndexZ(0);
138 	se->bObjectsPersonal->setRGB(160,160,160);
139 	se->bObjectsTexts->setIndexZ(0);
140 	se->bObjectsTexts->setRGB(160,160,160);
141 	se->setPageAddObject(SCENE_EDITGAME_ADDOBJECT_GAME);
142 }
143 
bObjectsPersonal_SceneEditGame_OnClick(Scene * s,Button * b)144 void bObjectsPersonal_SceneEditGame_OnClick (Scene *s, Button *b) {
145 	SceneEditGame* se = (SceneEditGame*)s;
146 	se->bObjectsPersonal->setIndexZ(2);
147 	se->bObjectsPersonal->setRGB(255,255,255);
148 	se->bObjectsGame->setIndexZ(0);
149 	se->bObjectsGame->setRGB(160,160,160);
150 	se->bObjectsTexts->setIndexZ(0);
151 	se->bObjectsTexts->setRGB(160,160,160);
152 	se->setPageAddObject(SCENE_EDITGAME_ADDOBJECT_PERSONAL);
153 }
154 
bObjectsTexts_SceneEditGame_OnClick(Scene * s,Button * b)155 void bObjectsTexts_SceneEditGame_OnClick (Scene *s, Button *b) {
156 	SceneEditGame* se = (SceneEditGame*)s;
157 	se->bObjectsTexts->setIndexZ(2);
158 	se->bObjectsTexts->setRGB(255,255,255);
159 	se->bObjectsPersonal->setIndexZ(0);
160 	se->bObjectsPersonal->setRGB(160,160,160);
161 	se->bObjectsGame->setIndexZ(0);
162 	se->bObjectsGame->setRGB(160,160,160);
163 	se->setPageAddObject(SCENE_EDITGAME_ADDOBJECT_TEXT);
164 }
165 
bInfoMain_SceneEditGame_OnClick(Scene * s,Button * b)166 void bInfoMain_SceneEditGame_OnClick (Scene *s, Button *b) {
167 	SceneEditGame* se = (SceneEditGame*)s;
168 	se->bInfoMain->setIndexZ(2);
169 	se->bInfoMain->setRGB(255,255,255);
170 	se->bInfoData->setIndexZ(0);
171 	se->bInfoData->setRGB(160,160,160);
172 	se->bInfoMusic->setIndexZ(0);
173 	se->bInfoMusic->setRGB(160,160,160);
174 	se->setPageEditInfo(SCENE_EDITGAME_EDITINFO_MAIN);
175 }
176 
bInfoData_SceneEditGame_OnClick(Scene * s,Button * b)177 void bInfoData_SceneEditGame_OnClick (Scene *s, Button *b) {
178 	SceneEditGame* se = (SceneEditGame*)s;
179 	se->bInfoMain->setIndexZ(0);
180 	se->bInfoMain->setRGB(160,160,160);
181 	se->bInfoData->setIndexZ(2);
182 	se->bInfoData->setRGB(255,255,255);
183 	se->bInfoMusic->setIndexZ(0);
184 	se->bInfoMusic->setRGB(160,160,160);
185 	se->setPageEditInfo(SCENE_EDITGAME_EDITINFO_DATA);
186 }
187 
bInfoMusic_SceneEditGame_OnClick(Scene * s,Button * b)188 void bInfoMusic_SceneEditGame_OnClick (Scene *s, Button *b) {
189 	SceneEditGame* se = (SceneEditGame*)s;
190 	se->bInfoMain->setIndexZ(0);
191 	se->bInfoMain->setRGB(160,160,160);
192 	se->bInfoData->setIndexZ(0);
193 	se->bInfoData->setRGB(160,160,160);
194 	se->bInfoMusic->setIndexZ(2);
195 	se->bInfoMusic->setRGB(255,255,255);
196 	se->setPageEditInfo(SCENE_EDITGAME_EDITINFO_MUSIC);
197 }
198 
bSave_SceneEditGame_OnClick(Scene * s,Button * b)199 void bSave_SceneEditGame_OnClick (Scene *s, Button *b) {
200 	SceneEditGame* se = (SceneEditGame*)s;
201 
202 	if (EditBoard::GetInstance()->save()) {
203         se->showMessageBox(Language::GetInstance()->getText("info"), Language::GetInstance()->getText("savefilesuccessful"), SCENE_EDITGAME_MAIN);
204     }
205 }
206 
bClean_SceneEditGame_OnClick(Scene * s,Button * b)207 void bClean_SceneEditGame_OnClick (Scene *s, Button *b) {
208 	SceneEditGame* se = (SceneEditGame*)s;
209 	se->setSaveImage(true);
210 	se->setStatusScene(SCENE_EDITGAME_CLEAN);
211 }
212 
bCleanBoard_SceneEditGame_OnClick(Scene * s,Button * b)213 void bCleanBoard_SceneEditGame_OnClick (Scene *s, Button *b) {
214 	SceneEditGame* se = (SceneEditGame*)s;
215 	EditBoard::GetInstance()->cleanWalls();
216 	se->setStatusScene(SCENE_EDITGAME_MAIN);
217 }
218 
bCleanScenary_SceneEditGame_OnClick(Scene * s,Button * b)219 void bCleanScenary_SceneEditGame_OnClick (Scene *s, Button *b) {
220 	SceneEditGame* se = (SceneEditGame*)s;
221 	EditBoard::GetInstance()->cleanScenary();
222 	se->setStatusScene(SCENE_EDITGAME_MAIN);
223 }
224 
bCleanReset_SceneEditGame_OnClick(Scene * s,Button * b)225 void bCleanReset_SceneEditGame_OnClick (Scene *s, Button *b) {
226 	SceneEditGame* se = (SceneEditGame*)s;
227 	EditBoard::GetInstance()->loadLevel();
228 	se->setStatusScene(SCENE_EDITGAME_MAIN);
229 }
230 
bHelp_SceneEditGame_OnClick(Scene * s,Button * b)231 void bHelp_SceneEditGame_OnClick (Scene *s, Button *b) {
232 	SceneEditGame* se = (SceneEditGame*)s;
233 	se->setSaveImage(true);
234 	se->setStatusScene(SCENE_EDITGAME_HELP);
235 }
236 
alert_bQuit_SceneEditGame_OnClick(Scene * s,Button * b,string data)237 void alert_bQuit_SceneEditGame_OnClick (Scene *s, Button *b, string data) {
238 	SceneEditGame* se = (SceneEditGame*)s;
239 	if (b->getParameter("type")=="accept") {
240 		Sounds::GetInstance()->getSound("music_editor")->stop(2000);
241 		se->goToScene("createmission", 2000, SCENE_TRANSITION_FADEOUT);
242 	} else {
243 		se->setStatusSceneWithReturnSceneFromMessage();
244 	}
245 }
246 
bQuit_SceneEditGame_OnClick(Scene * s,Button * b)247 void bQuit_SceneEditGame_OnClick (Scene *s, Button *b) {
248 	SceneEditGame* se = (SceneEditGame*)s;
249 	se->showAlert(Language::GetInstance()->getText("info"), Language::GetInstance()->getText("areyousurequit"), alert_bQuit_SceneEditGame_OnClick, SCENE_EDITGAME_MAIN);
250 }
251 
btHandTray_SceneEditGame_OnClick(Scene * s,Button * b)252 void btHandTray_SceneEditGame_OnClick (Scene *s, Button *b) {
253 	SceneEditGame* se = (SceneEditGame*)s;
254 	se->titleFood->setText(EditBoard::GetInstance()->infoTray[0].title);
255 	se->textFood->setText(EditBoard::GetInstance()->infoTray[0].text);
256 	if (WorkingData::GetInstance()->existFile(Missions::GetInstance()->currentLevel->getPath()+"/food.png")) {
257 		SDL_Surface *sfc = WorkingSurfaces::GetInstance()->surfaceFromImage(Missions::GetInstance()->currentLevel->getPath()+"/food.png");
258 		if ( (sfc->h>200) || (sfc->w>200) ) {
259 			se->infoImageFood->setRGB(255, 0, 0);
260 			se->infoImageFood->changeFrameLanguage(0, "font-texts", "nosizefood-png", ALIGN_CENTER);
261 		} else {
262 			se->infoImageFood->setRGB(255, 255, 255);
263 			se->infoImageFood->changeFrameFile(0, Missions::GetInstance()->currentLevel->getPath()+"/food.png");
264 		}
265 		SDL_FreeSurface(sfc);
266 	} else {
267 		se->infoImageFood->setRGB(255, 0, 0);
268 		string text = Language::GetInstance()->getText("nofood-png") + "|" + Missions::GetInstance()->currentLevel->getPath();
269 		se->infoImageFood->changeFrameText(0, "font-texts", text, ALIGN_CENTER);
270 	}
271 	se->setSaveImage(true);
272 	se->setStatusScene(SCENE_EDITGAME_EDITFOOD);
273 }
274 
bAccept_SceneEditGame_OnClick(Scene * s,Button * b)275 void bAccept_SceneEditGame_OnClick (Scene *s, Button *b) {
276 	SceneEditGame* se = (SceneEditGame*)s;
277 	if (se->getStatusScene()==SCENE_EDITGAME_EDITFOOD) {
278 		EditBoard::GetInstance()->infoTray[0].title = se->titleFood->getText();
279 		EditBoard::GetInstance()->infoTray[0].text = se->textFood->getText();
280 		se->setStatusScene(SCENE_EDITGAME_MAIN);
281     } else if (se->getStatusScene()==SCENE_EDITGAME_EDITINFO) {
282 		Missions::GetInstance()->currentMission->setName(se->missionName->getText());
283 		Missions::GetInstance()->currentMission->setNameAuthor(se->nameAuthor->getText());
284 		Missions::GetInstance()->currentMission->save();
285 		EditBoard::GetInstance()->town.name = se->levelName->getText();
286 		EditBoard::GetInstance()->town.province = se->provinceName->getText();
287 		if (se->radMusic0->getActive()) {
288 			EditBoard::GetInstance()->setTypeMusic(0);
289 		} else if (se->radMusic1->getActive()) {
290 			EditBoard::GetInstance()->setTypeMusic(1);
291 		} else if (se->radMusic2->getActive()) {
292 			EditBoard::GetInstance()->setTypeMusic(2);
293 		} else if (se->radMusic3->getActive()) {
294 			EditBoard::GetInstance()->setTypeMusic(3);
295 		}
296 
297 		se->setStatusScene(SCENE_EDITGAME_MAIN);
298     } else if (se->getStatusScene()==SCENE_EDITGAME_ADDINFOTOWN) {
299 		if (se->indexEditInfoTown<0) {
300 			InformationTown it;
301 			it.title = se->eTitleInfoTown->getText();
302 			it.text = se->taInfoTown->getText();
303 			char tmp[4];
304 			sprintf(tmp, "%d", se->typeButtonInfoTown->getIndex());
305 			it.button = tmp;
306 			EditBoard::GetInstance()->getSceneEditGame()->addInfoTown(it);
307 		} else {
308 			EditBoard::GetInstance()->infoTown[se->indexEditInfoTown].title = se->eTitleInfoTown->getText();
309 			EditBoard::GetInstance()->infoTown[se->indexEditInfoTown].text = se->taInfoTown->getText();
310 			char tmp[4];
311 			sprintf(tmp, "%d", se->typeButtonInfoTown->getIndex());
312 			EditBoard::GetInstance()->infoTown[se->indexEditInfoTown].button = tmp;
313 			((InfoButton*)se->dataInfo->getData(se->indexEditInfoTown))->setTitle(se->eTitleInfoTown->getText());
314 		}
315 		se->setStatusScene(SCENE_EDITGAME_EDITINFO);
316     }
317 }
318 
bCancel_SceneEditGame_OnClick(Scene * s,Button * b)319 void bCancel_SceneEditGame_OnClick (Scene *s, Button *b) {
320 	SceneEditGame* se = (SceneEditGame*)s;
321 	if (se->getStatusScene()==SCENE_EDITGAME_ADDINFOTOWN) {
322     	se->setStatusScene(SCENE_EDITGAME_EDITINFO);
323 	} else {
324 		se->setStatusScene(SCENE_EDITGAME_MAIN);
325 	}
326 }
327 
bEditInfo_SceneEditGame_OnClick(Scene * s,Button * b)328 void bEditInfo_SceneEditGame_OnClick (Scene *s, Button *b) {
329 	SceneEditGame* se = (SceneEditGame*)s;
330 	se->setSaveImage(true);
331     se->missionName->setActive(true);
332     se->missionName->setText(Missions::GetInstance()->currentMission->getName());
333     se->nameAuthor->setText(Missions::GetInstance()->currentMission->getNameAuthor());
334     se->levelName->setText(EditBoard::GetInstance()->town.name);
335     se->provinceName->setText(EditBoard::GetInstance()->town.province);
336 	se->setStatusScene(SCENE_EDITGAME_EDITINFO);
337 }
338 
bAddInfo_SceneEditGame_OnClick(Scene * s,Button * b)339 void bAddInfo_SceneEditGame_OnClick (Scene *s, Button *b) {
340 	SceneEditGame* se = (SceneEditGame*)s;
341 	se->setSaveImage(true, 1);
342 	if ((int)EditBoard::GetInstance()->infoTown.size()>=4) {
343         se->showMessageBox(Language::GetInstance()->getText("info"), Language::GetInstance()->getText("nomoredata"), SCENE_EDITGAME_EDITINFO);
344     } else {
345     	se->indexEditInfoTown = -1;
346     	se->typeButtonInfoTown->setFrame(0);
347     	se->eTitleInfoTown->setText("");
348     	se->taInfoTown->setText("");
349 	    se->eTitleInfoTown->setActive(true);
350     	se->setStatusScene(SCENE_EDITGAME_ADDINFOTOWN);
351     }
352 }
353 
bEditInfoButton_SceneEditGame_OnClick(Scene * s,Button * b)354 void bEditInfoButton_SceneEditGame_OnClick (Scene *s, Button *b) {
355 	SceneEditGame* se = (SceneEditGame*)s;
356 	se->setSaveImage(true, 1);
357 	se->indexEditInfoTown = atoi(b->getParameter("index").c_str());
358 	se->typeButtonInfoTown->setFrame(atoi(EditBoard::GetInstance()->infoTown[se->indexEditInfoTown].button.c_str()));
359 	se->eTitleInfoTown->setText(EditBoard::GetInstance()->infoTown[se->indexEditInfoTown].title);
360 	se->taInfoTown->setText(EditBoard::GetInstance()->infoTown[se->indexEditInfoTown].text);
361 	se->eTitleInfoTown->setActive(true);
362 	se->setStatusScene(SCENE_EDITGAME_ADDINFOTOWN);
363 }
364 
alert_bDeleteInfoButton_SceneEditGame_OnClick(Scene * s,Button * b,string data)365 void alert_bDeleteInfoButton_SceneEditGame_OnClick (Scene *s, Button *b, string data) {
366 	SceneEditGame* se = (SceneEditGame*)s;
367 	if (b->getParameter("type")=="accept") {
368 		int i = atoi(b->getParameter("index").c_str());
369 		EditBoard::GetInstance()->infoTown.erase(EditBoard::GetInstance()->infoTown.begin()+i);
370 		se->createInfoButtons();
371 	}
372 	se->setStatusSceneWithReturnSceneFromMessage();
373 }
374 
bDeleteInfoButton_SceneEditGame_OnClick(Scene * s,Button * b)375 void bDeleteInfoButton_SceneEditGame_OnClick (Scene *s, Button *b) {
376 	SceneEditGame* se = (SceneEditGame*)s;
377 	se->msg_bAccept->addParameter("index", b->getParameter("index"));
378 	se->showAlert(Language::GetInstance()->getText("info"), Language::GetInstance()->getText("areyousuredelete"), alert_bDeleteInfoButton_SceneEditGame_OnClick, SCENE_EDITGAME_EDITINFO);
379 }
380 
bViewHelp_SceneEditGame_OnClick(Scene * s,Button * b)381 void bViewHelp_SceneEditGame_OnClick (Scene *s, Button *b) {
382 	SceneEditGame* se = (SceneEditGame*)s;
383 	se->setElmHelp(atoi(b->getParameter("index_help").c_str()));
384 }
385 
bIndex_SceneEditGame_OnClick(Scene * s,Button * b)386 void bIndex_SceneEditGame_OnClick (Scene *s, Button *b) {
387 	SceneEditGame* se = (SceneEditGame*)s;
388 	se->setElmHelp(-1);
389 }
390 
bPrevious_SceneEditGame_OnClick(Scene * s,Button * b)391 void bPrevious_SceneEditGame_OnClick (Scene *s, Button *b) {
392 	SceneEditGame* se = (SceneEditGame*)s;
393 	se->previousElmHelp();
394 }
395 
bNext_SceneEditGame_OnClick(Scene * s,Button * b)396 void bNext_SceneEditGame_OnClick (Scene *s, Button *b) {
397 	SceneEditGame* se = (SceneEditGame*)s;
398 	se->nextElmHelp();
399 }
400 
401 /*****************************
402 **
403 ** CLASE InfoButton
404 **
405 ******************************/
406 
InfoButton()407 InfoButton::InfoButton() : Group () {
408 
409 	indexz = 0;
410 
411 	bg = new Element();
412 	bg->setX(0);
413 	bg->setY(0);
414 	bg->addFrameFileFromData("/interface/boxuser_text.png");
415 	this->addElement(bg);
416 
417 	title = new Element();
418 	title->setX(15);
419 	title->setY(22);
420 	title->setVAlign(VALIGN_CENTER);
421 	title->addFrameSurface(Primitives::GetInstance()->rectangle(1, 1, 0, 0, 0));
422 	this->addElement(title);
423 
424 	bEdit = new Button();
425 	bEdit->setScales(0.9, 0.95);
426 	bEdit->setAlign(ALIGN_CENTER);
427 	bEdit->setVAlign(VALIGN_CENTER);
428 	bEdit->setX(350);
429 	bEdit->setY(22);
430 	bEdit->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/" + Language::GetInstance()->getFilename("edit", "png")));
431 	bEdit->setAnimation("out");
432 	bEdit->OnClick = bEditInfoButton_SceneEditGame_OnClick;
433 	this->addElement(bEdit);
434 
435 	bDelete = new Button();
436 	bDelete->setScales(1.0, 1.1);
437 	bDelete->setAlign(ALIGN_CENTER);
438 	bDelete->setVAlign(VALIGN_CENTER);
439 	bDelete->setX(420);
440 	bDelete->setY(22);
441 	bDelete->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/delete.png"));
442 	bDelete->setAnimation("out");
443 	bDelete->OnClick = bDeleteInfoButton_SceneEditGame_OnClick;
444 	this->addElement(bDelete);
445 
446 }
447 
~InfoButton()448 InfoButton::~InfoButton() {
449 	unLoad();
450 }
451 
setIndex(int i)452 void InfoButton::setIndex (int i) {
453 	index = i;
454 	char tmp[4];
455 	sprintf(tmp, "%d", i);
456 	bEdit->addParameter("index", tmp);
457 	bDelete->addParameter("index", tmp);
458 }
459 
setTitle(string t)460 void InfoButton::setTitle(string t) {
461 
462 	title->changeFrameText(0, "font-texts", t, ALIGN_CENTER);
463 
464 }
465 
draw()466 void InfoButton::draw() {
467 	work();
468 	bg->draw();
469 	title->draw();
470 	bEdit->draw();
471 	bDelete->draw();
472 }
473 
onOver()474 void InfoButton::onOver() {
475 	bEdit->onOver();
476 	bDelete->onOver();
477 }
478 
verifyClick(SceneEditGame * sc)479 void InfoButton::verifyClick(SceneEditGame *sc) {
480 	if (bEdit->isOnMouseOver()) {
481 		bEdit->OnClick(sc, bEdit);
482 	}
483 	if (bDelete->isOnMouseOver()) {
484 		bDelete->OnClick(sc, bDelete);
485 	}
486 }
487 
unLoad()488 void InfoButton::unLoad() {
489 	bg->unLoad();
490 	title->unLoad();
491 	bEdit->unLoad();
492 	bDelete->unLoad();
493 }
494 
495 
496 
497 /*****************************
498 **
499 ** CLASE SceneEditGame
500 **
501 ******************************/
502 
SceneEditGame()503 SceneEditGame::SceneEditGame() : Scene () {
504 	statusScene = SCENE_EDITGAME_MAIN;
505 	pageAddObject = SCENE_EDITGAME_ADDOBJECT_GAME;
506 	pageEditInfo = SCENE_EDITGAME_EDITINFO_MAIN;
507 	indexEditInfoTown = -1;
508 	nElmHelp = -1;
509 }
510 
~SceneEditGame()511 SceneEditGame::~SceneEditGame() {
512 	unLoad();
513 }
514 
addInfoTown(InformationTown it)515 void SceneEditGame::addInfoTown(InformationTown it) {
516 	EditBoard::GetInstance()->infoTown.push_back(it);
517 	if (!EditBoard::GetInstance()->multiLanguage) {
518 		int index = (int)EditBoard::GetInstance()->infoTown.size()-1;
519 		InfoButton *bInfoButton = new InfoButton();
520 		bInfoButton->setIndex(index);
521 
522 		bInfoButton->setTitle(EditBoard::GetInstance()->infoTown[index].title);
523 
524 		getGroupScene()->addGroup((Group*)bInfoButton);
525 
526 		dataInfo->add(bInfoButton);
527 	}
528 }
529 
createInfoButtons()530 void SceneEditGame::createInfoButtons() {
531 
532 	if (!EditBoard::GetInstance()->multiLanguage) {
533 		dataInfo->MoveFirst();
534 		while (!dataInfo->isEOF()) {
535 			delete (InfoButton*)dataInfo->getData();
536 			dataInfo->MoveNext();
537 		}
538 		dataInfo->inicialize();
539 
540 
541 		for (int i=0; i<(int)EditBoard::GetInstance()->infoTown.size(); i++) {
542 			int index = (int)EditBoard::GetInstance()->infoTown.size()-1;
543 			InfoButton *bInfoButton = new InfoButton();
544 			bInfoButton->setIndex(index);
545 
546 			bInfoButton->setTitle(EditBoard::GetInstance()->infoTown[index].title);
547 
548 			getGroupScene()->addGroup((Group*)bInfoButton);
549 
550 			dataInfo->add(bInfoButton);
551 		}
552 	}
553 }
554 
setTextDisplay(int i)555 void SceneEditGame::setTextDisplay(int i) {
556 	if (i<0) {
557 		menuTown->show();
558 		menuText->hide();
559 	} else {
560 		menuText->setCurrentFrame(i);
561 		menuTown->hide();
562 		menuText->show();
563 	}
564 }
565 
setElmHelp(int i)566 void SceneEditGame::setElmHelp(int i) {
567 	nElmHelp = i;
568 	if (nElmHelp>=0) {
569 		elmHelp->setCurrentFrame(i);
570 	}
571 
572 	if (nElmHelp<=-1) {
573 		bPrevious->setRGB(190, 190, 190);
574 		bPrevious->setSensitive(false);
575 	} else {
576 		bPrevious->setRGB(0, 255, 0);
577 		bPrevious->setSensitive(true);
578 	}
579 
580 	if (nElmHelp>=elmHelp->getFrames()-1) {
581 		bNext->setRGB(190, 190, 190);
582 		bNext->setSensitive(false);
583 	} else {
584 		bNext->setRGB(0, 255, 0);
585 		bNext->setSensitive(true);
586 	}
587 
588 }
589 
setStatusScene(int s)590 void SceneEditGame::setStatusScene(int s) {
591      statusScene = s;
592      switch(statusScene) {
593         case SCENE_EDITGAME_EDITFOOD:
594 		case SCENE_EDITGAME_EDITINFO:
595 			bAccept->setY(487);
596 			bCancel->setX(505);
597 			bCancel->setY(487);
598         break;
599 		case SCENE_EDITGAME_CLEAN:
600 			bAccept->setY(430);
601 			bCancel->setX(505);
602 			bCancel->setY(430);
603 		break;
604 		case SCENE_EDITGAME_HELP:
605 			bCancel->setX(691);
606 			bCancel->setY(487);
607 		break;
608 	}
609 }
610 
load()611 void SceneEditGame::load() {
612 
613 	initialize();
614 
615 	statusScene = SCENE_EDITGAME_MAIN;
616 	pageAddObject = SCENE_EDITGAME_ADDOBJECT_GAME;
617 	pageEditInfo = SCENE_EDITGAME_EDITINFO_MAIN;
618 
619 	vcolorsWall = new VectorColors();
620 	vcolorsWall->addColor(255, 255, 255);
621 	vcolorsWall->addColor(244, 244, 212);
622 	vcolorsWall->addColor(244, 239, 181);
623 	vcolorsWall->addColor(255, 222, 254);
624 	vcolorsWall->addColor(141, 195, 146);
625 	vcolorsWall->addColor(191, 166, 193);
626 	vcolorsWall->addColor(214, 227, 224);
627 	vcolorsWall->addColor(227, 214, 221);
628 	vcolorsWall->addColor(217, 203, 184);
629 	vcolorsWall->addColor(203, 217, 184);
630 	vcolorsWall->addColor(79, 142, 84);
631 	vcolorsWall->addColor(50, 166, 151);
632 	vcolorsWall->addColor(131, 131, 150);
633 	vcolorsWall->addColor(123, 113, 5);
634 
635 	vcolorsTextInWall = new VectorColors();
636 	vcolorsTextInWall->addColor(255, 255, 255);
637 	vcolorsTextInWall->addColor(255, 0, 0);
638 	vcolorsTextInWall->addColor(129, 246, 77);
639 	vcolorsTextInWall->addColor(0, 0, 255);
640 	vcolorsTextInWall->addColor(251, 31, 176);
641 	vcolorsTextInWall->addColor(246, 232, 77);
642 	vcolorsTextInWall->addColor(246, 176, 77);
643 	vcolorsTextInWall->addColor(200, 77, 246);
644 	vcolorsTextInWall->addColor(114, 74, 52);
645 	vcolorsTextInWall->addColor(180, 180, 180);
646 	vcolorsTextInWall->addColor(120, 120, 120);
647 	vcolorsTextInWall->addColor(60, 60, 60);
648 	vcolorsTextInWall->addColor(0, 0, 0);
649 
650 	char tmp[128], tmp_on[128], tmp_off[128];
651 
652 	ProgressBar *pb = new ProgressBar(4, 200, 16, 255, 255, 255);
653 	pb->setBg((string)DATA_DIR + "/title.png");
654 	pb->setBgBar((string)DATA_DIR + "/bg_barprogress.png");
655     pb->setPositionBar(World::width/2, 300);
656 
657 	pb->setText("font-texts", Language::GetInstance()->getText("loading_buttons"));
658 	pb->draw();
659 
660 	// sounds
661 
662 	Sounds::GetInstance()->addSoundFromData("music_editor", "music", "sound/music_editor.ogg");
663 
664 	/*************
665 		RADIOS
666 	*************/
667 
668 	multiLanguageNoSupport = new Element();
669 	multiLanguageNoSupport->setCurrentScale(1.2);
670 	multiLanguageNoSupport->setAlign(ALIGN_CENTER);
671 	multiLanguageNoSupport->setVAlign(VALIGN_CENTER);
672 	multiLanguageNoSupport->setIndexZ(2);
673 	multiLanguageNoSupport->setXY(400, 200);
674 	multiLanguageNoSupport->addFrameText("font-texts", Language::GetInstance()->getText("multilanguagenosupport"), ALIGN_CENTER);
675 	getGroupScene()->addElement(multiLanguageNoSupport);
676 
677 	sprintf(tmp_on, "%s/editgame/b_on.png", DATA_DIR);
678 	sprintf(tmp_off, "%s/editgame/b_off.png", DATA_DIR);
679 
680 
681 	bNimuh = new RadioButton(NULL);
682 	bNimuh->setX(10);
683 	bNimuh->setY(370);
684 	bNimuh->addParameter("object", "nimuh");
685 
686 	sprintf(tmp, "%s/editgame/b_nimuh.png", DATA_DIR);
687 	bNimuh->imageInactive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_off), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
688 	bNimuh->imageActive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_on), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
689 
690 	getGroupScene()->addGroup(bNimuh);
691 
692 	bEnemy1 = new RadioButton(bNimuh);
693 	bEnemy1->setX(10);
694 	bEnemy1->setY(415);
695 	bEnemy1->addParameter("object", "enemy1");
696 
697 	sprintf(tmp, "%s/editgame/b_enemy1.png", DATA_DIR);
698 	bEnemy1->imageInactive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_off), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
699 	bEnemy1->imageActive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_on), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
700 
701 	getGroupScene()->addGroup(bEnemy1);
702 
703 	bEnemy2 = new RadioButton(bNimuh);
704 	bEnemy2->setX(10);
705 	bEnemy2->setY(460);
706 	bEnemy2->addParameter("object", "enemy2");
707 
708 	sprintf(tmp, "%s/editgame/b_enemy2.png", DATA_DIR);
709 	bEnemy2->imageInactive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_off), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
710 	bEnemy2->imageActive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_on), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
711 
712 	getGroupScene()->addGroup(bEnemy2);
713 
714 	bEnemy3 = new RadioButton(bNimuh);
715 	bEnemy3->setX(10);
716 	bEnemy3->setY(505);
717 	bEnemy3->addParameter("object", "enemy3");
718 
719 	sprintf(tmp, "%s/editgame/b_enemy3.png", DATA_DIR);
720 	bEnemy3->imageInactive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_off), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
721 	bEnemy3->imageActive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_on), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
722 
723 	getGroupScene()->addGroup(bEnemy3);
724 
725 	bDoor = new RadioButton(bNimuh);
726 	bDoor->setX(10);
727 	bDoor->setY(550);
728 	bDoor->addParameter("object", "door");
729 
730 	sprintf(tmp, "%s/editgame/b_door.png", DATA_DIR);
731 	bDoor->imageInactive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_off), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
732 	bDoor->imageActive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_on), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
733 
734 	getGroupScene()->addGroup(bDoor);
735 
736 	bWallRight = new RadioButton(bNimuh);
737 	bWallRight->setX(60);
738 	bWallRight->setY(415);
739 	bWallRight->addParameter("object", "wallright");
740 
741 	sprintf(tmp, "%s/editgame/b_wall_right.png", DATA_DIR);
742 	bWallRight->imageInactive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_off), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
743 	bWallRight->imageActive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_on), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
744 
745 	getGroupScene()->addGroup(bWallRight);
746 
747 	bWallBottom = new RadioButton(bNimuh);
748 	bWallBottom->setX(60);
749 	bWallBottom->setY(460);
750 	bWallBottom->addParameter("object", "wallbottom");
751 
752 	sprintf(tmp, "%s/editgame/b_wall_bottom.png", DATA_DIR);
753 	bWallBottom->imageInactive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_off), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
754 	bWallBottom->imageActive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_on), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
755 
756 	getGroupScene()->addGroup(bWallBottom);
757 
758 	bBlackHole1 = new RadioButton(bNimuh);
759 	bBlackHole1->setX(60);
760 	bBlackHole1->setY(505);
761 	bBlackHole1->addParameter("object", "blackhole1");
762 
763 	sprintf(tmp, "%s/editgame/b_blackhole1.png", DATA_DIR);
764 	bBlackHole1->imageInactive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_off), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
765 	bBlackHole1->imageActive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_on), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
766 
767 	getGroupScene()->addGroup(bBlackHole1);
768 
769 	bBlackHole2 = new RadioButton(bNimuh);
770 	bBlackHole2->setX(60);
771 	bBlackHole2->setY(550);
772 	bBlackHole2->addParameter("object", "blackhole2");
773 
774 	sprintf(tmp, "%s/editgame/b_blackhole2.png", DATA_DIR);
775 	bBlackHole2->imageInactive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_off), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
776 	bBlackHole2->imageActive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_on), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
777 
778 	getGroupScene()->addGroup(bBlackHole2);
779 
780 	bTrap = new RadioButton(bNimuh);
781 	bTrap->setX(110);
782 	bTrap->setY(460);
783 	bTrap->addParameter("object", "trap");
784 
785 	sprintf(tmp, "%s/editgame/b_trap.png", DATA_DIR);
786 	bTrap->imageInactive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_off), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
787 	bTrap->imageActive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_on), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
788 
789 	getGroupScene()->addGroup(bTrap);
790 
791 	bKey = new RadioButton(bNimuh);
792 	bKey->setX(110);
793 	bKey->setY(505);
794 	bKey->addParameter("object", "key");
795 
796 	sprintf(tmp, "%s/editgame/b_key.png", DATA_DIR);
797 	bKey->imageInactive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_off), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
798 	bKey->imageActive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_on), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
799 
800 	getGroupScene()->addGroup(bKey);
801 
802 	bDoorKey = new RadioButton(bNimuh);
803 	bDoorKey->setX(110);
804 	bDoorKey->setY(550);
805 	bDoorKey->addParameter("object", "doorkey");
806 
807 	sprintf(tmp, "%s/editgame/b_grate.png", DATA_DIR);
808 	bDoorKey->imageInactive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_off), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
809 	bDoorKey->imageActive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_on), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
810 
811 	getGroupScene()->addGroup(bDoorKey);
812 
813 	bEat = new RadioButton(bNimuh);
814 	bEat->setX(160);
815 	bEat->setY(505);
816 	bEat->addParameter("object", "tray");
817 
818 	sprintf(tmp, "%s/editgame/b_tray.png", DATA_DIR);
819 	bEat->imageInactive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_off), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
820 	bEat->imageActive(WorkingSurfaces::GetInstance()->mixSurfaces( WorkingSurfaces::GetInstance()->surfaceFromImage(tmp_on), WorkingSurfaces::GetInstance()->surfaceFromImage(tmp), NULL ));
821 
822 	getGroupScene()->addGroup(bEat);
823 
824 	bNimuh->setActive(true);
825 
826 	pb->setText("font-texts", Language::GetInstance()->getText("loading_box"));
827 	pb->draw();
828 
829 	/*************
830 		SELECTS
831 	*************/
832 
833 	typeBoard = new SelectButton();
834 	typeBoard->setX(564);
835 	typeBoard->setY(465);
836 	typeBoard->OnClick = typeBoard_SceneEditGame_OnClick;
837 	typeBoard->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/t_6x6.png"));
838 	typeBoard->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/t_7x7.png"));
839 	typeBoard->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/t_8x8.png"));
840 	typeBoard->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/t_9x9.png"));
841 	typeBoard->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/t_10x10.png"));
842 
843 	typeFloor = new SelectButton();
844 	typeFloor->setX(564);
845 	typeFloor->setY(500);
846 	typeFloor->OnClick = typeFloor_SceneEditGame_OnClick;
847 
848 	int i;
849 
850 	for (i=0; i<BoardInfo::GetInstance()->getValueToInt("NTYPES_FLOOR"); i++) {
851 		sprintf(tmp, "%s/editgame/t_floor_%s.png", DATA_DIR, Converter::GetInstance()->fillZeros(i).c_str());
852 		typeFloor->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage(tmp));
853 	}
854 
855 	typeWall = new SelectButton();
856 	typeWall->setX(564);
857 	typeWall->setY(535);
858 	typeWall->OnClick = typeWall_SceneEditGame_OnClick;
859 	for (i=0; i<BoardInfo::GetInstance()->getValueToInt("NTYPES_WALL"); i++) {
860 		sprintf(tmp, "%s/editgame/t_wall_%s.png", DATA_DIR, Converter::GetInstance()->fillZeros(i).c_str());
861 		typeWall->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage(tmp));
862 	}
863 
864 	typePavement = new SelectButton();
865 	typePavement->setMinSeparateButtons(43);
866 	typePavement->setX(564);
867 	typePavement->setY(570);
868 	typePavement->OnClick = typePavement_SceneEditGame_OnClick;
869 	for (i=0; i<BoardInfo::GetInstance()->getValueToInt("NTYPES_PAVEMENT"); i++) {
870 		sprintf(tmp, "%s/editgame/t_pavement_%s.png", DATA_DIR, Converter::GetInstance()->fillZeros(i).c_str());
871 		typePavement->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage(tmp));
872 	}
873 
874 	typeTiled = new SelectButton();
875 	typeTiled->setX(705);
876 	typeTiled->OnClick = typeTiled_SceneEditGame_OnClick;
877 
878 	for (i=0; i<BoardInfo::GetInstance()->getValueToInt("NTYPES_TILED"); i++) {
879 		sprintf(tmp, "%s/editgame/t_tiled_%s.png", DATA_DIR, Converter::GetInstance()->fillZeros(i).c_str());
880 		typeTiled->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage(tmp));
881 	}
882 
883 	nTilesClosed = new SelectButton();
884 	nTilesClosed->setMinSeparateButtons(23);
885 	nTilesClosed->setX(705);
886 	nTilesClosed->OnClick = nTilesClosed_SceneEditGame_OnClick;
887 	for (i=0; i<=7; i++) {
888 		sprintf(tmp, "%d", i);
889 		nTilesClosed->addObject(Fonts::GetInstance()->getSurface_TextBitMap("font-texts", ALIGN_CENTER, tmp));
890 	}
891 
892 	nTilesClosed->setFrame(0);
893 
894 	colorWall = new SelectButton();
895 	colorWall->setX(705);
896 	colorWall->OnClick = colorWall_SceneEditGame_OnClick;
897 
898 	for (i=0; i<vcolorsWall->count(); i++) {
899 		colorWall->addObject(Primitives::GetInstance()->rectangle(23, 23, vcolorsWall->getColor(i)->r, vcolorsWall->getColor(i)->g, vcolorsWall->getColor(i)->b));
900 	}
901 
902 	typeTerrain = new SelectButton();
903 	typeTerrain->setX(705);
904 	typeTerrain->setY(520);
905 	typeTerrain->OnClick = typeTerrain_SceneEditGame_OnClick;
906 	for (i=0; i<BoardInfo::GetInstance()->getValueToInt("NTYPES_TERRAIN"); i++) {
907 		sprintf(tmp, "%s/editgame/t_terrain_%s.png", DATA_DIR, Converter::GetInstance()->fillZeros(i).c_str());
908 		typeTerrain->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage(tmp));
909 	}
910 
911 	typeWallScenary = new SelectButton();
912 	typeWallScenary->setX(705);
913 	typeWallScenary->setY(525);
914 	typeWallScenary->OnClick = typeWallScenary_SceneEditGame_OnClick;
915 	for (i=0; i<BoardInfo::GetInstance()->getValueToInt("NTYPES_WALLSCENARY"); i++) {
916 		sprintf(tmp, "%s/editgame/t_wallscenary_%s.png", DATA_DIR, Converter::GetInstance()->fillZeros(i).c_str());
917 		typeWallScenary->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage(tmp));
918 	}
919 
920 	typeBoard->setArrows(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_left.png"), WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_right.png"));
921 	typeFloor->setArrows(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_left.png"), WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_right.png"));
922 	typePavement->setArrows(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_left.png"), WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_right.png"));
923 	colorWall->setArrows(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_left.png"), WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_right.png"));
924 	typeWall->setArrows(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_left.png"), WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_right.png"));
925 	nTilesClosed->setArrows(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_left.png"), WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_right.png"));
926 	typeTiled->setArrows(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_left.png"), WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_right.png"));
927 	typeTerrain->setArrows(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_left.png"), WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_right.png"));
928 	typeWallScenary->setArrows(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_left.png"), WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/editgame/arrow_right.png"));
929 
930 	bAddObject = new Button();
931 	bAddObject->setX(707);
932 	bAddObject->setY(545);
933 	bAddObject->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/" + Language::GetInstance()->getFilename("addobject", "png")));
934 	bAddObject->setAnimation("out");
935 	bAddObject->OnClick = bAddObject_SceneEditGame_OnClick;
936 	getGroupScene()->addElement(bAddObject);
937 
938 
939 	pb->setText("font-texts", Language::GetInstance()->getText("loading_menu"));
940 	pb->draw();
941 
942 	frameUp = new Element();
943 	frameUp->setAlign(ALIGN_CENTER);
944 	frameUp->setVAlign(VALIGN_TOP);
945 	frameUp->setXY(World::width/2, 0);
946 	frameUp->addFrameSurface(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/windows/frame_up.png"));
947 
948 	frameDown = new Element();
949 	frameDown->setAlign(ALIGN_CENTER);
950 	frameDown->setVAlign(VALIGN_BOTTOM);
951 	frameDown->setXY(World::width/2, 600);
952 	frameDown->addFrameSurface(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/windows/frame_down.png"));
953 
954 
955 	bgBox = new Element();
956 	bgBox->setIndexZ(1);
957 	bgBox->setAlign(ALIGN_CENTER);
958 	bgBox->setVAlign(VALIGN_CENTER);
959 	bgBox->setXY(World::width/2, 300);
960 	bgBox->addFrameFileFromData("/windows/bigbox.png");
961 
962 	getGroupScene()->addElement(bgBox);
963 
964 	middleBox = new Element();
965 	middleBox->setAlign(ALIGN_CENTER);
966 	middleBox->setVAlign(VALIGN_CENTER);
967 	middleBox->setXY(World::width/2, 300);
968 	middleBox->addFrameFileFromData("/windows/middlebox.png");
969 
970 	getGroupScene()->addElement(middleBox);
971 
972 	bgHelp = new Element();
973 	bgHelp->setAlign(ALIGN_CENTER);
974 	bgHelp->setVAlign(VALIGN_CENTER);
975 	bgHelp->setXY(World::width/2, 300);
976 	bgHelp->addFrameFileFromData("/help/help_bg.png");
977 
978 	getGroupScene()->addElement(bgHelp);
979 
980 	titleIndex = new Element();
981 	titleIndex->setIndexZ(2);
982 	titleIndex->setCurrentScale(0.6);
983 	titleIndex->setXY(60, 103);
984 	titleIndex->setRGB(234, 238, 53);
985 	titleIndex->addFrameLanguage("font-computer", "index", ALIGN_LEFT);
986 
987 	getGroupScene()->addElement(titleIndex);
988 
989 	bIndex = new Button();
990 	bIndex->setIndexZ(1);
991 	bIndex->setScales(0.4, 0.45);
992 	bIndex->setAlign(ALIGN_CENTER);
993 	bIndex->setVAlign(VALIGN_CENTER);
994 	bIndex->setX(115);
995 	bIndex->setY(487);
996 	bIndex->setRGB(0, 255, 0);
997 
998 	bIndex->OnClick = bIndex_SceneEditGame_OnClick;
999 
1000 	sprintf(tmp, Language::GetInstance()->getText("index").c_str());
1001 	bIndex->imageOut(Fonts::GetInstance()->getSurface_TextBitMap("font-computer", ALIGN_CENTER, tmp));
1002 	bIndex->setAnimation("out");
1003 
1004 	getGroupScene()->addElement(bIndex);
1005 
1006 	bPrevious = new Button();
1007 	bPrevious->setIndexZ(1);
1008 	bPrevious->setScales(0.4, 0.45);
1009 	bPrevious->setAlign(ALIGN_CENTER);
1010 	bPrevious->setVAlign(VALIGN_CENTER);
1011 	bPrevious->setX(337);
1012 	bPrevious->setY(487);
1013 	bPrevious->setRGB(0, 255, 0);
1014 
1015 	bPrevious->OnClick = bPrevious_SceneEditGame_OnClick;
1016 
1017 	sprintf(tmp, Language::GetInstance()->getText("previous").c_str());
1018 	bPrevious->imageOut(Fonts::GetInstance()->getSurface_TextBitMap("font-computer", ALIGN_CENTER, tmp));
1019 	bPrevious->setAnimation("out");
1020 
1021 	getGroupScene()->addElement(bPrevious);
1022 
1023 	bNext = new Button();
1024 	bNext->setIndexZ(1);
1025 	bNext->setScales(0.4, 0.45);
1026 	bNext->setAlign(ALIGN_CENTER);
1027 	bNext->setVAlign(VALIGN_CENTER);
1028 	bNext->setX(503);
1029 	bNext->setY(487);
1030 	bNext->setRGB(0, 255, 0);
1031 
1032 	bNext->OnClick = bNext_SceneEditGame_OnClick;
1033 
1034 	sprintf(tmp, Language::GetInstance()->getText("next").c_str());
1035 	bNext->imageOut(Fonts::GetInstance()->getSurface_TextBitMap("font-computer", ALIGN_CENTER, tmp));
1036 	bNext->setAnimation("out");
1037 
1038 	getGroupScene()->addElement(bNext);
1039 
1040 	bHelp1 = new Button();
1041 	bHelp1->addParameter("index_help", "0");
1042 	bHelp1->setIndexZ(2);
1043 	bHelp1->setScales(1.0, 1.05);
1044 	bHelp1->setX(100);
1045 	bHelp1->setY(150);
1046 
1047 	bHelp1->OnClick = bViewHelp_SceneEditGame_OnClick;
1048 
1049 	bHelp1->imageOut(Fonts::GetInstance()->getSurface_TextBitMap("font-texts", ALIGN_CENTER, Language::GetInstance()->getText("help_editlevel_1")));
1050 	bHelp1->setAnimation("out");
1051 
1052 	getGroupScene()->addElement(bHelp1);
1053 
1054 	bHelp2 = new Button();
1055 	bHelp2->addParameter("index_help", "1");
1056 	bHelp2->setIndexZ(2);
1057 	bHelp2->setScales(1.0, 1.05);
1058 	bHelp2->setX(100);
1059 	bHelp2->setY(185);
1060 
1061 	bHelp2->OnClick = bViewHelp_SceneEditGame_OnClick;
1062 
1063 	bHelp2->imageOut(Fonts::GetInstance()->getSurface_TextBitMap("font-texts", ALIGN_CENTER, Language::GetInstance()->getText("help_editlevel_2")));
1064 	bHelp2->setAnimation("out");
1065 
1066 	getGroupScene()->addElement(bHelp2);
1067 
1068 	bHelp3 = new Button();
1069 	bHelp3->addParameter("index_help", "2");
1070 	bHelp3->setIndexZ(2);
1071 	bHelp3->setScales(1.0, 1.05);
1072 	bHelp3->setX(100);
1073 	bHelp3->setY(220);
1074 
1075 	bHelp3->OnClick = bViewHelp_SceneEditGame_OnClick;
1076 
1077 	bHelp3->imageOut(Fonts::GetInstance()->getSurface_TextBitMap("font-texts", ALIGN_CENTER, Language::GetInstance()->getText("help_editlevel_3")));
1078 	bHelp3->setAnimation("out");
1079 
1080 	getGroupScene()->addElement(bHelp3);
1081 
1082 	bHelp4 = new Button();
1083 	bHelp4->addParameter("index_help", "3");
1084 	bHelp4->setIndexZ(2);
1085 	bHelp4->setScales(1.0, 1.05);
1086 	bHelp4->setX(100);
1087 	bHelp4->setY(255);
1088 
1089 	bHelp4->OnClick = bViewHelp_SceneEditGame_OnClick;
1090 
1091 	bHelp4->imageOut(Fonts::GetInstance()->getSurface_TextBitMap("font-texts", ALIGN_CENTER, Language::GetInstance()->getText("help_editlevel_4")));
1092 	bHelp4->setAnimation("out");
1093 
1094 	getGroupScene()->addElement(bHelp4);
1095 
1096 	bHelp5 = new Button();
1097 	bHelp5->addParameter("index_help", "4");
1098 	bHelp5->setIndexZ(2);
1099 	bHelp5->setScales(1.0, 1.05);
1100 	bHelp5->setX(100);
1101 	bHelp5->setY(290);
1102 
1103 	bHelp5->OnClick = bViewHelp_SceneEditGame_OnClick;
1104 
1105 	bHelp5->imageOut(Fonts::GetInstance()->getSurface_TextBitMap("font-texts", ALIGN_CENTER, Language::GetInstance()->getText("help_editlevel_5")));
1106 	bHelp5->setAnimation("out");
1107 
1108 	getGroupScene()->addElement(bHelp5);
1109 
1110 	bHelp6 = new Button();
1111 	bHelp6->addParameter("index_help", "5");
1112 	bHelp6->setIndexZ(2);
1113 	bHelp6->setScales(1.0, 1.05);
1114 	bHelp6->setX(100);
1115 	bHelp6->setY(325);
1116 
1117 	bHelp6->OnClick = bViewHelp_SceneEditGame_OnClick;
1118 
1119 	bHelp6->imageOut(Fonts::GetInstance()->getSurface_TextBitMap("font-texts", ALIGN_CENTER, Language::GetInstance()->getText("help_editlevel_6")));
1120 	bHelp6->setAnimation("out");
1121 
1122 	getGroupScene()->addElement(bHelp6);
1123 
1124 	bHelp7 = new Button();
1125 	bHelp7->addParameter("index_help", "6");
1126 	bHelp7->setIndexZ(2);
1127 	bHelp7->setScales(1.0, 1.05);
1128 	bHelp7->setX(100);
1129 	bHelp7->setY(360);
1130 
1131 	bHelp7->OnClick = bViewHelp_SceneEditGame_OnClick;
1132 
1133 	bHelp7->imageOut(Fonts::GetInstance()->getSurface_TextBitMap("font-texts", ALIGN_CENTER, Language::GetInstance()->getText("help_editlevel_7")));
1134 	bHelp7->setAnimation("out");
1135 
1136 	getGroupScene()->addElement(bHelp7);
1137 
1138 	bHelp8 = new Button();
1139 	bHelp8->addParameter("index_help", "8");
1140 	bHelp8->setIndexZ(2);
1141 	bHelp8->setScales(1.0, 1.05);
1142 	bHelp8->setX(100);
1143 	bHelp8->setY(395);
1144 
1145 	bHelp8->OnClick = bViewHelp_SceneEditGame_OnClick;
1146 
1147 	bHelp8->imageOut(Fonts::GetInstance()->getSurface_TextBitMap("font-texts", ALIGN_CENTER, Language::GetInstance()->getText("help_editlevel_8")));
1148 	bHelp8->setAnimation("out");
1149 
1150 	getGroupScene()->addElement(bHelp8);
1151 
1152 
1153 	elmHelp = new Element();
1154 	elmHelp->setAlign(ALIGN_CENTER);
1155 	elmHelp->setVAlign(VALIGN_CENTER);
1156 	elmHelp->setXY(World::width/2, 300);
1157 
1158 	elmHelp->addFrameSurface(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/help/" + Language::GetInstance()->getFilename("editlevel_help_1", "png")));
1159 	elmHelp->addFrameSurface(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/help/" + Language::GetInstance()->getFilename("editlevel_help_2", "png")));
1160 	elmHelp->addFrameSurface(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/help/" + Language::GetInstance()->getFilename("editlevel_help_3", "png")));
1161 	elmHelp->addFrameSurface(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/help/" + Language::GetInstance()->getFilename("editlevel_help_4", "png")));
1162 	elmHelp->addFrameSurface(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/help/" + Language::GetInstance()->getFilename("editlevel_help_5", "png")));
1163 	elmHelp->addFrameSurface(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/help/" + Language::GetInstance()->getFilename("editlevel_help_6_1", "png")));
1164 	elmHelp->addFrameSurface(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/help/" + Language::GetInstance()->getFilename("editlevel_help_6_2", "png")));
1165 	elmHelp->addFrameSurface(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/help/" + Language::GetInstance()->getFilename("editlevel_help_7", "png")));
1166 	elmHelp->addFrameSurface(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/help/" + Language::GetInstance()->getFilename("editlevel_help_8", "png")));
1167 
1168 	getGroupScene()->addElement(elmHelp);
1169 
1170 	setElmHelp(-1);
1171 
1172 	titleFood = new Entry(NULL, 450, 25, 10, 10);
1173 	titleFood->setIndexZ(2);
1174 	titleFood->setNoSigns(true);
1175 	titleFood->setMaxLetters(35);
1176 	titleFood->setFontLabel("font-texts");
1177 	titleFood->setFont("font-computer");
1178 	titleFood->setLabel(Language::GetInstance()->getText("titlefood"));
1179 	titleFood->setHorizontal(false);
1180 	titleFood->setX(World::width/2);
1181 	titleFood->setY(280);
1182 	titleFood->addFrameBoxNormal(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox.png"));
1183 	titleFood->addFrameBoxOnOver(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox_on.png"));
1184 	titleFood->addFrameBoxActived(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox_active.png"));
1185 
1186 	getGroupScene()->addElement((Element*)titleFood);
1187 
1188 	titleFood->setActive(true);
1189 
1190 	textFood = new Entry(titleFood, 450, 25, 10, 10);
1191 	textFood->setMultiline(true);
1192 	textFood->setTotalRows(3);
1193 	textFood->setIndexZ(2);
1194 	textFood->setFontLabel("font-texts");
1195 	textFood->setFont("font-computer");
1196 	textFood->setLabel(Language::GetInstance()->getText("textfood"));
1197 	textFood->setHorizontal(false);
1198 	textFood->setX(World::width/2);
1199 	textFood->setY(350);
1200 	textFood->addFrameBoxNormal(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_small_textarea.png"));
1201 	textFood->addFrameBoxOnOver(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_small_textarea_on.png"));
1202 	textFood->addFrameBoxActived(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_small_textarea_active.png"));
1203 
1204 	getGroupScene()->addElement((Element*)textFood);
1205 
1206 	infoImageFood = new Element();
1207 	infoImageFood->setIndexZ(2);
1208 	infoImageFood->setAlign(ALIGN_CENTER);
1209 	infoImageFood->setVAlign(VALIGN_CENTER);
1210 	infoImageFood->setXY(World::width/2, 170);
1211 	infoImageFood->addFrameSurface(Primitives::GetInstance()->rectangle(1,1,0,0,0));
1212 
1213 	getGroupScene()->addElement(infoImageFood);
1214 
1215 	bAccept = new Button();
1216 	bAccept->setIndexZ(1);
1217 	bAccept->setScales(0.4, 0.45);
1218 	bAccept->setAlign(ALIGN_CENTER);
1219 	bAccept->setVAlign(VALIGN_CENTER);
1220 	bAccept->setX(285);
1221 	bAccept->setY(487);
1222 	bAccept->setRGB(0, 255, 0);
1223 
1224 	bAccept->OnClick = bAccept_SceneEditGame_OnClick;
1225 
1226 	sprintf(tmp, Language::GetInstance()->getText("accept").c_str());
1227 	bAccept->imageOut(Fonts::GetInstance()->getSurface_TextBitMap("font-computer", ALIGN_CENTER, tmp));
1228 	bAccept->setAnimation("out");
1229 
1230 	getGroupScene()->addElement(bAccept);
1231 
1232 	bCancel = new Button();
1233 	bCancel->setIndexZ(1);
1234 	bCancel->setScales(0.4, 0.45);
1235 	bCancel->setAlign(ALIGN_CENTER);
1236 	bCancel->setVAlign(VALIGN_CENTER);
1237 	bCancel->setX(505);
1238 	bCancel->setY(487);
1239 	bCancel->setRGB(255, 0, 0);
1240 
1241 	bCancel->OnClick = bCancel_SceneEditGame_OnClick;
1242 
1243 	sprintf(tmp, Language::GetInstance()->getText("cancel").c_str());
1244 	bCancel->imageOut(Fonts::GetInstance()->getSurface_TextBitMap("font-computer", ALIGN_CENTER, tmp));
1245 	bCancel->setAnimation("out");
1246 
1247 	getGroupScene()->addElement(bCancel);
1248 
1249 	bCleanScenary = new Button();
1250 	bCleanScenary->setScales(1.0, 1.1);
1251 	bCleanScenary->setAlign(ALIGN_CENTER);
1252 	bCleanScenary->setVAlign(VALIGN_CENTER);
1253 	bCleanScenary->setX(400);
1254 	bCleanScenary->setY(200);
1255 
1256 	bCleanScenary->OnClick = bCleanScenary_SceneEditGame_OnClick;
1257 
1258 	bCleanScenary->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/" + Language::GetInstance()->getFilename("b_cleanscenary", "png")));
1259 	bCleanScenary->setAnimation("out");
1260 
1261 	getGroupScene()->addElement(bCleanScenary);
1262 
1263 	bCleanBoard = new Button();
1264 	bCleanBoard->setScales(1.0, 1.1);
1265 	bCleanBoard->setAlign(ALIGN_CENTER);
1266 	bCleanBoard->setVAlign(VALIGN_CENTER);
1267 	bCleanBoard->setX(400);
1268 	bCleanBoard->setY(280);
1269 
1270 	bCleanBoard->OnClick = bCleanBoard_SceneEditGame_OnClick;
1271 
1272 	bCleanBoard->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/" + Language::GetInstance()->getFilename("b_cleanboard", "png")));
1273 	bCleanBoard->setAnimation("out");
1274 
1275 	getGroupScene()->addElement(bCleanBoard);
1276 
1277 	bCleanReset = new Button();
1278 	bCleanReset->setScales(1.0, 1.1);
1279 	bCleanReset->setAlign(ALIGN_CENTER);
1280 	bCleanReset->setVAlign(VALIGN_CENTER);
1281 	bCleanReset->setX(400);
1282 	bCleanReset->setY(360);
1283 
1284 	bCleanReset->OnClick = bCleanReset_SceneEditGame_OnClick;
1285 
1286 	bCleanReset->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/" + Language::GetInstance()->getFilename("b_cleanreset", "png")));
1287 	bCleanReset->setAnimation("out");
1288 
1289 	getGroupScene()->addElement(bCleanReset);
1290 
1291 	/*************
1292 	  INFO
1293 	*************/
1294 
1295 	bInfoMain = new Button();
1296 	bInfoMain->setIndexZ(2);
1297 	bInfoMain->setScales(1.0, 1.03);
1298 	bInfoMain->setAlign(ALIGN_CENTER);
1299 	bInfoMain->setVAlign(VALIGN_CENTER);
1300 	bInfoMain->setX(230);
1301 	bInfoMain->setY(78);
1302 	bInfoMain->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/" + Language::GetInstance()->getFilename("b_info_main", "png") ));
1303 	bInfoMain->setAnimation("out");
1304 	bInfoMain->OnClick = bInfoMain_SceneEditGame_OnClick;
1305 	getGroupScene()->addElement(bInfoMain);
1306 
1307 	bInfoData = new Button();
1308 	bInfoData->setIndexZ(0);
1309 	bInfoData->setRGB(160, 160, 160);
1310 	bInfoData->setScales(1.0, 1.03);
1311 	bInfoData->setAlign(ALIGN_CENTER);
1312 	bInfoData->setVAlign(VALIGN_CENTER);
1313 	bInfoData->setX(355);
1314 	bInfoData->setY(78);
1315 	bInfoData->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/" + Language::GetInstance()->getFilename("b_info_data", "png") ));
1316 	bInfoData->setAnimation("out");
1317 	bInfoData->OnClick = bInfoData_SceneEditGame_OnClick;
1318 	getGroupScene()->addElement(bInfoData);
1319 
1320 	bInfoMusic = new Button();
1321 	bInfoMusic->setIndexZ(0);
1322 	bInfoMusic->setRGB(160, 160, 160);
1323 	bInfoMusic->setScales(1.0, 1.03);
1324 	bInfoMusic->setAlign(ALIGN_CENTER);
1325 	bInfoMusic->setVAlign(VALIGN_CENTER);
1326 	bInfoMusic->setX(480);
1327 	bInfoMusic->setY(78);
1328 	bInfoMusic->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/" + Language::GetInstance()->getFilename("b_info_music", "png") ));
1329 	bInfoMusic->setAnimation("out");
1330 	bInfoMusic->OnClick = bInfoMusic_SceneEditGame_OnClick;
1331 	getGroupScene()->addElement(bInfoMusic);
1332 
1333 	missionName = new Entry(NULL, 450, 25, 10, 10);
1334 	missionName->setNoSigns(true);
1335 	missionName->setIndexZ(1);
1336 	missionName->setMaxLetters(35);
1337 	missionName->setFontLabel("font-texts");
1338 	missionName->setFont("font-computer");
1339 	missionName->setLabel(Language::GetInstance()->getText("namemission"));
1340 	missionName->setHorizontal(false);
1341 	missionName->setX(World::width/2);
1342 	missionName->setY(150);
1343 	missionName->addFrameBoxNormal(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox.png"));
1344 	missionName->addFrameBoxOnOver(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox_on.png"));
1345 	missionName->addFrameBoxActived(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox_active.png"));
1346 
1347 	getGroupScene()->addElement((Element*)missionName);
1348 
1349 	nameAuthor = new Entry(missionName, 450, 25, 10, 10);
1350 	nameAuthor->setNoSigns(true);
1351 	nameAuthor->setIndexZ(1);
1352 	nameAuthor->setMaxLetters(35);
1353 	nameAuthor->setFontLabel("font-texts");
1354 	nameAuthor->setFont("font-computer");
1355 	nameAuthor->setLabel(Language::GetInstance()->getText("nameauthor"));
1356 	nameAuthor->setHorizontal(false);
1357 	nameAuthor->setX(World::width/2);
1358 	nameAuthor->setY(225);
1359 	nameAuthor->addFrameBoxNormal(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox.png"));
1360 	nameAuthor->addFrameBoxOnOver(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox_on.png"));
1361 	nameAuthor->addFrameBoxActived(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox_active.png"));
1362 
1363 	getGroupScene()->addElement((Element*)nameAuthor);
1364 
1365 	levelName = new Entry(missionName, 450, 25, 10, 10);
1366 	levelName->setNoSigns(true);
1367 	levelName->setIndexZ(1);
1368 	levelName->setMaxLetters(35);
1369 	levelName->setFontLabel("font-texts");
1370 	levelName->setFont("font-computer");
1371 	levelName->setLabel(Language::GetInstance()->getText("namelevel"));
1372 	levelName->setHorizontal(false);
1373 	levelName->setX(World::width/2);
1374 	levelName->setY(300);
1375 	levelName->addFrameBoxNormal(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox.png"));
1376 	levelName->addFrameBoxOnOver(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox_on.png"));
1377 	levelName->addFrameBoxActived(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox_active.png"));
1378 
1379 	getGroupScene()->addElement((Element*)levelName);
1380 
1381 	provinceName = new Entry(missionName, 450, 25, 10, 10);
1382 	provinceName->setNoSigns(true);
1383 	provinceName->setIndexZ(1);
1384 	provinceName->setMaxLetters(35);
1385 	provinceName->setFontLabel("font-texts");
1386 	provinceName->setFont("font-computer");
1387 	provinceName->setLabel(Language::GetInstance()->getText("nameprovince"));
1388 	provinceName->setHorizontal(false);
1389 	provinceName->setX(World::width/2);
1390 	provinceName->setY(375);
1391 	provinceName->addFrameBoxNormal(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox.png"));
1392 	provinceName->addFrameBoxOnOver(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox_on.png"));
1393 	provinceName->addFrameBoxActived(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox_active.png"));
1394 
1395 	getGroupScene()->addElement((Element*)provinceName);
1396 
1397 	/*********************
1398 	  INFORMATION TOWN
1399 	**********************/
1400 
1401 	noExistInfoTown = new Element();
1402 	noExistInfoTown->setCurrentScale(1.2);
1403 	noExistInfoTown->setAlign(ALIGN_CENTER);
1404 	noExistInfoTown->setVAlign(VALIGN_CENTER);
1405 	noExistInfoTown->setIndexZ(2);
1406 	noExistInfoTown->setXY(400, 230);
1407 	noExistInfoTown->addFrameText("font-texts", Language::GetInstance()->getText("noexistinfotown"), ALIGN_CENTER);
1408 	getGroupScene()->addElement(noExistInfoTown);
1409 
1410 	dataInfo = new ListView();
1411 	dataInfo->setIndexZ(2);
1412 	dataInfo->setTodoMovement(false);
1413 	dataInfo->setXY(160, 150);
1414 	dataInfo->setItemsVisible(4);
1415 	dataInfo->setSeparateGrid(60);
1416 
1417 	bAddInfo = new Button();
1418 	bAddInfo->setIndexZ(1);
1419 	bAddInfo->setScales(1.0, 1.03);
1420 	bAddInfo->setAlign(ALIGN_CENTER);
1421 	bAddInfo->setVAlign(VALIGN_CENTER);
1422 	bAddInfo->setXY(400, 420);
1423 	bAddInfo->setRGB(0, 255, 0);
1424 	bAddInfo->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/" + Language::GetInstance()->getFilename("b_addinfo", "png")));
1425 	bAddInfo->OnClick = bAddInfo_SceneEditGame_OnClick;
1426 
1427 	typeButtonInfoTown = new SelectButton();
1428 	typeButtonInfoTown->setIndexZ(1);
1429 	typeButtonInfoTown->setX(320);
1430 	typeButtonInfoTown->setY(130);
1431 
1432 	for (i=0; i<8; i++) {
1433 		sprintf(tmp, "%s/town_info/button%d_off.png", DATA_DIR, i);
1434 		typeButtonInfoTown->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage(tmp));
1435 	}
1436 
1437 	typeButtonInfoTown->setArrows(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/windows/arrow_left.png"), WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/windows/arrow_right.png"));
1438 
1439 	eTitleInfoTown = new Entry(NULL, 450, 25, 10, 10);
1440 	eTitleInfoTown->setNoSigns(true);
1441 	eTitleInfoTown->setMaxLetters(14);
1442 	eTitleInfoTown->setIndexZ(1);
1443 	eTitleInfoTown->setFontLabel("font-texts");
1444 	eTitleInfoTown->setFont("font-texts");
1445 	eTitleInfoTown->setLabel(Language::GetInstance()->getText("title"));
1446 	eTitleInfoTown->setHorizontal(false);
1447 	eTitleInfoTown->setX(World::width/2);
1448 	eTitleInfoTown->setY(190);
1449 	eTitleInfoTown->addFrameBoxNormal(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox.png"));
1450 	eTitleInfoTown->addFrameBoxOnOver(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox_on.png"));
1451 	eTitleInfoTown->addFrameBoxActived(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_textbox_active.png"));
1452 
1453 	getGroupScene()->addElement((Element*)eTitleInfoTown);
1454 
1455 	taInfoTown = new Entry(eTitleInfoTown, 440, 25, 10, 10);
1456 	taInfoTown->setMultiline(true);
1457 	taInfoTown->setTotalRows(6);
1458 	taInfoTown->setIndexZ(1);
1459 	taInfoTown->setFontLabel("font-texts");
1460 	taInfoTown->setFont("font-texts");
1461 	taInfoTown->setLabel(Language::GetInstance()->getText("text"));
1462 	taInfoTown->setHorizontal(false);
1463 	taInfoTown->setX(World::width/2);
1464 	taInfoTown->setY(265);
1465 	taInfoTown->addFrameBoxNormal(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_middle_textarea.png"));
1466 	taInfoTown->addFrameBoxOnOver(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_middle_textarea_on.png"));
1467 	taInfoTown->addFrameBoxActived(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_middle_textarea_active.png"));
1468 
1469 	getGroupScene()->addElement((Element*)taInfoTown);
1470 
1471 	eTitleInfoTown->setActive(true);
1472 
1473 	/*************
1474 	  RAD MUSIC
1475 	*************/
1476 
1477 	radMusic0 = new RadioButton(NULL, "font-texts", "Blah, blah, blah (Reggae)");
1478 	radMusic0->setIndexZ(1);
1479 	radMusic0->setX(200);
1480 	radMusic0->setY(170);
1481 
1482 	radMusic0->imageInactive( WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/rad_off.png") );
1483 	radMusic0->imageActive( WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/rad2_on.png") );
1484 
1485 	getGroupScene()->addGroup(radMusic0);
1486 
1487 	radMusic1 = new RadioButton(radMusic0, "font-texts", "Babosa cantarina (Alegre)");
1488 	radMusic1->setIndexZ(1);
1489 	radMusic1->setX(200);
1490 	radMusic1->setY(220);
1491 
1492 	radMusic1->imageInactive( WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/rad_off.png") );
1493 	radMusic1->imageActive( WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/rad2_on.png") );
1494 
1495 	getGroupScene()->addGroup(radMusic1);
1496 
1497 	radMusic2 = new RadioButton(radMusic0, "font-texts", "El tango de la pena (Tango)");
1498 	radMusic2->setIndexZ(1);
1499 	radMusic2->setX(200);
1500 	radMusic2->setY(270);
1501 
1502 	radMusic2->imageInactive( WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/rad_off.png") );
1503 	radMusic2->imageActive( WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/rad2_on.png") );
1504 
1505 	getGroupScene()->addGroup(radMusic2);
1506 
1507 	radMusic3 = new RadioButton(radMusic0, "font-texts", "Rumbum (Rumba-Jazz)");
1508 	radMusic3->setIndexZ(1);
1509 	radMusic3->setX(200);
1510 	radMusic3->setY(320);
1511 
1512 	radMusic3->imageInactive( WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/rad_off.png") );
1513 	radMusic3->imageActive( WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/rad2_on.png") );
1514 
1515 	getGroupScene()->addGroup(radMusic3);
1516 
1517 	radMusic0->setActive(true);
1518 
1519 	/*************
1520 	  HAND TRAY
1521 	*************/
1522 
1523 	handTray = new Group();
1524 	handTray->setX(0);
1525 	handTray->setY(450);
1526 
1527 	bgHandTray = new Element();
1528 	bgHandTray->addFrameFileFromData("/editgame/handtray.png");
1529 
1530 	handTray->addElement(bgHandTray);
1531 
1532 	getGroupScene()->addGroup(handTray);
1533 
1534 	btHandTray = new Button();
1535 	btHandTray->setAlign(ALIGN_CENTER);
1536 	btHandTray->setVAlign(VALIGN_CENTER);
1537 	btHandTray->setXY(76, 55);
1538 	btHandTray->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/edit_eat.png"));
1539 	btHandTray->setSensitive(false);
1540 	btHandTray->OnClick = btHandTray_SceneEditGame_OnClick;
1541 
1542 	handTray->addElement(btHandTray);
1543 
1544 	/*************
1545 		MENU
1546 	*************/
1547 
1548 	menuBg = new Element();
1549 	menuBg->setVAlign(VALIGN_BOTTOM);
1550 	menuBg->setX(0);
1551 	menuBg->setY(World::height);
1552 	menuBg->addFrameFileFromData("/editgame/menu_bg.png");
1553 	getGroupScene()->addElement(menuBg);
1554 
1555 	menu = new Group();
1556 	menu->setX(239);
1557 	menu->setY(540);
1558 
1559 	menuTown = new MarqueeElement();
1560 	menuTown->setCurrentScale(0.34);
1561 	menuTown->setAlign(ALIGN_CENTER);
1562 	menuTown->setVAlign(VALIGN_CENTER);
1563 	menuTown->setX(168);
1564 	menuTown->setY(45);
1565 	menuTown->setRGB(234, 238, 53);
1566 
1567 	menu->addElement(menuTown);
1568 	getGroupScene()->addElement(menuTown);
1569 
1570 	menuText = new Element();
1571 	menuText->setAlign(ALIGN_CENTER);
1572 	menuText->setVAlign(VALIGN_CENTER);
1573 	menuText->setX(168);
1574 	menuText->setY(45);
1575 	menuText->setCurrentScale(0.34);
1576 	menuText->hide();
1577 
1578 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menuedit"), ALIGN_CENTER);
1579 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menusave"), ALIGN_CENTER);
1580 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menuguides"), ALIGN_CENTER);
1581 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("exit"), ALIGN_CENTER);
1582 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menuaddobject"), ALIGN_CENTER);
1583 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menupersonage"), ALIGN_CENTER);
1584 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menuobject"), ALIGN_CENTER);
1585 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menueat"), ALIGN_CENTER);
1586 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menuclean"), ALIGN_CENTER);
1587 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menuhelp"), ALIGN_CENTER);
1588 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menuselecttypeboard"), ALIGN_CENTER);
1589 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menuselecttypefloor"), ALIGN_CENTER);
1590 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menuselecttypewall"), ALIGN_CENTER);
1591 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menuselecttypepavement"), ALIGN_CENTER);
1592 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menuselecttypetiled"), ALIGN_CENTER);
1593 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menuselectntilesclosed"), ALIGN_CENTER);
1594 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menuselectcolorwall"), ALIGN_CENTER);
1595 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menuselecttypeterrain"), ALIGN_CENTER);
1596 	menuText->addFrameText("font-computer", Language::GetInstance()->getText("menuselecttypewallscenary"), ALIGN_CENTER);
1597 
1598 	menu->addElement(menuText);
1599 	getGroupScene()->addElement(menuText);
1600 
1601 	setTextDisplay(-1);
1602 
1603 	bEditInfo = new Button();
1604 	bEditInfo->setSoundOn("click0");
1605 	bEditInfo->setScales(1.0, 1.05);
1606 	bEditInfo->setAlign(ALIGN_CENTER);
1607 	bEditInfo->setVAlign(VALIGN_CENTER);
1608 	bEditInfo->setX(80);
1609 	bEditInfo->setY(10);
1610 	bEditInfo->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/menuitem_editinfo.png"));
1611 	bEditInfo->setAnimation("out");
1612 	bEditInfo->OnClick = bEditInfo_SceneEditGame_OnClick;
1613 	menu->addElement(bEditInfo);
1614 	getGroupScene()->addElement(bEditInfo);
1615 
1616 	bSave = new Button();
1617 	bSave->setSoundOn("click0");
1618 	bSave->setScales(1.0, 1.05);
1619 	bSave->setAlign(ALIGN_CENTER);
1620 	bSave->setVAlign(VALIGN_CENTER);
1621 	bSave->setX(115);
1622 	bSave->setY(10);
1623 	bSave->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/menuitem_save.png"));
1624 	bSave->setAnimation("out");
1625 	bSave->OnClick = bSave_SceneEditGame_OnClick;
1626 	menu->addElement(bSave);
1627 	getGroupScene()->addElement(bSave);
1628 
1629 	bRules = new Button();
1630 	bRules->setSoundOn("click0");
1631 	bRules->setScales(1.0, 1.05);
1632 	bRules->setAlign(ALIGN_CENTER);
1633 	bRules->setVAlign(VALIGN_CENTER);
1634 	bRules->setX(150);
1635 	bRules->setY(10);
1636 	bRules->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/menuitem_rules.png"));
1637 	bRules->setAnimation("out");
1638 	bRules->OnClick = bRules_SceneEditGame_OnClick;
1639 	menu->addElement(bRules);
1640 	getGroupScene()->addElement(bRules);
1641 
1642 	bClean = new Button();
1643 	bClean->setSoundOn("click0");
1644 	bClean->setScales(1.0, 1.05);
1645 	bClean->setAlign(ALIGN_CENTER);
1646 	bClean->setVAlign(VALIGN_CENTER);
1647 	bClean->setX(185);
1648 	bClean->setY(10);
1649 	bClean->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/menuitem_clean.png"));
1650 	bClean->setAnimation("out");
1651 	bClean->OnClick = bClean_SceneEditGame_OnClick;
1652 	menu->addElement(bClean);
1653 	getGroupScene()->addElement(bClean);
1654 
1655 	bHelp = new Button();
1656 	bHelp->setSoundOn("click0");
1657 	bHelp->setScales(1.0, 1.05);
1658 	bHelp->setAlign(ALIGN_CENTER);
1659 	bHelp->setVAlign(VALIGN_CENTER);
1660 	bHelp->setX(220);
1661 	bHelp->setY(10);
1662 	bHelp->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/menuitem_help.png"));
1663 	bHelp->setAnimation("out");
1664 	bHelp->OnClick = bHelp_SceneEditGame_OnClick;
1665 	menu->addElement(bHelp);
1666 	getGroupScene()->addElement(bHelp);
1667 
1668 	bQuit = new Button();
1669 	bQuit->setSoundOn("click0");
1670 	bQuit->setScales(1.0, 1.05);
1671 	bQuit->setAlign(ALIGN_CENTER);
1672 	bQuit->setVAlign(VALIGN_CENTER);
1673 	bQuit->setX(255);
1674 	bQuit->setY(10);
1675 	bQuit->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/menuitem_quit.png"));
1676 	bQuit->setAnimation("out");
1677 	bQuit->OnClick = bQuit_SceneEditGame_OnClick;
1678 	menu->addElement(bQuit);
1679 	getGroupScene()->addElement(bQuit);
1680 
1681 	pb->setText("font-texts", Language::GetInstance()->getText("loading_level"));
1682 	pb->draw();
1683 
1684 	EditBoard::GetInstance()->setSceneEditGame(this);
1685 	EditBoard::GetInstance()->load();
1686 	EditBoard::GetInstance()->loadLevel();
1687 
1688 	if (EditBoard::GetInstance()->getScenary()->getType()==SCENARY_CLOSED) {
1689 		typeTiled->setY(435);
1690 		nTilesClosed->setY(465);
1691 		colorWall->setY(495);
1692 	} else {
1693 		typeTiled->setY(440);
1694 		nTilesClosed->setY(480);
1695 	}
1696 
1697 	getGroupScene()->addGroup(EditBoard::GetInstance());
1698 
1699 	menuTown->setText("font-computer", WorkingData::GetInstance()->getToUpper(EditBoard::GetInstance()->town.name), 17);
1700 
1701 	// group of the objects in sceneaddobject
1702 
1703 	blueLine = new Element();
1704 	blueLine->setIndexZ(1);
1705 	blueLine->setXY(70, 70);
1706 	blueLine->addFrameSurface(Primitives::GetInstance()->rectangle(660, 490, 62, 98, 140));
1707 	getGroupScene()->addElement(blueLine);
1708 
1709 	infoObjectsPersonal = new Element();
1710 	infoObjectsPersonal->setAlign(ALIGN_CENTER);
1711 	infoObjectsPersonal->setVAlign(VALIGN_BOTTOM);
1712 	infoObjectsPersonal->setIndexZ(2);
1713 	infoObjectsPersonal->setRGB(190, 195, 53);
1714 	infoObjectsPersonal->setCurrentScale(0.9);
1715 	infoObjectsPersonal->setXY(400, 550);
1716 	string text = Language::GetInstance()->getText("personalfile") + "|" + Missions::GetInstance()->currentLevel->getPath() + "/objects";
1717 	infoObjectsPersonal->addFrameText("font-texts", text, ALIGN_CENTER);
1718 	getGroupScene()->addElement(infoObjectsPersonal);
1719 
1720 	bgArrow = new Element();
1721 	bgArrow->setIndexZ(0);
1722 	bgArrow->setXY(700, 100);
1723 	bgArrow->addFrameFileFromData("/editgame/bg_arrow.png");
1724 	getGroupScene()->addElement(bgArrow);
1725 
1726 	bgButton = new Element();
1727 	bgButton->setIndexZ(1);
1728 	bgButton->setAlign(ALIGN_CENTER);
1729 	bgButton->setVAlign(VALIGN_CENTER);
1730 	bgButton->setXY(400, 577);
1731 	bgButton->addFrameFileFromData("/editgame/bluebox.png");
1732 	getGroupScene()->addElement(bgButton);
1733 
1734 	bCancelObjects = new Button();
1735 	bCancelObjects->setIndexZ(2);
1736 	bCancelObjects->setScales(0.4, 0.45);
1737 	bCancelObjects->setAlign(ALIGN_CENTER);
1738 	bCancelObjects->setVAlign(VALIGN_CENTER);
1739 	bCancelObjects->setX(405);
1740 	bCancelObjects->setY(574);
1741 	bCancelObjects->setRGB(255, 0, 0);
1742 
1743 	bCancelObjects->OnClick = bCancel_SceneEditGame_OnClick;
1744 
1745 	sprintf(tmp, Language::GetInstance()->getText("cancel").c_str());
1746 	bCancelObjects->imageOut(Fonts::GetInstance()->getSurface_TextBitMap("font-computer", ALIGN_CENTER, tmp));
1747 	bCancelObjects->setAnimation("out");
1748 
1749 	getGroupScene()->addElement(bCancelObjects);
1750 
1751 	bObjectsGame = new Button();
1752 	bObjectsGame->setIndexZ(2);
1753 	bObjectsGame->setScales(1.0, 1.03);
1754 	bObjectsGame->setAlign(ALIGN_CENTER);
1755 	bObjectsGame->setVAlign(VALIGN_CENTER);
1756 	bObjectsGame->setX(175);
1757 	bObjectsGame->setY(53);
1758 	bObjectsGame->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/" + Language::GetInstance()->getFilename("b_objects_game", "png") ));
1759 	bObjectsGame->setAnimation("out");
1760 	bObjectsGame->OnClick = bObjectsGame_SceneEditGame_OnClick;
1761 	getGroupScene()->addElement(bObjectsGame);
1762 
1763 	bObjectsPersonal = new Button();
1764 	bObjectsPersonal->setIndexZ(0);
1765 	bObjectsPersonal->setRGB(160, 160, 160);
1766 	bObjectsPersonal->setScales(1.0, 1.03);
1767 	bObjectsPersonal->setAlign(ALIGN_CENTER);
1768 	bObjectsPersonal->setVAlign(VALIGN_CENTER);
1769 	bObjectsPersonal->setX(360);
1770 	bObjectsPersonal->setY(53);
1771 	bObjectsPersonal->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/" + Language::GetInstance()->getFilename("b_objects_personal", "png") ));
1772 	bObjectsPersonal->setAnimation("out");
1773 	bObjectsPersonal->OnClick = bObjectsPersonal_SceneEditGame_OnClick;
1774 	getGroupScene()->addElement(bObjectsPersonal);
1775 
1776 	bObjectsTexts = new Button();
1777 	bObjectsTexts->setIndexZ(0);
1778 	bObjectsTexts->setRGB(160, 160, 160);
1779 	bObjectsTexts->setScales(1.0, 1.03);
1780 	bObjectsTexts->setAlign(ALIGN_CENTER);
1781 	bObjectsTexts->setVAlign(VALIGN_CENTER);
1782 	bObjectsTexts->setX(545);
1783 	bObjectsTexts->setY(53);
1784 	bObjectsTexts->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/" + Language::GetInstance()->getFilename("b_objects_text", "png") ));
1785 	bObjectsTexts->setAnimation("out");
1786 	bObjectsTexts->OnClick = bObjectsTexts_SceneEditGame_OnClick;
1787 	getGroupScene()->addElement(bObjectsTexts);
1788 
1789 	objectsGame = new ListImage(4, 6);
1790 	objectsGame->setIndexZ(1);
1791 	objectsGame->setSeparateGrid(110);
1792 	objectsGame->setX(70);
1793 	objectsGame->setY(120);
1794 
1795 	if (EditBoard::GetInstance()->getScenary()->getType()==SCENARY_CLOSED) {
1796         objectsGame->addCategory("windows");
1797         objectsGame->addCategory("doors");
1798         objectsGame->addCategory("lights");
1799         objectsGame->addCategory("elements");
1800         objectsGame->addCategory("decorative");
1801     } else {
1802         objectsGame->addCategory("nature");
1803         objectsGame->addCategory("beach");
1804         objectsGame->addCategory("benchs");
1805         objectsGame->addCategory("construction");
1806         objectsGame->addCategory("elements");
1807     }
1808 
1809 	TypeObjectsScenary::GetInstance()->MoveFirst();
1810 	for (i=0; !TypeObjectsScenary::GetInstance()->isEOF(); i++) {
1811 		if (EditBoard::GetInstance()->getScenary()->getType()==TypeObjectsScenary::GetInstance()->getObject()->type) {
1812 			Button *b = new Button();
1813 			b->setScales(1.0, 1.05);
1814 			sprintf(tmp, "%s/scenary/min_%s", DATA_DIR, TypeObjectsScenary::GetInstance()->getObject()->file.c_str());
1815 			b->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage(tmp));
1816 			b->setAnimation("out");
1817 			b->addParameter("name", TypeObjectsScenary::GetInstance()->getObject()->name);
1818 			b->addParameter("category", TypeObjectsScenary::GetInstance()->getObject()->category);
1819 			b->OnClick = insertObjectsGame_SceneEditGame_OnClick;
1820 			objectsGame->add(b);
1821 		}
1822 		TypeObjectsScenary::GetInstance()->MoveNext();
1823 	}
1824 
1825 	Element *boxObjects = new Element();
1826 	boxObjects->addFrameFileFromData("/editgame/box_object.png");
1827 
1828 	//gObjects->addElement(boxObjects);
1829 
1830 	Button* bUpObjects = new Button();
1831 	bUpObjects->setSoundClick("beep1");
1832 	bUpObjects->setScales(1.0, 1.05);
1833 	bUpObjects->setAlign(ALIGN_CENTER);
1834 	bUpObjects->setVAlign(VALIGN_CENTER);
1835 
1836 	bUpObjects->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/arrow_up.png"));
1837 
1838 	bUpObjects->imageOff(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/arrow_up_off.png"));
1839 	bUpObjects->setAnimation("out");
1840 
1841 	getGroupScene()->addElement((Element*)bUpObjects);
1842 
1843 	bUpObjects->setSensitive(false);
1844 
1845     Button* bDownObjects = new Button();
1846 	bDownObjects->setSoundClick("beep1");
1847     bDownObjects->setScales(1.0, 1.05);
1848 	bDownObjects->setFlop(true);
1849 	bDownObjects->setAlign(ALIGN_CENTER);
1850 	bDownObjects->setVAlign(VALIGN_CENTER);
1851 
1852 	bDownObjects->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/arrow_up.png"));
1853 
1854 	bDownObjects->imageOff(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/arrow_up_off.png"));
1855 	bDownObjects->setAnimation("out");
1856 
1857 	getGroupScene()->addElement((Element*)bDownObjects);
1858 
1859 	bDownObjects->setSensitive(false);
1860 
1861 	objectsGame->setButtons(bUpObjects, bDownObjects, 678, 42);
1862 	objectsGame->setBoxImage(boxObjects);
1863 
1864 	if (EditBoard::GetInstance()->getScenary()->getType()==SCENARY_CLOSED) {
1865          objectsGame->setCategory("windows");
1866     } else {
1867          objectsGame->setCategory("nature");
1868     }
1869 
1870 	// personal objects
1871 
1872 	objectsPersonal = new ListImage(3, 6);
1873 	objectsPersonal->setIndexZ(1);
1874 	objectsPersonal->setSeparateGrid(110);
1875 	objectsPersonal->setX(70);
1876 	objectsPersonal->setY(160);
1877 
1878 	loadObjectsPersonal ();
1879 
1880 	Button* bUpObjectsPersonal = new Button();
1881 	bUpObjectsPersonal->setSoundClick("beep1");
1882 	bUpObjectsPersonal->setScales(1.0, 1.05);
1883 	bUpObjectsPersonal->setAlign(ALIGN_CENTER);
1884 	bUpObjectsPersonal->setVAlign(VALIGN_CENTER);
1885 
1886 	bUpObjectsPersonal->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/arrow_up.png"));
1887 
1888 	bUpObjectsPersonal->imageOff(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/arrow_up_off.png"));
1889 	bUpObjectsPersonal->setAnimation("out");
1890 
1891 	getGroupScene()->addElement((Element*)bUpObjectsPersonal);
1892 
1893 	bUpObjectsPersonal->setSensitive(false);
1894 
1895     Button* bDownObjectsPersonal = new Button();
1896 	bDownObjectsPersonal->setSoundClick("beep1");
1897     bDownObjectsPersonal->setScales(1.0, 1.05);
1898 	bDownObjectsPersonal->setFlop(true);
1899 	bDownObjectsPersonal->setAlign(ALIGN_CENTER);
1900 	bDownObjectsPersonal->setVAlign(VALIGN_CENTER);
1901 
1902 	bDownObjectsPersonal->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/arrow_up.png"));
1903 
1904 	bDownObjectsPersonal->imageOff(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/arrow_up_off.png"));
1905 	bDownObjectsPersonal->setAnimation("out");
1906 
1907 	getGroupScene()->addElement((Element*)bDownObjectsPersonal);
1908 
1909 	bDownObjectsPersonal->setSensitive(false);
1910 
1911 	objectsPersonal->setButtons(bUpObjectsPersonal, bDownObjectsPersonal, 678, 42);
1912 
1913 	Element *boxObjectsPersonal = new Element();
1914 	boxObjectsPersonal->addFrameFileFromData("/editgame/box_object.png");
1915 
1916 	objectsPersonal->setBoxImage(boxObjectsPersonal);
1917 
1918 	objectsPersonal->verifyObjectsToShow();
1919 
1920 	// categories radios
1921 
1922 	rbTypeClosedWindows = new RadioButton(NULL, "font-texts", Language::GetInstance()->getText("windows"));
1923 	rbTypeClosedWindows->setIndexZ(1);
1924 	rbTypeClosedWindows->setX(80);
1925 	rbTypeClosedWindows->setY(80);
1926 
1927 	rbTypeClosedWindows->imageActive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_on.png"));
1928 	rbTypeClosedWindows->imageInactive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_off.png"));
1929 
1930 	getGroupScene()->addGroup(rbTypeClosedWindows);
1931 
1932 	rbTypeClosedDoors = new RadioButton(rbTypeClosedWindows, "font-texts", Language::GetInstance()->getText("doors"));
1933 	rbTypeClosedDoors->setIndexZ(1);
1934 	rbTypeClosedDoors->setX(205);
1935 	rbTypeClosedDoors->setY(80);
1936 
1937 	rbTypeClosedDoors->imageActive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_on.png"));
1938 	rbTypeClosedDoors->imageInactive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_off.png"));
1939 
1940 	getGroupScene()->addGroup(rbTypeClosedDoors);
1941 
1942 	rbTypeClosedLights = new RadioButton(rbTypeClosedWindows, "font-texts", Language::GetInstance()->getText("lights"));
1943 	rbTypeClosedLights->setIndexZ(1);
1944 	rbTypeClosedLights->setX(330);
1945 	rbTypeClosedLights->setY(80);
1946 
1947 	rbTypeClosedLights->imageActive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_on.png"));
1948 	rbTypeClosedLights->imageInactive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_off.png"));
1949 
1950 	getGroupScene()->addGroup(rbTypeClosedLights);
1951 
1952 	rbTypeClosedElements = new RadioButton(rbTypeClosedWindows, "font-texts", Language::GetInstance()->getText("elements"));
1953 	rbTypeClosedElements->setIndexZ(1);
1954 	rbTypeClosedElements->setX(440);
1955 	rbTypeClosedElements->setY(80);
1956 
1957 	rbTypeClosedElements->imageActive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_on.png"));
1958 	rbTypeClosedElements->imageInactive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_off.png"));
1959 
1960 	getGroupScene()->addGroup(rbTypeClosedElements);
1961 
1962 	rbTypeClosedDecorative = new RadioButton(rbTypeClosedWindows, "font-texts", Language::GetInstance()->getText("decorative"));
1963 	rbTypeClosedDecorative->setIndexZ(1);
1964 	rbTypeClosedDecorative->setX(580);
1965 	rbTypeClosedDecorative->setY(80);
1966 
1967 	rbTypeClosedDecorative->imageActive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_on.png"));
1968 	rbTypeClosedDecorative->imageInactive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_off.png"));
1969 
1970 	getGroupScene()->addGroup(rbTypeClosedDecorative);
1971 
1972 	rbTypeClosedWindows->setActive(true);
1973 
1974 	rbTypeOpenedNature = new RadioButton(NULL, "font-texts", Language::GetInstance()->getText("nature"));
1975 	rbTypeOpenedNature->setIndexZ(1);
1976 	rbTypeOpenedNature->setX(80);
1977 	rbTypeOpenedNature->setY(80);
1978 
1979 	rbTypeOpenedNature->imageActive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_on.png"));
1980 	rbTypeOpenedNature->imageInactive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_off.png"));
1981 
1982 	getGroupScene()->addGroup(rbTypeOpenedNature);
1983 
1984 	rbTypeOpenedBeach = new RadioButton(rbTypeOpenedNature, "font-texts", Language::GetInstance()->getText("beach"));
1985 	rbTypeOpenedBeach->setIndexZ(1);
1986 	rbTypeOpenedBeach->setX(215);
1987 	rbTypeOpenedBeach->setY(80);
1988 
1989 	rbTypeOpenedBeach->imageActive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_on.png"));
1990 	rbTypeOpenedBeach->imageInactive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_off.png"));
1991 
1992 	getGroupScene()->addGroup(rbTypeOpenedBeach);
1993 
1994 	rbTypeOpenedBench = new RadioButton(rbTypeOpenedNature, "font-texts", Language::GetInstance()->getText("benchs"));
1995 	rbTypeOpenedBench->setIndexZ(1);
1996 	rbTypeOpenedBench->setX(320);
1997 	rbTypeOpenedBench->setY(80);
1998 
1999 	rbTypeOpenedBench->imageActive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_on.png"));
2000 	rbTypeOpenedBench->imageInactive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_off.png"));
2001 
2002 	getGroupScene()->addGroup(rbTypeOpenedBench);
2003 
2004 	rbTypeOpenedConstruction = new RadioButton(rbTypeOpenedNature, "font-texts", Language::GetInstance()->getText("construction"));
2005 	rbTypeOpenedConstruction->setIndexZ(1);
2006 	rbTypeOpenedConstruction->setX(430);
2007 	rbTypeOpenedConstruction->setY(80);
2008 
2009 	rbTypeOpenedConstruction->imageActive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_on.png"));
2010 	rbTypeOpenedConstruction->imageInactive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_off.png"));
2011 
2012 	getGroupScene()->addGroup(rbTypeOpenedConstruction);
2013 
2014 	rbTypeOpenedElements = new RadioButton(rbTypeOpenedNature, "font-texts", Language::GetInstance()->getText("elements"));
2015 	rbTypeOpenedElements->setIndexZ(1);
2016 	rbTypeOpenedElements->setX(580);
2017 	rbTypeOpenedElements->setY(80);
2018 
2019 	rbTypeOpenedElements->imageActive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_on.png"));
2020 	rbTypeOpenedElements->imageInactive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_off.png"));
2021 
2022 	getGroupScene()->addGroup(rbTypeOpenedElements);
2023 
2024 	rbTypeOpenedNature->setActive(true);
2025 
2026 	// personal radios
2027 
2028 	rad2d = new RadioButton(NULL, "font-texts", Language::GetInstance()->getText("object2d"));
2029 	rad2d->setIndexZ(1);
2030 	rad2d->setX(140);
2031 	rad2d->setY(80);
2032 
2033 	rad2d->imageActive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_on.png"));
2034 	rad2d->imageInactive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_off.png"));
2035 
2036 	getGroupScene()->addGroup(rad2d);
2037 
2038 	string txt_rad3d="";
2039 	if (EditBoard::GetInstance()->getScenary()->getType()==SCENARY_CLOSED) {
2040 		txt_rad3d = Language::GetInstance()->getText("object3d_closed");
2041 	} else {
2042 		txt_rad3d = Language::GetInstance()->getText("object3d_opened");
2043 	}
2044 
2045 	rad3d = new RadioButton(rad2d, "font-texts", txt_rad3d);
2046 	rad3d->setIndexZ(1);
2047 	rad3d->setX(140);
2048 	rad3d->setY(120);
2049 
2050 	rad3d->imageActive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_on.png"));
2051 	rad3d->imageInactive(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/interface/radblue_off.png"));
2052 
2053 	getGroupScene()->addGroup(rad3d);
2054 
2055 	if (EditBoard::GetInstance()->getScenary()->getType()==SCENARY_CLOSED) {
2056 		rad2d->setActive(true);
2057 	} else {
2058 		rad3d->setActive(true);
2059 	}
2060 
2061 
2062 	titleTypeTextsInWall = new Element();
2063 	titleTypeTextsInWall->setIndexZ(1);
2064 	titleTypeTextsInWall->setVAlign(VALIGN_CENTER);
2065 	titleTypeTextsInWall->setAlign(ALIGN_CENTER);
2066 	titleTypeTextsInWall->setX(400);
2067 	titleTypeTextsInWall->setY(130);
2068 
2069 	titleTypeTextsInWall->addFrameLanguage("font-texts", "typefont", ALIGN_CENTER);
2070 
2071 	getGroupScene()->addElement(titleTypeTextsInWall);
2072 
2073 	typeTextsInWall = new SelectButton();
2074 	typeTextsInWall->setIndexZ(1);
2075 	typeTextsInWall->setX(305);
2076 	typeTextsInWall->setY(170);
2077 
2078 	typeTextsInWall->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/misc/font_wall0.png"));
2079 	typeTextsInWall->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/misc/font_wall1.png"));
2080 	typeTextsInWall->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/misc/font_wall2.png"));
2081 	typeTextsInWall->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/misc/font_wall3.png"));
2082 	typeTextsInWall->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/misc/font_wall4.png"));
2083 	typeTextsInWall->addObject(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/misc/font_wall5.png"));
2084 
2085 	typeTextsInWall->setArrows(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/windows/arrow_left.png"), WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/windows/arrow_right.png"));
2086 
2087 	colorTextsInWall = new SelectButton();
2088 	colorTextsInWall->setIndexZ(1);
2089 	colorTextsInWall->setX(350);
2090 	colorTextsInWall->setY(270);
2091 
2092 	for (i=0; i<vcolorsTextInWall->count(); i++) {
2093 		colorTextsInWall->addObject(Primitives::GetInstance()->rectangle(40, 40, vcolorsTextInWall->getColor(i)->r, vcolorsTextInWall->getColor(i)->g, vcolorsTextInWall->getColor(i)->b));
2094 	}
2095 
2096 	colorTextsInWall->setArrows(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/windows/arrow_left.png"), WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR+"/windows/arrow_right.png"));
2097 
2098 	taText = new Entry(NULL, 440, 29, 10, 10);
2099 	taText->setMultiline(true);
2100 	taText->setTotalRows(3);
2101 	taText->setIndexZ(1);
2102 	taText->setFontLabel("font-texts");
2103 	taText->setFont("font-texts");
2104 	taText->setLabel(Language::GetInstance()->getText("inserttext"));
2105 	taText->setHorizontal(false);
2106 	taText->setX(World::width/2);
2107 	taText->setY(330);
2108 	taText->addFrameBoxNormal(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_bluesmall_textarea.png"));
2109 	taText->addFrameBoxOnOver(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_bluesmall_textarea_on.png"));
2110 	taText->addFrameBoxActived(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/createmissions/bg_bluesmall_textarea_active.png"));
2111 
2112 	getGroupScene()->addElement((Element*)taText);
2113 
2114 	taText->setActive(true);
2115 
2116 	bInsertText = new Button();
2117 	bInsertText->setScales(1.0, 1.05);
2118 	bInsertText->setIndexZ(1);
2119 	bInsertText->setAlign(ALIGN_CENTER);
2120 	bInsertText->setVAlign(VALIGN_CENTER);
2121 	bInsertText->setX(400);
2122 	bInsertText->setY(480);
2123 
2124 	bInsertText->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage((string)DATA_DIR + "/editgame/" + Language::GetInstance()->getFilename("b_inserttext", "png")));
2125 	bInsertText->setAnimation("out");
2126 
2127 	bInsertText->OnClick = bInsertText_SceneGame_OnClick;
2128 
2129 	getGroupScene()->addElement(bInsertText);
2130 
2131 	radAlignLeftText = new RadioButton(NULL);
2132 	radAlignLeftText->setIndexZ(1);
2133 	radAlignLeftText->setX(340);
2134 	radAlignLeftText->setY(205);
2135 
2136 	radAlignLeftText->imageInactive( WorkingSurfaces::GetInstance()->surfaceFromImage(string(DATA_DIR) + "/editgame/b_alignleft_off.png") );
2137 	radAlignLeftText->imageActive( WorkingSurfaces::GetInstance()->surfaceFromImage(string(DATA_DIR) + "/editgame/b_alignleft_on.png") );
2138 
2139 	getGroupScene()->addGroup(radAlignLeftText);
2140 
2141 	radAlignCenterText = new RadioButton(radAlignLeftText);
2142 	radAlignCenterText->setIndexZ(1);
2143 	radAlignCenterText->setX(390);
2144 	radAlignCenterText->setY(205);
2145 
2146 	radAlignCenterText->imageInactive( WorkingSurfaces::GetInstance()->surfaceFromImage(string(DATA_DIR) + "/editgame/b_aligncenter_off.png") );
2147 	radAlignCenterText->imageActive( WorkingSurfaces::GetInstance()->surfaceFromImage(string(DATA_DIR) + "/editgame/b_aligncenter_on.png") );
2148 
2149 	getGroupScene()->addGroup(radAlignCenterText);
2150 
2151 	radAlignRightText = new RadioButton(radAlignLeftText);
2152 	radAlignRightText->setIndexZ(1);
2153 	radAlignRightText->setX(440);
2154 	radAlignRightText->setY(205);
2155 
2156 	radAlignRightText->imageInactive( WorkingSurfaces::GetInstance()->surfaceFromImage(string(DATA_DIR) + "/editgame/b_alignright_off.png") );
2157 	radAlignRightText->imageActive( WorkingSurfaces::GetInstance()->surfaceFromImage(string(DATA_DIR) + "/editgame/b_alignright_on.png") );
2158 
2159 	getGroupScene()->addGroup(radAlignRightText);
2160 
2161 	radAlignLeftText->setActive(true);
2162 
2163 	Sounds::GetInstance()->getSound("music_editor")->play(1, -1, 2000);
2164 
2165 
2166 	delete pb;
2167 
2168 }
2169 
loadObjectsPersonal()2170 void SceneEditGame::loadObjectsPersonal () {
2171 
2172 	objectsPersonal->clear();
2173 
2174 	DIR *pdir;
2175 	struct dirent *pent;
2176 
2177 	string path = Missions::GetInstance()->currentLevel->getPath() + "/objects";
2178 
2179 	pdir=opendir(path.c_str());
2180 
2181 	if (pdir) {
2182         while ((pent=readdir(pdir))) {
2183              string ext = WorkingData::GetInstance()->getExtension(pent->d_name);
2184              if ( ext == "JPG" || ext == "PNG" ) {
2185 				Button *b = new Button();
2186 				char tmp[128];
2187 				sprintf(tmp, "%s/%s", path.c_str(), pent->d_name);
2188 				b->imageOut(WorkingSurfaces::GetInstance()->surfaceFromImage(tmp));
2189 
2190 				Size size = WorkingSurfaces::GetInstance()->getSize(tmp);
2191 				float scale = 1.0;
2192 				if (size.h > size.w) {
2193 					scale = 90.0/(float)size.h;
2194 				} else {
2195 					scale = 90.0/(float)size.w;
2196 				}
2197 				b->setScales(scale, scale+0.05);
2198 
2199 				b->setAnimation("out");
2200 				b->addParameter("name", pent->d_name);
2201 				b->OnClick = insertObjectsPersonal_SceneEditGame_OnClick;
2202 				objectsPersonal->add(b);
2203              }
2204         }
2205         closedir(pdir);
2206     }
2207 
2208 }
2209 
2210 /**********************
2211   DRAWSCENE MAIN
2212 **********************/
2213 
drawSceneMain()2214 void SceneEditGame::drawSceneMain () {
2215 
2216 	verifyOverElements_Main();
2217 
2218 	for (int i=0; i<MAX_INDEXZ; i++) {
2219 		drawSceneMainByIndexZ(i);
2220 	}
2221 
2222 }
2223 
drawSceneMainByIndexZ(int z)2224 void SceneEditGame::drawSceneMainByIndexZ(int z) {
2225 	if (EditBoard::GetInstance()->getIndexZ() == z) {
2226 		EditBoard::GetInstance()->draw();
2227 	}
2228 	if (bgHandTray->getIndexZ() == z) {
2229 		handTray->work();
2230 		bgHandTray->draw();
2231 		btHandTray->draw();
2232 	}
2233 	if (menuBg->getIndexZ() == z) {
2234 		menuBg->draw();
2235 	}
2236 	if (bNimuh->getIndexZ() == z) {
2237 		bNimuh->draw();
2238 	}
2239 	if (bEnemy1->getIndexZ() == z) {
2240 		bEnemy1->draw();
2241 	}
2242 	if (bEnemy2->getIndexZ() == z) {
2243 		bEnemy2->draw();
2244 	}
2245 	if (bEnemy3->getIndexZ() == z) {
2246 		bEnemy3->draw();
2247 	}
2248 	if (bBlackHole1->getIndexZ() == z) {
2249 		bBlackHole1->draw();
2250 	}
2251 	if (bBlackHole2->getIndexZ() == z) {
2252 		bBlackHole2->draw();
2253 	}
2254 	if (bTrap->getIndexZ() == z) {
2255 		bTrap->draw();
2256 	}
2257 	if (bKey->getIndexZ() == z) {
2258 		bKey->draw();
2259 	}
2260 	if (bDoorKey->getIndexZ() == z) {
2261 		bDoorKey->draw();
2262 	}
2263 	if (bEat->getIndexZ() == z) {
2264 		bEat->draw();
2265 	}
2266 	if (bWallRight->getIndexZ() == z) {
2267 		bWallRight->draw();
2268 	}
2269 	if (bWallBottom->getIndexZ() == z) {
2270 		bWallBottom->draw();
2271 	}
2272 	if (bDoor->getIndexZ() == z) {
2273 		bDoor->draw();
2274 	}
2275 	if (typeBoard->getIndexZ() == z) {
2276 		typeBoard->draw();
2277 	}
2278 	if (typeFloor->getIndexZ() == z) {
2279 		typeFloor->draw();
2280 	}
2281 	if (EditBoard::GetInstance()->getScenary()->getType()==SCENARY_CLOSED) {
2282     	if (colorWall->getIndexZ() == z) {
2283     		colorWall->draw();
2284     	}
2285 		if (typeWallScenary->getIndexZ() == z) {
2286     		typeWallScenary->draw();
2287     	}
2288     } else {
2289     	if (typeTerrain->getIndexZ() == z) {
2290     		typeTerrain->draw();
2291     	}
2292     }
2293 	if (typeWall->getIndexZ() == z) {
2294 		typeWall->draw();
2295 	}
2296 	if (nTilesClosed->getIndexZ() == z) {
2297 		nTilesClosed->draw();
2298 	}
2299 	if (typeTiled->getIndexZ() == z) {
2300 		typeTiled->draw();
2301 	}
2302 	if (typePavement->getIndexZ() == z) {
2303 		typePavement->draw();
2304 	}
2305 	if (bEditInfo->getIndexZ() == z) {
2306 		bEditInfo->draw();
2307 	}
2308 	if (bAddObject->getIndexZ() == z) {
2309 		bAddObject->draw();
2310 	}
2311 	if (bSave->getIndexZ() == z) {
2312 		bSave->draw();
2313 	}
2314 	if (bRules->getIndexZ() == z) {
2315 		bRules->draw();
2316 	}
2317 	if (bClean->getIndexZ() == z) {
2318 		bClean->draw();
2319 	}
2320 	if (bHelp->getIndexZ() == z) {
2321 		bHelp->draw();
2322 	}
2323 	if (menuTown->getIndexZ() == z) {
2324 		menuTown->draw();
2325 	}
2326 	if (menuText->getIndexZ() == z) {
2327 		menuText->draw();
2328 	}
2329 	if (bQuit->getIndexZ() == z) {
2330 		bQuit->draw();
2331 	}
2332 }
2333 
verifyClickElements_Main()2334 void SceneEditGame::verifyClickElements_Main() {
2335 	if (bNimuh->isOnMouseOver()) {
2336 		bNimuh->setActive(true);
2337 		EditBoard::GetInstance()->changeGhost();
2338 	}
2339 	if (bEnemy1->isOnMouseOver()) {
2340 		bEnemy1->setActive(true);
2341 		EditBoard::GetInstance()->changeGhost();
2342 	}
2343 	if (bEnemy2->isOnMouseOver()) {
2344 		bEnemy2->setActive(true);
2345 		EditBoard::GetInstance()->changeGhost();
2346 	}
2347 	if (bEnemy3->isOnMouseOver()) {
2348 		bEnemy3->setActive(true);
2349 		EditBoard::GetInstance()->changeGhost();
2350 	}
2351 	if (bBlackHole1->isOnMouseOver()) {
2352 		bBlackHole1->setActive(true);
2353 		EditBoard::GetInstance()->changeGhost();
2354 	}
2355 	if (bBlackHole2->isOnMouseOver()) {
2356 		bBlackHole2->setActive(true);
2357 		EditBoard::GetInstance()->changeGhost();
2358 	}
2359 	if (bTrap->isOnMouseOver()) {
2360 		bTrap->setActive(true);
2361 		EditBoard::GetInstance()->changeGhost();
2362 	}
2363 	if (bKey->isOnMouseOver()) {
2364 		bKey->setActive(true);
2365 		EditBoard::GetInstance()->changeGhost();
2366 	}
2367 	if (bDoorKey->isOnMouseOver()) {
2368 		bDoorKey->setActive(true);
2369 		EditBoard::GetInstance()->changeGhost();
2370 	}
2371 	if (bEat->isOnMouseOver()) {
2372 		bEat->setActive(true);
2373 		EditBoard::GetInstance()->changeGhost();
2374 	}
2375 	if (bWallRight->isOnMouseOver()) {
2376 		bWallRight->setActive(true);
2377 		EditBoard::GetInstance()->changeGhost();
2378 	}
2379 	if (bWallBottom->isOnMouseOver()) {
2380 		bWallBottom->setActive(true);
2381 		EditBoard::GetInstance()->changeGhost();
2382 	}
2383 	if (bDoor->isOnMouseOver()) {
2384 		bDoor->setActive(true);
2385 		EditBoard::GetInstance()->changeGhost();
2386 	}
2387 	if (typeBoard->isOnMouseOver()) {
2388 		if (typeBoard->getOverBottom()==LEFT) {
2389 			typeBoard->previousFrame();
2390 		}
2391 		if (typeBoard->getOverBottom()==RIGHT) {
2392 			typeBoard->nextFrame();
2393 		}
2394 		typeBoard->OnClick(this, typeBoard);
2395 	}
2396 	if (typeFloor->isOnMouseOver()) {
2397         if (typeFloor->getSensitive()) {
2398     		if (typeFloor->getOverBottom()==LEFT) {
2399     			typeFloor->previousFrame();
2400     		}
2401     		if (typeFloor->getOverBottom()==RIGHT) {
2402     			typeFloor->nextFrame();
2403     		}
2404     		typeFloor->OnClick(this, typeFloor);
2405         } else {
2406             showMessageBox(Language::GetInstance()->getText("info"), Language::GetInstance()->getText("component_lock"), SCENE_EDITGAME_MAIN);
2407         }
2408 	}
2409 	if (typePavement->isOnMouseOver()) {
2410         if (typePavement->getSensitive()) {
2411     		if (typePavement->getOverBottom()==LEFT) {
2412     			typePavement->previousFrame();
2413     		}
2414     		if (typePavement->getOverBottom()==RIGHT) {
2415     			typePavement->nextFrame();
2416     		}
2417     		typePavement->OnClick(this, typePavement);
2418         } else {
2419             showMessageBox(Language::GetInstance()->getText("info"), Language::GetInstance()->getText("component_lock"), SCENE_EDITGAME_MAIN);
2420         }
2421 	}
2422 	if (typeWall->isOnMouseOver()) {
2423         if (typeWall->getSensitive()) {
2424     		if (typeWall->getOverBottom()==LEFT) {
2425     			typeWall->previousFrame();
2426     		}
2427     		if (typeWall->getOverBottom()==RIGHT) {
2428     			typeWall->nextFrame();
2429     		}
2430     		typeWall->OnClick(this, typeWall);
2431         } else {
2432             showMessageBox(Language::GetInstance()->getText("info"), Language::GetInstance()->getText("component_lock"), SCENE_EDITGAME_MAIN);
2433         }
2434 	}
2435 	if (typeTiled->isOnMouseOver()) {
2436         if (typeTiled->getSensitive()) {
2437     		if (typeTiled->getOverBottom()==LEFT) {
2438     			typeTiled->previousFrame();
2439     		}
2440     		if (typeTiled->getOverBottom()==RIGHT) {
2441     			typeTiled->nextFrame();
2442     		}
2443     		typeTiled->OnClick(this, typeTiled);
2444         } else {
2445             showMessageBox(Language::GetInstance()->getText("info"), Language::GetInstance()->getText("component_lock"), SCENE_EDITGAME_MAIN);
2446         }
2447 	}
2448 	if (nTilesClosed->isOnMouseOver()) {
2449 		if (nTilesClosed->getOverBottom()==LEFT) {
2450 			nTilesClosed->previousFrame();
2451 		}
2452 		if (nTilesClosed->getOverBottom()==RIGHT) {
2453 			nTilesClosed->nextFrame();
2454 		}
2455 		nTilesClosed->OnClick(this, nTilesClosed);
2456 	}
2457 	if (EditBoard::GetInstance()->getScenary()->getType()==SCENARY_CLOSED) {
2458     	if (colorWall->isOnMouseOver()) {
2459     		if (colorWall->getOverBottom()==LEFT) {
2460     			colorWall->previousFrame();
2461     		}
2462     		if (colorWall->getOverBottom()==RIGHT) {
2463     			colorWall->nextFrame();
2464     		}
2465     		colorWall->OnClick(this, colorWall);
2466     	}
2467 		if (typeWallScenary->isOnMouseOver()) {
2468 			if (typeWallScenary->getSensitive()) {
2469 				if (typeWallScenary->getOverBottom()==LEFT) {
2470 					typeWallScenary->previousFrame();
2471 				}
2472 				if (typeWallScenary->getOverBottom()==RIGHT) {
2473 					typeWallScenary->nextFrame();
2474 				}
2475 				typeWallScenary->OnClick(this, typeWallScenary);
2476             } else {
2477                 showMessageBox(Language::GetInstance()->getText("info"), Language::GetInstance()->getText("component_lock"), SCENE_EDITGAME_MAIN);
2478             }
2479     	}
2480     } else {
2481     	if (typeTerrain->isOnMouseOver()) {
2482            if (typeTerrain->getSensitive()) {
2483         		if (typeTerrain->getOverBottom()==LEFT) {
2484         			typeTerrain->previousFrame();
2485         		}
2486         		if (typeTerrain->getOverBottom()==RIGHT) {
2487         			typeTerrain->nextFrame();
2488         		}
2489         		typeTerrain->OnClick(this, typeTerrain);
2490             } else {
2491                 showMessageBox(Language::GetInstance()->getText("info"), Language::GetInstance()->getText("component_lock"), SCENE_EDITGAME_MAIN);
2492             }
2493     	}
2494     }
2495 	if (btHandTray->isOnMouseOver()) {
2496 		btHandTray->OnClick(this, btHandTray);
2497 	}
2498 	if (bEditInfo->isOnMouseOver()) {
2499 		bEditInfo->OnClick(this, bEditInfo);
2500 	}
2501 	if (bSave->isOnMouseOver()) {
2502 		bSave->OnClick(this, bSave);
2503 	}
2504 	if (bAddObject->isOnMouseOver()) {
2505 		bAddObject->OnClick(this, bAddObject);
2506 	}
2507 	if (bRules->isOnMouseOver()) {
2508 		bRules->OnClick(this, bRules);
2509 	}
2510 	if (bClean->isOnMouseOver()) {
2511 		bClean->OnClick(this, bClean);
2512 	}
2513 	if (bHelp->isOnMouseOver()) {
2514 		bHelp->OnClick(this, bHelp);
2515 	}
2516 	if (bQuit->isOnMouseOver()) {
2517 		bQuit->OnClick(this, bQuit);
2518 	}
2519 	EditBoard::GetInstance()->verifyClickOnBoard();
2520 }
2521 
verifyOverElements_Main()2522 void SceneEditGame::verifyOverElements_Main() {
2523 
2524 	bool canHideText = true;
2525 
2526 	if (bEditInfo->onOver()) {
2527          if (bEditInfo->isRollOver) {
2528         	setTextDisplay(0);
2529         	canHideText = false;
2530          } else {
2531             if (canHideText) {
2532     		   setTextDisplay(-1);
2533             }
2534          }
2535     }
2536 
2537 	if (bSave->onOver()) {
2538          if (bSave->isRollOver) {
2539         	setTextDisplay(1);
2540         	canHideText = false;
2541          } else {
2542             if (canHideText) {
2543     		   setTextDisplay(-1);
2544             }
2545          }
2546     }
2547 
2548 	if (bRules->onOver()) {
2549          if (bRules->isRollOver) {
2550         	setTextDisplay(2);
2551         	canHideText = false;
2552          } else {
2553             if (canHideText) {
2554     		   setTextDisplay(-1);
2555             }
2556          }
2557     }
2558 
2559 	if (bClean->onOver()) {
2560          if (bClean->isRollOver) {
2561         	setTextDisplay(8);
2562         	canHideText = false;
2563          } else {
2564             if (canHideText) {
2565     		   setTextDisplay(-1);
2566             }
2567          }
2568     }
2569 
2570 	if (bHelp->onOver()) {
2571          if (bHelp->isRollOver) {
2572         	setTextDisplay(9);
2573         	canHideText = false;
2574          } else {
2575             if (canHideText) {
2576     		   setTextDisplay(-1);
2577             }
2578          }
2579     }
2580 
2581 	if (bQuit->onOver()) {
2582          if (bQuit->isRollOver) {
2583         	setTextDisplay(3);
2584         	canHideText = false;
2585          } else {
2586             if (canHideText) {
2587     		   setTextDisplay(-1);
2588             }
2589          }
2590     }
2591 
2592 	if (bAddObject->onOver()) {
2593          if (bAddObject->isRollOver) {
2594         	setTextDisplay(4);
2595         	canHideText = false;
2596          } else {
2597             if (canHideText) {
2598     		   setTextDisplay(-1);
2599             }
2600          }
2601     }
2602 
2603 	if (bNimuh->onOver()) {
2604          if (bNimuh->isRollOver) {
2605         	setTextDisplay(5);
2606         	canHideText = false;
2607          } else {
2608             if (canHideText) {
2609     		   setTextDisplay(-1);
2610             }
2611          }
2612     }
2613 
2614 	if (bEnemy1->onOver()) {
2615          if (bEnemy1->isRollOver) {
2616         	setTextDisplay(5);
2617         	canHideText = false;
2618          } else {
2619             if (canHideText) {
2620     		   setTextDisplay(-1);
2621             }
2622          }
2623     }
2624 
2625 	if (bEnemy2->onOver()) {
2626          if (bEnemy2->isRollOver) {
2627         	setTextDisplay(5);
2628         	canHideText = false;
2629          } else {
2630             if (canHideText) {
2631     		   setTextDisplay(-1);
2632             }
2633          }
2634     }
2635 
2636 	if (bEnemy3->onOver()) {
2637          if (bEnemy3->isRollOver) {
2638         	setTextDisplay(5);
2639         	canHideText = false;
2640          } else {
2641             if (canHideText) {
2642     		   setTextDisplay(-1);
2643             }
2644          }
2645     }
2646 
2647 	if (bWallRight->onOver()) {
2648          if (bWallRight->isRollOver) {
2649         	setTextDisplay(6);
2650         	canHideText = false;
2651          } else {
2652             if (canHideText) {
2653     		   setTextDisplay(-1);
2654             }
2655          }
2656     }
2657 
2658 	if (bWallBottom->onOver()) {
2659          if (bWallBottom->isRollOver) {
2660         	setTextDisplay(6);
2661         	canHideText = false;
2662          } else {
2663             if (canHideText) {
2664     		   setTextDisplay(-1);
2665             }
2666          }
2667     }
2668 
2669 	if (bDoor->onOver()) {
2670          if (bDoor->isRollOver) {
2671         	setTextDisplay(6);
2672         	canHideText = false;
2673          } else {
2674             if (canHideText) {
2675     		   setTextDisplay(-1);
2676             }
2677          }
2678     }
2679 
2680     if (bBlackHole1->onOver()) {
2681          if (bBlackHole1->isRollOver) {
2682         	setTextDisplay(6);
2683         	canHideText = false;
2684          } else {
2685             if (canHideText) {
2686     		   setTextDisplay(-1);
2687             }
2688          }
2689     }
2690 
2691     if (bBlackHole2->onOver()) {
2692          if (bBlackHole2->isRollOver) {
2693         	setTextDisplay(6);
2694         	canHideText = false;
2695          } else {
2696             if (canHideText) {
2697     		   setTextDisplay(-1);
2698             }
2699          }
2700     }
2701 
2702     if (bTrap->onOver()) {
2703          if (bTrap->isRollOver) {
2704         	setTextDisplay(6);
2705         	canHideText = false;
2706          } else {
2707             if (canHideText) {
2708     		   setTextDisplay(-1);
2709             }
2710          }
2711     }
2712 
2713     if (bKey->onOver()) {
2714          if (bKey->isRollOver) {
2715         	setTextDisplay(6);
2716         	canHideText = false;
2717          } else {
2718             if (canHideText) {
2719     		   setTextDisplay(-1);
2720             }
2721          }
2722     }
2723 
2724     if (bDoorKey->onOver()) {
2725          if (bDoorKey->isRollOver) {
2726         	setTextDisplay(6);
2727         	canHideText = false;
2728          } else {
2729             if (canHideText) {
2730     		   setTextDisplay(-1);
2731             }
2732          }
2733     }
2734 
2735     if (bEat->onOver()) {
2736          if (bEat->isRollOver) {
2737         	setTextDisplay(6);
2738         	canHideText = false;
2739          } else {
2740             if (canHideText) {
2741     		   setTextDisplay(-1);
2742             }
2743          }
2744     }
2745 
2746     if (btHandTray->onOver()) {
2747          if (btHandTray->isRollOver) {
2748         	setTextDisplay(7);
2749         	canHideText = false;
2750          } else {
2751             if (canHideText) {
2752     		   setTextDisplay(-1);
2753             }
2754          }
2755     }
2756 
2757     if (typeBoard->onOver()) {
2758          if (typeBoard->isRollOver) {
2759         	setTextDisplay(10);
2760         	canHideText = false;
2761          } else {
2762             if (canHideText) {
2763     		   setTextDisplay(-1);
2764             }
2765          }
2766     }
2767 
2768     if (typeFloor->onOver()) {
2769          if (typeFloor->isRollOver) {
2770         	setTextDisplay(11);
2771         	canHideText = false;
2772          } else {
2773             if (canHideText) {
2774     		   setTextDisplay(-1);
2775             }
2776          }
2777     }
2778 
2779     if (typeWall->onOver()) {
2780          if (typeWall->isRollOver) {
2781         	setTextDisplay(12);
2782         	canHideText = false;
2783          } else {
2784             if (canHideText) {
2785     		   setTextDisplay(-1);
2786             }
2787          }
2788     }
2789 
2790     if (typePavement->onOver()) {
2791          if (typePavement->isRollOver) {
2792         	setTextDisplay(13);
2793         	canHideText = false;
2794          } else {
2795             if (canHideText) {
2796     		   setTextDisplay(-1);
2797             }
2798          }
2799     }
2800 
2801     if (typeTiled->onOver()) {
2802          if (typeTiled->isRollOver) {
2803         	setTextDisplay(14);
2804         	canHideText = false;
2805          } else {
2806             if (canHideText) {
2807     		   setTextDisplay(-1);
2808             }
2809          }
2810     }
2811 
2812     if (nTilesClosed->onOver()) {
2813          if (nTilesClosed->isRollOver) {
2814         	setTextDisplay(15);
2815         	canHideText = false;
2816          } else {
2817             if (canHideText) {
2818     		   setTextDisplay(-1);
2819             }
2820          }
2821     }
2822 
2823 	if (EditBoard::GetInstance()->getScenary()->getType()==SCENARY_CLOSED) {
2824 		if (typeWallScenary->onOver()) {
2825 			 if (typeWallScenary->isRollOver) {
2826 				setTextDisplay(18);
2827 				canHideText = false;
2828 			 } else {
2829 				if (canHideText) {
2830 				   setTextDisplay(-1);
2831 				}
2832 			 }
2833 		}
2834 		if (colorWall->onOver()) {
2835 			 if (colorWall->isRollOver) {
2836 				setTextDisplay(16);
2837 				canHideText = false;
2838 			 } else {
2839 				if (canHideText) {
2840 				   setTextDisplay(-1);
2841 				}
2842 			 }
2843 		}
2844 	} else {
2845 		if (typeTerrain->onOver()) {
2846 			 if (typeTerrain->isRollOver) {
2847 				setTextDisplay(17);
2848 				canHideText = false;
2849 			 } else {
2850 				if (canHideText) {
2851 				   setTextDisplay(-1);
2852 				}
2853 			 }
2854 		}
2855 	}
2856 
2857 	EditBoard::GetInstance()->verifyMouseOnBoard();
2858 }
2859 
2860 /**********************
2861   DRAWSCENE ADDOBJECT
2862 **********************/
2863 
drawSceneAddObject()2864 void SceneEditGame::drawSceneAddObject () {
2865 
2866 	verifyOverElements_AddObject();
2867 	elmImgSave[0]->draw();
2868 
2869 	for (int i=0; i<MAX_INDEXZ; i++) {
2870 		drawSceneAddObjectByIndexZ(i);
2871 	}
2872 
2873 }
2874 
drawSceneAddObjectByIndexZ(int z)2875 void SceneEditGame::drawSceneAddObjectByIndexZ(int z) {
2876 
2877 	if (blueLine->getIndexZ() == z) {
2878 		blueLine->draw();
2879 	}
2880 
2881 	if (pageAddObject == SCENE_EDITGAME_ADDOBJECT_GAME) {
2882         if (EditBoard::GetInstance()->getScenary()->getType()==SCENARY_CLOSED) {
2883     		if (rbTypeClosedWindows->getIndexZ() == z) {
2884     			rbTypeClosedWindows->draw();
2885     		}
2886     		if (rbTypeClosedDoors->getIndexZ() == z) {
2887     			rbTypeClosedDoors->draw();
2888     		}
2889     		if (rbTypeClosedLights->getIndexZ() == z) {
2890     			rbTypeClosedLights->draw();
2891     		}
2892     		if (rbTypeClosedElements->getIndexZ() == z) {
2893     			rbTypeClosedElements->draw();
2894     		}
2895     		if (rbTypeClosedDecorative->getIndexZ() == z) {
2896     			rbTypeClosedDecorative->draw();
2897     		}
2898         } else {
2899     		if (rbTypeOpenedNature->getIndexZ() == z) {
2900     			rbTypeOpenedNature->draw();
2901     		}
2902     		if (rbTypeOpenedBeach->getIndexZ() == z) {
2903     			rbTypeOpenedBeach->draw();
2904     		}
2905     		if (rbTypeOpenedBench->getIndexZ() == z) {
2906     			rbTypeOpenedBench->draw();
2907     		}
2908     		if (rbTypeOpenedConstruction->getIndexZ() == z) {
2909     			rbTypeOpenedConstruction->draw();
2910     		}
2911     		if (rbTypeOpenedElements->getIndexZ() == z) {
2912     			rbTypeOpenedElements->draw();
2913     		}
2914         }
2915 		if (objectsGame->getIndexZ() == z) {
2916 			objectsGame->draw();
2917 		}
2918 		if (bgArrow->getIndexZ() == z) {
2919 			bgArrow->setXY(727, 140);
2920 			bgArrow->draw();
2921 			bgArrow->setXY(727, 497);
2922 			bgArrow->draw();
2923 		}
2924 	} else if (pageAddObject == SCENE_EDITGAME_ADDOBJECT_PERSONAL) {
2925 		if (objectsPersonal->getIndexZ() == z) {
2926 			objectsPersonal->draw();
2927 		}
2928 
2929 		if (rad2d->getIndexZ() == z) {
2930 			rad2d->draw();
2931 		}
2932 
2933 		if (rad3d->getIndexZ() == z) {
2934 			rad3d->draw();
2935 		}
2936 
2937 		if (infoObjectsPersonal->getIndexZ() == z) {
2938 			infoObjectsPersonal->draw();
2939 		}
2940 
2941 
2942 		if (bgArrow->getIndexZ() == z) {
2943 			bgArrow->setXY(727, 180);
2944 			bgArrow->draw();
2945 			bgArrow->setXY(727, 426);
2946 			bgArrow->draw();
2947 		}
2948 
2949 	} else if (pageAddObject == SCENE_EDITGAME_ADDOBJECT_TEXT) {
2950 		if (titleTypeTextsInWall->getIndexZ() == z) {
2951 			titleTypeTextsInWall->draw();
2952 		}
2953 		if (typeTextsInWall->getIndexZ() == z) {
2954 			typeTextsInWall->draw();
2955 		}
2956 		if (colorTextsInWall->getIndexZ() == z) {
2957 			colorTextsInWall->draw();
2958 		}
2959 		if (taText->getIndexZ() == z) {
2960 			taText->draw();
2961 		}
2962 		if (radAlignLeftText->getIndexZ() == z) {
2963 			radAlignLeftText->draw();
2964 		}
2965 		if (radAlignCenterText->getIndexZ() == z) {
2966 			radAlignCenterText->draw();
2967 		}
2968 		if (radAlignRightText->getIndexZ() == z) {
2969 			radAlignRightText->draw();
2970 		}
2971 		if (bInsertText->getIndexZ() == z) {
2972 			bInsertText->draw();
2973 		}
2974 	}
2975 
2976 	if (bgButton->getIndexZ() == z) {
2977 		bgButton->draw();
2978 	}
2979 
2980 	if (bObjectsPersonal->getIndexZ() == z) {
2981 		bObjectsPersonal->draw();
2982 	}
2983 
2984 	if (bObjectsGame->getIndexZ() == z) {
2985 		bObjectsGame->draw();
2986 	}
2987 
2988 	if (bObjectsTexts->getIndexZ() == z) {
2989 		bObjectsTexts->draw();
2990 	}
2991 
2992 	if (bCancelObjects->getIndexZ() == z) {
2993 		bCancelObjects->draw();
2994 	}
2995 
2996 }
2997 
verifyClickElements_AddObject()2998 void SceneEditGame::verifyClickElements_AddObject() {
2999 
3000 	if (pageAddObject == SCENE_EDITGAME_ADDOBJECT_GAME) {
3001 
3002         if (EditBoard::GetInstance()->getScenary()->getType()==SCENARY_CLOSED) {
3003     		if (rbTypeClosedWindows->isOnMouseOver()) {
3004     			rbTypeClosedWindows->setActive(true);
3005     			objectsGame->setCategory("windows");
3006     		}
3007     		if (rbTypeClosedDoors->isOnMouseOver()) {
3008     			rbTypeClosedDoors->setActive(true);
3009     			objectsGame->setCategory("doors");
3010     		}
3011     		if (rbTypeClosedLights->isOnMouseOver()) {
3012     			rbTypeClosedLights->setActive(true);
3013     			objectsGame->setCategory("lights");
3014     		}
3015     		if (rbTypeClosedElements->isOnMouseOver()) {
3016     			rbTypeClosedElements->setActive(true);
3017     			objectsGame->setCategory("elements");
3018     		}
3019     		if (rbTypeClosedDecorative->isOnMouseOver()) {
3020     			rbTypeClosedDecorative->setActive(true);
3021     			objectsGame->setCategory("decorative");
3022     		}
3023         } else {
3024     		if (rbTypeOpenedNature->isOnMouseOver()) {
3025     			rbTypeOpenedNature->setActive(true);
3026     			objectsGame->setCategory("nature");
3027     		}
3028     		if (rbTypeOpenedBeach->isOnMouseOver()) {
3029     			rbTypeOpenedBeach->setActive(true);
3030     			objectsGame->setCategory("beach");
3031     		}
3032     		if (rbTypeOpenedBench->isOnMouseOver()) {
3033     			rbTypeOpenedBench->setActive(true);
3034     			objectsGame->setCategory("benchs");
3035     		}
3036     		if (rbTypeOpenedConstruction->isOnMouseOver()) {
3037     			rbTypeOpenedConstruction->setActive(true);
3038     			objectsGame->setCategory("construction");
3039     		}
3040     		if (rbTypeOpenedElements->isOnMouseOver()) {
3041     			rbTypeOpenedElements->setActive(true);
3042     			objectsGame->setCategory("elements");
3043     		}
3044         }
3045 
3046 		objectsGame->MoveFirst();
3047 
3048 		while (!objectsGame->isEOF()) {
3049 			if ( (objectsGame->getData()->isOnMouseOver())
3050 					&& (objectsGame->getData()->isVisible()) ) {
3051 				objectsGame->getData()->OnClick(this, objectsGame->getData());
3052 			}
3053 			objectsGame->MoveNext();
3054 		}
3055 
3056 		objectsGame->verifyClickButtons();
3057 	} else if (pageAddObject == SCENE_EDITGAME_ADDOBJECT_PERSONAL) {
3058 
3059 		if (rad2d->isOnMouseOver()) {
3060 			rad2d->setActive(true);
3061 		}
3062 
3063 		if (rad3d->isOnMouseOver()) {
3064 			rad3d->setActive(true);
3065 		}
3066 
3067 		objectsPersonal->MoveFirst();
3068 
3069 		while (!objectsPersonal->isEOF()) {
3070 			if ( (objectsPersonal->getData()->isOnMouseOver())
3071 					&& (objectsPersonal->getData()->isVisible()) ) {
3072 				objectsPersonal->getData()->OnClick(this, objectsPersonal->getData());
3073 			}
3074 			objectsPersonal->MoveNext();
3075 		}
3076 
3077 		objectsPersonal->verifyClickButtons();
3078 	} else if (pageAddObject == SCENE_EDITGAME_ADDOBJECT_TEXT) {
3079 		if (typeTextsInWall->isOnMouseOver()) {
3080 			if (typeTextsInWall->getOverBottom()==LEFT) {
3081 				typeTextsInWall->previousFrame();
3082 			}
3083 			if (typeTextsInWall->getOverBottom()==RIGHT) {
3084 				typeTextsInWall->nextFrame();
3085 			}
3086 		}
3087 		if (colorTextsInWall->isOnMouseOver()) {
3088 			if (colorTextsInWall->getOverBottom()==LEFT) {
3089 				colorTextsInWall->previousFrame();
3090 			}
3091 			if (colorTextsInWall->getOverBottom()==RIGHT) {
3092 				colorTextsInWall->nextFrame();
3093 			}
3094 		}
3095 		if (bInsertText->isOnMouseOver()) {
3096 			bInsertText->OnClick(this, bInsertText);
3097 		}
3098 		if (radAlignLeftText->isOnMouseOver()) {
3099 			radAlignLeftText->setActive(true);
3100 		}
3101 		if (radAlignCenterText->isOnMouseOver()) {
3102 			radAlignCenterText->setActive(true);
3103 		}
3104 		if (radAlignRightText->isOnMouseOver()) {
3105 			radAlignRightText->setActive(true);
3106 		}
3107 	}
3108 
3109 	if (bObjectsPersonal->isOnMouseOver()) {
3110 		bObjectsPersonal->OnClick(this, bObjectsPersonal);
3111 	}
3112 
3113 	if (bObjectsGame->isOnMouseOver()) {
3114 		bObjectsGame->OnClick(this, bObjectsGame);
3115 	}
3116 
3117 	if (bObjectsTexts->isOnMouseOver()) {
3118 		bObjectsTexts->OnClick(this, bObjectsTexts);
3119 	}
3120 
3121 	if (bCancelObjects->isOnMouseOver()) {
3122 		bCancelObjects->OnClick(this, bCancelObjects);
3123 	}
3124 }
3125 
3126 
verifyOverElements_AddObject()3127 void SceneEditGame::verifyOverElements_AddObject() {
3128 	if (pageAddObject == SCENE_EDITGAME_ADDOBJECT_GAME) {
3129 		objectsGame->onOver();
3130 	} else if (pageAddObject == SCENE_EDITGAME_ADDOBJECT_PERSONAL) {
3131 		objectsPersonal->onOver();
3132 	} else if (pageAddObject == SCENE_EDITGAME_ADDOBJECT_TEXT) {
3133 		bInsertText->onOver();
3134 	}
3135 	bObjectsGame->onOver();
3136 	bObjectsPersonal->onOver();
3137 	bCancelObjects->onOver();
3138 }
3139 
3140 /**********************
3141   DRAWSCENE EDITFOOD
3142 **********************/
3143 
drawSceneEditFood()3144 void SceneEditGame::drawSceneEditFood () {
3145 
3146 	verifyOverElements_EditFood();
3147 	elmImgSave[0]->draw();
3148 
3149 	for (int i=0; i<MAX_INDEXZ; i++) {
3150 		drawSceneEditFoodByIndexZ(i);
3151 	}
3152 
3153 }
3154 
drawSceneEditFoodByIndexZ(int z)3155 void SceneEditGame::drawSceneEditFoodByIndexZ(int z) {
3156 	if (frameUp->getIndexZ() == z) {
3157 		frameUp->draw();
3158 	}
3159 	if (frameDown->getIndexZ() == z) {
3160 		frameDown->draw();
3161 	}
3162 	if (bgBox->getIndexZ() == z) {
3163 		bgBox->draw();
3164 	}
3165 
3166 	if (EditBoard::GetInstance()->multiLanguage) {
3167 		if (multiLanguageNoSupport->getIndexZ() == z) {
3168 			multiLanguageNoSupport->draw();
3169 		}
3170 	} else {
3171 		if (infoImageFood->getIndexZ() == z) {
3172 			infoImageFood->draw();
3173 		}
3174 		if (titleFood->getIndexZ() == z) {
3175 			titleFood->draw();
3176 		}
3177 		if (textFood->getIndexZ() == z) {
3178 			textFood->draw();
3179 		}
3180 	}
3181 	if (bAccept->getIndexZ() == z) {
3182 		bAccept->draw();
3183 	}
3184 	if (bCancel->getIndexZ() == z) {
3185 		bCancel->draw();
3186 	}
3187 }
3188 
verifyClickElements_EditFood()3189 void SceneEditGame::verifyClickElements_EditFood() {
3190 	if (bAccept->isOnMouseOver()) {
3191 		bAccept->OnClick(this, bAccept);
3192 	}
3193 	if (bCancel->isOnMouseOver()) {
3194 		bCancel->OnClick(this, bCancel);
3195 	}
3196 	if (titleFood->isOnMouseOver()) {
3197 		titleFood->setActive(true);
3198 	}
3199 	if (textFood->isOnMouseOver()) {
3200 		textFood->setActive(true);
3201 	}
3202 }
3203 
3204 
verifyOverElements_EditFood()3205 void SceneEditGame::verifyOverElements_EditFood() {
3206 	bAccept->onOver();
3207 	bCancel->onOver();
3208 	titleFood->onOver();
3209 	textFood->onOver();
3210 }
3211 
3212 /**********************
3213   DRAWSCENE EDITINFO
3214 **********************/
3215 
drawSceneEditInfo()3216 void SceneEditGame::drawSceneEditInfo () {
3217 
3218 	verifyOverElements_EditInfo();
3219 	elmImgSave[0]->draw();
3220 
3221 	for (int i=0; i<MAX_INDEXZ; i++) {
3222 		drawSceneEditInfoByIndexZ(i);
3223 	}
3224 
3225 }
3226 
drawSceneEditInfoByIndexZ(int z)3227 void SceneEditGame::drawSceneEditInfoByIndexZ(int z) {
3228 	if (frameUp->getIndexZ() == z) {
3229 		frameUp->draw();
3230 	}
3231 	if (frameDown->getIndexZ() == z) {
3232 		frameDown->draw();
3233 	}
3234 	if (bgBox->getIndexZ() == z) {
3235 		bgBox->draw();
3236 	}
3237 
3238 	if (bInfoMain->getIndexZ() == z) {
3239 		bInfoMain->draw();
3240 	}
3241 	if (bInfoData->getIndexZ() == z) {
3242 		bInfoData->draw();
3243 	}
3244 	if (bInfoMusic->getIndexZ() == z) {
3245 		bInfoMusic->draw();
3246 	}
3247 
3248 	switch (pageEditInfo) {
3249 		case SCENE_EDITGAME_EDITINFO_MAIN:
3250 			if (levelName->getIndexZ() == z) {
3251 				levelName->draw();
3252 			}
3253 			if (provinceName->getIndexZ() == z) {
3254 				provinceName->draw();
3255 			}
3256 			if (missionName->getIndexZ() == z) {
3257 				missionName->draw();
3258 			}
3259 			if (nameAuthor->getIndexZ() == z) {
3260 				nameAuthor->draw();
3261 			}
3262 		break;
3263 		case SCENE_EDITGAME_EDITINFO_DATA:
3264 			if (EditBoard::GetInstance()->multiLanguage) {
3265 				if (multiLanguageNoSupport->getIndexZ() == z) {
3266 					multiLanguageNoSupport->draw();
3267 				}
3268 			} else {
3269 				if (dataInfo->getNItems()<=0) {
3270 					if (noExistInfoTown->getIndexZ() == z) {
3271 						noExistInfoTown->draw();
3272 					}
3273 				} else {
3274 					if (dataInfo->getIndexZ() == z) {
3275 						dataInfo->draw();
3276 					}
3277 				}
3278 				if (bAddInfo->getIndexZ() == z) {
3279 					bAddInfo->draw();
3280 				}
3281 
3282 			}
3283 		break;
3284 		case SCENE_EDITGAME_EDITINFO_MUSIC:
3285 			if (radMusic0->getIndexZ() == z) {
3286 				radMusic0->draw();
3287 			}
3288 			if (radMusic1->getIndexZ() == z) {
3289 				radMusic1->draw();
3290 			}
3291 			if (radMusic2->getIndexZ() == z) {
3292 				radMusic2->draw();
3293 			}
3294 			if (radMusic3->getIndexZ() == z) {
3295 				radMusic3->draw();
3296 			}
3297 		break;
3298 	}
3299 
3300 	if (bAccept->getIndexZ() == z) {
3301 		bAccept->draw();
3302 	}
3303 	if (bCancel->getIndexZ() == z) {
3304 		bCancel->draw();
3305 	}
3306 }
3307 
verifyClickElements_EditInfo()3308 void SceneEditGame::verifyClickElements_EditInfo() {
3309 	if (bAccept->isOnMouseOver()) {
3310 		bAccept->OnClick(this, bAccept);
3311 	}
3312 	if (bCancel->isOnMouseOver()) {
3313 		bCancel->OnClick(this, bCancel);
3314 	}
3315 	if (bInfoMain->isOnMouseOver()) {
3316 		bInfoMain->OnClick(this, bInfoMain);
3317 	}
3318 	if (bInfoData->isOnMouseOver()) {
3319 		bInfoData->OnClick(this, bInfoData);
3320 	}
3321 	if (bInfoMusic->isOnMouseOver()) {
3322 		bInfoMusic->OnClick(this, bInfoMusic);
3323 	}
3324 	switch (pageEditInfo) {
3325 		case SCENE_EDITGAME_EDITINFO_MAIN:
3326         	if (missionName->isOnMouseOver()) {
3327         		missionName->setActive(true);
3328         	}
3329         	if (nameAuthor->isOnMouseOver()) {
3330         		nameAuthor->setActive(true);
3331         	}
3332         	if (levelName->isOnMouseOver()) {
3333         		levelName->setActive(true);
3334         	}
3335         	if (provinceName->isOnMouseOver()) {
3336         		provinceName->setActive(true);
3337         	}
3338 		break;
3339 		case SCENE_EDITGAME_EDITINFO_DATA:
3340 			if (!EditBoard::GetInstance()->multiLanguage) {
3341 				if (dataInfo->getNItems()>0) {
3342 					dataInfo->MoveFirst();
3343 					while (!dataInfo->isEOF()) {
3344 						if (dataInfo->isVisible()) {
3345 						   InfoButton *bu = (InfoButton*)dataInfo->getData();
3346 						   bu->verifyClick(this);
3347 						}
3348 						dataInfo->MoveNext();
3349 					}
3350 				}
3351 				if (bAddInfo->isOnMouseOver()) {
3352 					bAddInfo->OnClick(this, bAddInfo);
3353 				}
3354 			}
3355 		break;
3356 		case SCENE_EDITGAME_EDITINFO_MUSIC:
3357 			if (radMusic0->isOnMouseOver()) {
3358 				radMusic0->setActive(true);
3359 			}
3360 			if (radMusic1->isOnMouseOver()) {
3361 				radMusic1->setActive(true);
3362 			}
3363 			if (radMusic2->isOnMouseOver()) {
3364 				radMusic2->setActive(true);
3365 			}
3366 			if (radMusic3->isOnMouseOver()) {
3367 				radMusic3->setActive(true);
3368 			}
3369 		break;
3370     }
3371 }
3372 
3373 
verifyOverElements_EditInfo()3374 void SceneEditGame::verifyOverElements_EditInfo() {
3375 
3376 	bAccept->onOver();
3377 	bCancel->onOver();
3378 	bInfoMain->onOver();
3379 	bInfoData->onOver();
3380 	bInfoMusic->onOver();
3381 	switch (pageEditInfo) {
3382 		case SCENE_EDITGAME_EDITINFO_MAIN:
3383         	levelName->onOver();
3384         	provinceName->onOver();
3385         	missionName->onOver();
3386         	nameAuthor->onOver();
3387 		break;
3388 		case SCENE_EDITGAME_EDITINFO_DATA:
3389 			if ( (!EditBoard::GetInstance()->multiLanguage) && (dataInfo->getNItems()>0) ) {
3390 				dataInfo->MoveFirst();
3391 				while (!dataInfo->isEOF()) {
3392 					if (dataInfo->isVisible()) {
3393 					   InfoButton *bu = (InfoButton*)dataInfo->getData();
3394 					   bu->onOver();
3395 					}
3396 					dataInfo->MoveNext();
3397 				}
3398 			}
3399 			bAddInfo->onOver();
3400 		break;
3401     }
3402 }
3403 
3404 /**********************
3405   DRAWSCENE CLEAN
3406 **********************/
3407 
drawSceneClean()3408 void SceneEditGame::drawSceneClean () {
3409 
3410 	verifyOverElements_Clean();
3411 	elmImgSave[0]->draw();
3412 
3413 	for (int i=0; i<MAX_INDEXZ; i++) {
3414 		drawSceneCleanByIndexZ(i);
3415 	}
3416 
3417 }
3418 
drawSceneCleanByIndexZ(int z)3419 void SceneEditGame::drawSceneCleanByIndexZ(int z) {
3420 	if (frameUp->getIndexZ() == z) {
3421 		frameUp->draw();
3422 	}
3423 	if (frameDown->getIndexZ() == z) {
3424 		frameDown->draw();
3425 	}
3426 	if (middleBox->getIndexZ() == z) {
3427 		middleBox->draw();
3428 	}
3429 	if (bCleanScenary->getIndexZ() == z) {
3430 		bCleanScenary->draw();
3431 	}
3432 	if (bCleanBoard->getIndexZ() == z) {
3433 		bCleanBoard->draw();
3434 	}
3435 	if (bCleanReset->getIndexZ() == z) {
3436 		bCleanReset->draw();
3437 	}
3438 	if (bAccept->getIndexZ() == z) {
3439 		bAccept->draw();
3440 	}
3441 	if (bCancel->getIndexZ() == z) {
3442 		bCancel->draw();
3443 	}
3444 }
3445 
verifyClickElements_Clean()3446 void SceneEditGame::verifyClickElements_Clean() {
3447 	if (bAccept->isOnMouseOver()) {
3448 		bAccept->OnClick(this, bAccept);
3449 	}
3450 	if (bCancel->isOnMouseOver()) {
3451 		bCancel->OnClick(this, bCancel);
3452 	}
3453 	if (bCleanScenary->isOnMouseOver()) {
3454 		bCleanScenary->OnClick(this, bCleanScenary);
3455 	}
3456 	if (bCleanBoard->isOnMouseOver()) {
3457 		bCleanBoard->OnClick(this, bCleanBoard);
3458 	}
3459 	if (bCleanReset->isOnMouseOver()) {
3460 		bCleanReset->OnClick(this, bCleanReset);
3461 	}
3462 }
3463 
3464 
verifyOverElements_Clean()3465 void SceneEditGame::verifyOverElements_Clean() {
3466 	bAccept->onOver();
3467 	bCancel->onOver();
3468 	bCleanScenary->onOver();
3469 	bCleanBoard->onOver();
3470 	bCleanReset->onOver();
3471 }
3472 
3473 /**********************
3474   DRAWSCENE ADDINFOTOWN
3475 **********************/
3476 
drawSceneAddInfoTown()3477 void SceneEditGame::drawSceneAddInfoTown () {
3478 
3479 	verifyOverElements_Help();
3480 	elmImgSave[1]->draw();
3481 
3482 	for (int i=0; i<MAX_INDEXZ; i++) {
3483 		drawSceneAddInfoTownByIndexZ(i);
3484 	}
3485 
3486 }
3487 
drawSceneAddInfoTownByIndexZ(int z)3488 void SceneEditGame::drawSceneAddInfoTownByIndexZ(int z) {
3489 	if (frameUp->getIndexZ() == z) {
3490 		frameUp->draw();
3491 	}
3492 	if (frameDown->getIndexZ() == z) {
3493 		frameDown->draw();
3494 	}
3495 	if (bgBox->getIndexZ() == z) {
3496 		bgBox->draw();
3497 	}
3498 	if (typeButtonInfoTown->getIndexZ() == z) {
3499 		typeButtonInfoTown->draw();
3500 	}
3501 	if (eTitleInfoTown->getIndexZ() == z) {
3502 		eTitleInfoTown->draw();
3503 	}
3504 	if (taInfoTown->getIndexZ() == z) {
3505 		taInfoTown->draw();
3506 	}
3507 	if (bAccept->getIndexZ() == z) {
3508 		bAccept->draw();
3509 	}
3510 	if (bCancel->getIndexZ() == z) {
3511 		bCancel->draw();
3512 	}
3513 }
3514 
verifyClickElements_AddInfoTown()3515 void SceneEditGame::verifyClickElements_AddInfoTown() {
3516 	if (bAccept->isOnMouseOver()) {
3517 		bAccept->OnClick(this, bAccept);
3518 	}
3519 	if (bCancel->isOnMouseOver()) {
3520 		bCancel->OnClick(this, bCancel);
3521 	}
3522 	if (eTitleInfoTown->isOnMouseOver()) {
3523 		eTitleInfoTown->setActive(true);
3524 	}
3525 	if (taInfoTown->isOnMouseOver()) {
3526 		taInfoTown->setActive(true);
3527 	}
3528 	if (typeButtonInfoTown->isOnMouseOver()) {
3529 		if (typeButtonInfoTown->getOverBottom()==LEFT) {
3530 			typeButtonInfoTown->previousFrame();
3531 		}
3532 		if (typeButtonInfoTown->getOverBottom()==RIGHT) {
3533 			typeButtonInfoTown->nextFrame();
3534 		}
3535 	}
3536 }
3537 
3538 
verifyOverElements_AddInfoTown()3539 void SceneEditGame::verifyOverElements_AddInfoTown() {
3540 	bAccept->onOver();
3541 	bCancel->onOver();
3542 }
3543 
3544 /**********************
3545   DRAWSCENE HELP
3546 **********************/
3547 
drawSceneHelp()3548 void SceneEditGame::drawSceneHelp () {
3549 
3550 	verifyOverElements_Help();
3551 	elmImgSave[0]->draw();
3552 
3553 	for (int i=0; i<MAX_INDEXZ; i++) {
3554 		drawSceneHelpByIndexZ(i);
3555 	}
3556 
3557 }
3558 
drawSceneHelpByIndexZ(int z)3559 void SceneEditGame::drawSceneHelpByIndexZ(int z) {
3560 	if (frameUp->getIndexZ() == z) {
3561 		frameUp->draw();
3562 	}
3563 	if (frameDown->getIndexZ() == z) {
3564 		frameDown->draw();
3565 	}
3566 	if (bgHelp->getIndexZ() == z) {
3567 		bgHelp->draw();
3568 	}
3569 
3570 	if (nElmHelp==-1) {
3571 		if (titleIndex->getIndexZ() == z) {
3572 			titleIndex->draw();
3573 		}
3574 		if (bHelp1->getIndexZ() == z) {
3575 			bHelp1->draw();
3576 		}
3577 		if (bHelp2->getIndexZ() == z) {
3578 			bHelp2->draw();
3579 		}
3580 		if (bHelp3->getIndexZ() == z) {
3581 			bHelp3->draw();
3582 		}
3583 		if (bHelp4->getIndexZ() == z) {
3584 			bHelp4->draw();
3585 		}
3586 		if (bHelp5->getIndexZ() == z) {
3587 			bHelp5->draw();
3588 		}
3589 		if (bHelp6->getIndexZ() == z) {
3590 			bHelp6->draw();
3591 		}
3592 		if (bHelp7->getIndexZ() == z) {
3593 			bHelp7->draw();
3594 		}
3595 		if (bHelp8->getIndexZ() == z) {
3596 			bHelp8->draw();
3597 		}
3598 	} else {
3599 		if (elmHelp->getIndexZ() == z) {
3600 			elmHelp->draw();
3601 		}
3602 	}
3603 
3604 	if (bIndex->getIndexZ() == z) {
3605 		bIndex->draw();
3606 	}
3607 	if (bPrevious->getIndexZ() == z) {
3608 		bPrevious->draw();
3609 	}
3610 	if (bNext->getIndexZ() == z) {
3611 		bNext->draw();
3612 	}
3613 	if (bCancel->getIndexZ() == z) {
3614 		bCancel->draw();
3615 	}
3616 }
3617 
verifyClickElements_Help()3618 void SceneEditGame::verifyClickElements_Help() {
3619 	if (bIndex->isOnMouseOver()) {
3620 		bIndex->OnClick(this, bIndex);
3621 	}
3622 	if (bPrevious->isOnMouseOver()) {
3623 		bPrevious->OnClick(this, bPrevious);
3624 	}
3625 	if (bNext->isOnMouseOver()) {
3626 		bNext->OnClick(this, bNext);
3627 	}
3628 	if (bCancel->isOnMouseOver()) {
3629 		bCancel->OnClick(this, bCancel);
3630 	}
3631 
3632 	if (nElmHelp==-1) {
3633 		if (bHelp1->isOnMouseOver()) {
3634 			bHelp1->OnClick(this, bHelp1);
3635 		}
3636 		if (bHelp2->isOnMouseOver()) {
3637 			bHelp2->OnClick(this, bHelp2);
3638 		}
3639 		if (bHelp3->isOnMouseOver()) {
3640 			bHelp3->OnClick(this, bHelp3);
3641 		}
3642 		if (bHelp4->isOnMouseOver()) {
3643 			bHelp4->OnClick(this, bHelp4);
3644 		}
3645 		if (bHelp5->isOnMouseOver()) {
3646 			bHelp5->OnClick(this, bHelp5);
3647 		}
3648 		if (bHelp6->isOnMouseOver()) {
3649 			bHelp6->OnClick(this, bHelp6);
3650 		}
3651 		if (bHelp7->isOnMouseOver()) {
3652 			bHelp7->OnClick(this, bHelp7);
3653 		}
3654 		if (bHelp8->isOnMouseOver()) {
3655 			bHelp8->OnClick(this, bHelp8);
3656 		}
3657 	}
3658 }
3659 
3660 
verifyOverElements_Help()3661 void SceneEditGame::verifyOverElements_Help() {
3662 	if (nElmHelp==-1) {
3663 		bHelp1->onOver();
3664 		bHelp2->onOver();
3665 		bHelp3->onOver();
3666 		bHelp4->onOver();
3667 		bHelp5->onOver();
3668 		bHelp6->onOver();
3669 		bHelp7->onOver();
3670 		bHelp8->onOver();
3671 	}
3672 	bIndex->onOver();
3673 	bPrevious->onOver();
3674 	bNext->onOver();
3675 	bCancel->onOver();
3676 }
3677 
drawScene()3678 bool SceneEditGame::drawScene() {
3679 
3680 	glClear(GL_COLOR_BUFFER_BIT); // | GL_DEPTH_BUFFER_BIT);
3681 	glLoadIdentity();
3682 
3683 	glEnable(GL_BLEND);
3684 	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
3685 
3686 	drawCommonsScene ();
3687 
3688 	switch(statusScene) {
3689 
3690 		case SCENE_EDITGAME_MAIN:
3691 
3692 			drawSceneMain();
3693 
3694 			// Comprobando teclas para opciones
3695 			{ SDL_Event event;
3696 				while ( SDL_PollEvent(&event) ) {
3697 					if ( event.type == SDL_QUIT ) {
3698 						goToScene("quit");
3699 					}
3700 
3701 					if ( event.key.keysym.sym == SDLK_s ) {
3702 						saveScreenShot();
3703 					}
3704 
3705 					if ( event.type == SDL_KEYDOWN ) {
3706 						if ( event.key.keysym.sym == SDLK_ESCAPE ) {
3707 							goToScene("menu");
3708 						}
3709 					}
3710 
3711 					if ( event.type == SDL_MOUSEBUTTONDOWN ) {
3712 						if ( event.button.button == SDL_BUTTON_LEFT ) {
3713 							verifyClickElements_Main();
3714 						}
3715 					}
3716 
3717 					if ( event.type == SDL_MOUSEBUTTONUP ) {
3718 						if ( event.button.button == SDL_BUTTON_LEFT ) {
3719 							EditBoard::GetInstance()->verifyUnClickOnBoard();
3720 						}
3721 						if ( event.button.button == SDL_BUTTON_RIGHT ) {
3722 							EditBoard::GetInstance()->getScenary()->verifyShowIcons();
3723 						}
3724 					}
3725 
3726 				}
3727 			}
3728 
3729 		break;
3730 
3731 		case SCENE_EDITGAME_ADDOBJECT:
3732 
3733 			drawSceneAddObject();
3734 
3735 			// Comprobando teclas para opciones
3736 			{ SDL_Event event;
3737 				while ( SDL_PollEvent(&event) ) {
3738 					if ( event.type == SDL_QUIT ) {
3739 						goToScene("quit");
3740 					}
3741 
3742 					if ( event.type == SDL_KEYDOWN ) {
3743                     	switch (pageAddObject) {
3744                     		case SCENE_EDITGAME_ADDOBJECT_TEXT:
3745 						         taText->insertTextUnicode(event.key.keysym.sym, event.key.keysym.unicode);
3746                             break;
3747                         }
3748 						if ( event.key.keysym.sym == SDLK_ESCAPE ) {
3749 							setStatusScene(SCENE_EDITGAME_MAIN);
3750 						}
3751 					}
3752 
3753 					if ( event.type == SDL_MOUSEBUTTONDOWN ) {
3754 						if ( event.button.button == SDL_BUTTON_LEFT ) {
3755 							verifyClickElements_AddObject();
3756 						}
3757         				if ( ( event.button.button == 4 ) ) {
3758 							if (pageAddObject == SCENE_EDITGAME_ADDOBJECT_GAME) {
3759         						objectsGame->upItems();
3760 							} else if (pageAddObject == SCENE_EDITGAME_ADDOBJECT_PERSONAL) {
3761 								objectsPersonal->upItems();
3762 							}
3763         				}
3764 						if ( ( event.button.button == 5 ) ) {
3765 							if (pageAddObject == SCENE_EDITGAME_ADDOBJECT_GAME) {
3766         						objectsGame->downItems();
3767 							} else if (pageAddObject == SCENE_EDITGAME_ADDOBJECT_PERSONAL) {
3768 								objectsPersonal->downItems();
3769 							}
3770         				}
3771 					}
3772 
3773 
3774 				}
3775 			}
3776 
3777 		break;
3778 
3779 		case SCENE_EDITGAME_EDITFOOD:
3780 
3781 			drawSceneEditFood();
3782 
3783 			// Comprobando teclas para opciones
3784 			{ SDL_Event event;
3785 				while ( SDL_PollEvent(&event) ) {
3786 					if ( event.type == SDL_QUIT ) {
3787 						goToScene("quit");
3788 					}
3789 
3790 					if ( event.type == SDL_KEYDOWN ) {
3791 						if ( event.key.keysym.sym == SDLK_ESCAPE ) {
3792 							setStatusScene(SCENE_EDITGAME_MAIN);
3793 						}
3794 						titleFood->insertTextUnicode(event.key.keysym.sym, event.key.keysym.unicode);
3795 					}
3796 
3797 					if ( event.type == SDL_MOUSEBUTTONDOWN ) {
3798 						if ( event.button.button == SDL_BUTTON_LEFT ) {
3799 							verifyClickElements_EditFood();
3800 						}
3801 					}
3802 
3803 
3804 				}
3805 			}
3806 
3807 		break;
3808 
3809 		case SCENE_EDITGAME_EDITINFO:
3810 
3811 			drawSceneEditInfo();
3812 
3813 			// Comprobando teclas para opciones
3814 			{ SDL_Event event;
3815 				while ( SDL_PollEvent(&event) ) {
3816 					if ( event.type == SDL_QUIT ) {
3817 						goToScene("quit");
3818 					}
3819 
3820 					if ( event.type == SDL_KEYDOWN ) {
3821                     	switch (pageEditInfo) {
3822                     		case SCENE_EDITGAME_EDITINFO_MAIN:
3823 						         missionName->insertTextUnicode(event.key.keysym.sym, event.key.keysym.unicode);
3824                             break;
3825                     		case SCENE_EDITGAME_EDITINFO_DATA:
3826                         		taInfoTown->insertTextUnicode(event.key.keysym.sym, event.key.keysym.unicode);
3827                             break;
3828                         }
3829 						if ( event.key.keysym.sym == SDLK_ESCAPE ) {
3830 							setStatusScene(SCENE_EDITGAME_MAIN);
3831 						}
3832 					}
3833 
3834 					if ( event.type == SDL_MOUSEBUTTONDOWN ) {
3835 						if ( event.button.button == SDL_BUTTON_LEFT ) {
3836 							verifyClickElements_EditInfo();
3837 						}
3838 					}
3839 
3840 
3841 				}
3842 			}
3843 
3844 		break;
3845 
3846 		case SCENE_EDITGAME_CLEAN:
3847 
3848 			drawSceneClean();
3849 
3850 			// Comprobando teclas para opciones
3851 			{ SDL_Event event;
3852 				while ( SDL_PollEvent(&event) ) {
3853 					if ( event.type == SDL_QUIT ) {
3854 						goToScene("quit");
3855 					}
3856 
3857 					if ( event.type == SDL_KEYDOWN ) {
3858 						if ( event.key.keysym.sym == SDLK_ESCAPE ) {
3859 							setStatusScene(SCENE_EDITGAME_MAIN);
3860 						}
3861 					}
3862 
3863 					if ( event.type == SDL_MOUSEBUTTONDOWN ) {
3864 						if ( event.button.button == SDL_BUTTON_LEFT ) {
3865 							verifyClickElements_Clean();
3866 						}
3867 					}
3868 
3869 
3870 				}
3871 			}
3872 
3873 		break;
3874 
3875 		case SCENE_EDITGAME_HELP:
3876 
3877 			drawSceneHelp();
3878 
3879 			// Comprobando teclas para opciones
3880 			{ SDL_Event event;
3881 				while ( SDL_PollEvent(&event) ) {
3882 					if ( event.type == SDL_QUIT ) {
3883 						goToScene("quit");
3884 					}
3885 
3886 					if ( event.type == SDL_KEYDOWN ) {
3887 						if ( event.key.keysym.sym == SDLK_ESCAPE ) {
3888 							setStatusScene(SCENE_EDITGAME_MAIN);
3889 						}
3890 					}
3891 
3892 					if ( event.type == SDL_MOUSEBUTTONDOWN ) {
3893 						if ( event.button.button == SDL_BUTTON_LEFT ) {
3894 							verifyClickElements_Help();
3895 						}
3896 					}
3897 
3898 
3899 				}
3900 			}
3901 
3902 		break;
3903 
3904 		case SCENE_EDITGAME_ADDINFOTOWN:
3905 
3906 			drawSceneAddInfoTown();
3907 
3908 			// Comprobando teclas para opciones
3909 			{ SDL_Event event;
3910 				while ( SDL_PollEvent(&event) ) {
3911 					if ( event.type == SDL_QUIT ) {
3912 						goToScene("quit");
3913 					}
3914 
3915 					if ( event.type == SDL_KEYDOWN ) {
3916                         eTitleInfoTown->insertTextUnicode(event.key.keysym.sym, event.key.keysym.unicode);
3917 						if ( event.key.keysym.sym == SDLK_ESCAPE ) {
3918 							setStatusScene(SCENE_EDITGAME_MAIN);
3919 						}
3920 					}
3921 
3922 					if ( event.type == SDL_MOUSEBUTTONDOWN ) {
3923 						if ( event.button.button == SDL_BUTTON_LEFT ) {
3924 							verifyClickElements_AddInfoTown();
3925 						}
3926 					}
3927 
3928 
3929 				}
3930 			}
3931 
3932 		break;
3933 
3934 	}
3935 
3936 	verifySaveImage();
3937 	drawLastElements();
3938 
3939 	glDisable(GL_BLEND);
3940 
3941 	SDL_GL_SwapBuffers();
3942 
3943 	return getQuit();
3944 
3945 }
unLoad()3946 void SceneEditGame::unLoad() {
3947 
3948 	unLoadCommons();
3949 
3950 	statusScene = SCENE_EDITGAME_MAIN;
3951 
3952 	EditBoard::GetInstance()->unLoad();
3953 
3954 	delete multiLanguageNoSupport;
3955 
3956 	delete vcolorsWall;
3957 	delete vcolorsTextInWall;
3958 
3959 	delete bDoor;
3960 	delete bNimuh;
3961 	delete bEnemy1;
3962 	delete bEnemy2;
3963 	delete bEnemy3;
3964 	delete bBlackHole1;
3965 	delete bBlackHole2;
3966 	delete bTrap;
3967 	delete bKey;
3968 	delete bEat;
3969 	delete bDoorKey;
3970 	delete bWallRight;
3971 	delete bWallBottom;
3972 	delete typeWall;
3973 	delete typeFloor;
3974 	delete typeBoard;
3975 	delete typeTiled;
3976 	delete typePavement;
3977 	delete colorWall;
3978 	delete nTilesClosed;
3979 	delete typeTerrain;
3980 	delete typeWallScenary;
3981 	delete bEditInfo;
3982 	delete bSave;
3983 	delete bAddObject;
3984 	delete bRules;
3985 	delete bClean;
3986 	delete bHelp;
3987 	delete bQuit;
3988 
3989 	delete frameUp;
3990 	delete frameDown;
3991 
3992 	delete rad2d;
3993 	delete rad3d;
3994 
3995 	delete rbTypeClosedWindows;
3996     delete rbTypeClosedDoors;
3997     delete rbTypeClosedLights;
3998     delete rbTypeClosedElements;
3999     delete rbTypeClosedDecorative;
4000     delete rbTypeOpenedNature;
4001     delete rbTypeOpenedBeach;
4002     delete rbTypeOpenedBench;
4003     delete rbTypeOpenedConstruction;
4004     delete rbTypeOpenedElements;
4005 
4006 	delete typeTextsInWall;
4007 	delete colorTextsInWall;
4008 	delete taText;
4009 	delete titleTypeTextsInWall;
4010 	delete bInsertText;
4011 	delete radAlignLeftText;
4012 	delete radAlignCenterText;
4013 	delete radAlignRightText;
4014 
4015 	delete menuTown;
4016 
4017 	delete bgHandTray;
4018 	delete btHandTray;
4019 	delete bgBox;
4020 	delete middleBox;
4021 
4022 	delete bgHelp;
4023 	delete elmHelp;
4024 	delete titleIndex;
4025 
4026 	delete bHelp1;
4027 	delete bHelp2;
4028 	delete bHelp3;
4029 	delete bHelp4;
4030 	delete bHelp5;
4031 	delete bHelp6;
4032 	delete bHelp7;
4033 	delete bHelp8;
4034 
4035 	delete typeButtonInfoTown;
4036 	delete eTitleInfoTown;
4037 	delete taInfoTown;
4038 	delete dataInfo;
4039 	delete noExistInfoTown;
4040 	delete bAddInfo;
4041 
4042 	delete bCleanBoard;
4043 	delete bCleanScenary;
4044 	delete bCleanReset;
4045 
4046 	delete levelName;
4047 	delete provinceName;
4048 	delete missionName;
4049 	delete nameAuthor;
4050 
4051 	delete bInfoMain;
4052 	delete bInfoData;
4053 	delete bInfoMusic;
4054 
4055 	delete radMusic0;
4056 	delete radMusic1;
4057 	delete radMusic2;
4058 	delete radMusic3;
4059 
4060 	delete menuText;
4061 	delete menuBg;
4062 
4063 	delete bAccept;
4064 	delete bCancel;
4065 	delete bNext;
4066 	delete bPrevious;
4067 	delete bIndex;
4068 
4069 	delete titleFood;
4070 	delete textFood;
4071 	delete infoImageFood;
4072 
4073 	delete objectsGame;
4074 	delete objectsPersonal;
4075 	delete bObjectsGame;
4076 	delete bObjectsPersonal;
4077 	delete bObjectsTexts;
4078 	delete blueLine;
4079 	delete infoObjectsPersonal;
4080 
4081 	delete bgButton;
4082 	delete bgArrow;
4083 
4084 	Sounds::GetInstance()->unLoad();
4085 
4086 	isLoad = false;
4087 
4088 }
4089