31 #include "laStagesJR.h"
46 laSettings *s = laSystemIntegrator::getSettings();
47 strcpy(strFileName, s->load_level);
50 virtual ~laLoadDlg_Editor(
void){
59 pEditor->pCanvas->disable();
60 pEditor->_pMenu->disable();
70 pEditor->pCanvas->enable();
71 pEditor->_pMenu->enable();
93 laSettings *s = laSystemIntegrator::getSettings();
94 strcpy(strFileName, s->load_level);
97 virtual ~laSaveDlg_Editor(
void){
102 uiFileDialog::show();
106 pEditor->pCanvas->disable();
107 pEditor->_pMenu->disable();
113 uiFileDialog::hide();
117 pEditor->pCanvas->enable();
118 pEditor->_pMenu->enable();
128 pEditor->pBlueprint->ppLoad(
"gen/post-processing/pp-editor.pp");
129 pEditor->pBlueprint->pp();
130 pEditor->pBlueprint->save(strFileName);
136 void uiNewLevelDlg::show(){
137 pEditor->pCanvas->disable();
138 pEditor->_pMenu->disable();
142 void uiNewLevelDlg::hide(){
143 pEditor->pCanvas->enable();
144 pEditor->_pMenu->enable();
149 void uiPalette::onCommand(
unsigned long uID,
unsigned long nCmd)
152 double dt = ::laSystemIntegrator::getEnvironment()->getTimer()->delta();
157 pEditor->dScroll += dt*500;
163 pEditor->dScroll -= dt*500;
174 if(strstr(title,
"hide"))
176 move(laPoint3(20, -90),
M_AC,
M_AT);
177 ((
uiEdit*)
get(2))->setText(
"show palette");
180 else if(strstr(title,
"show"))
182 move(laPoint3(20, -40),
M_AC,
M_AT);
183 ((
uiEdit*)
get(2))->setText(
"hide palette");
191 for(
unsigned n=0; n<=6; n++) arBtn[n]->unpress();
193 if(strstr(title,
"Empty"))
198 else if(strstr(title,
"Solid"))
203 else if(strstr(title,
"Treasure"))
206 nBrushType = GEN_BP_REWARD;
208 else if(strstr(title,
"Lava"))
211 nBrushType = GEN_BP_CHALLENGE;
213 else if(strstr(title,
"A"))
216 nBrushType = GEN_BP_CHALLENGE+1;
218 else if(strstr(title,
"B"))
221 nBrushType = GEN_BP_CHALLENGE+2;
223 else if(strstr(title,
"C"))
226 nBrushType = GEN_BP_CHALLENGE+3;
232 void uiNewLevelDlg::onCommand(
unsigned long uID,
unsigned long nCmd)
239 if(strstr(title,
"Ok"))
242 char strTileset[128];
246 _pEdName->getText(strName);
247 _pEdTileset->getText(strTileset);
248 nLenght = (unsigned)(_pSliderLenght->getValue());
255 if(pEditor->pBlueprint)
257 delete pEditor->pBlueprint;
262 genBlueprint_CB *pbp =
new genBlueprint_CB();
263 pbp->setName(strName);
264 pbp->setTileset(strTileset);
266 _pParams =
new genParameters(NULL, pbp);
267 (*_pParams)[
"Level Lenght"].dValue = nLenght;
268 pbp->create(_pParams, 0);
270 pbp->set(nLenght-1, 0, 0);
274 pEditor->pBlueprint = pbp;
275 pEditor->dScroll = 0;
278 else if(strstr(title,
"Cancel"))
281 if(pEditor->pBlueprint == NULL)
283 laSystemIntegrator::getGame()->setStage(M_STAGE_MENU);
291 uiEditorCanvas::uiEditorCanvas():
uiWindow()
293 laSettings *s = laSystemIntegrator::getSettings();
296 laPoint3(50, (s->graphics_resolution_h - (25)*GEN_BP_HEIGHT)/2.0 + 50 ),
297 laPoint3(s->graphics_resolution_w-100, (25)*GEN_BP_HEIGHT)
301 nBlueprintX = nBlueprintY = 0;
306 void uiEditorCanvas::reply()
308 if(!pEditor)
throw laError(
"uiEditorCanvas::reply(): Nil editor object.");
313 if( (pEditor->pBlueprint) && isMouseInside() && (!(pEditor->_pMenu->
isMouseInside())) )
315 laSettings *s = laSystemIntegrator::getSettings();
316 int nOffsetX = pEditor->dScroll + getAbsolutePos().x() ;
317 int nOffsetY = getAbsolutePos().y();
319 nBlueprintX = ( getMousePointer()->pos().x() - nOffsetX) / 25;
320 nBlueprintY = ( getMousePointer()->pos().y() - nOffsetY) / 25;
322 if(nBlueprintY>=GEN_BP_HEIGHT-1) nBlueprintY = GEN_BP_HEIGHT-2;
323 else if(nBlueprintY<0) nBlueprintY = 0;
325 if(nBlueprintX>=pEditor->pBlueprint->lenght()) nBlueprintX = pEditor->pBlueprint->lenght()-1;
326 else if(nBlueprintX<=0) nBlueprintX = 0;
331 if( pi->mouseButton(1) )
333 pEditor->pBlueprint->set(nBlueprintX, nBlueprintY, pEditor->_pPalette->nBrushType);
338 void uiEditorCanvas::draw()
340 if(!pEditor)
throw laError(
"uiEditorCanvas::reply(): Nil editor object.");
341 laRenderer* pr = ::laSystemIntegrator::getRenderer();
345 if( pEditor->pBlueprint )
348 pr->transTranslate( getPos() + laPoint3(pEditor->dScroll, 0) );
350 pEditor->pBlueprint->draw(25, 0);
351 pEditor->pBlueprint->drawGrid(25, 0);
356 pr->styleSet( laColor(0,0,0,100) );
357 pr->drawRect( laPoint3(nBlueprintX*25, nBlueprintY*25 ),
365 stageEdit::stageEdit(
void)
371 stageEdit::~stageEdit(
void)
375 void stageEdit::onInit()
377 laSettings *s = laSystemIntegrator::getSettings();
382 _uiDesktop.create(
"ui\\desktop-edit.dsk");
385 pLabel->setText(M_COPYRIGHT_STRING);
389 _uiDesktop.insert(pLabel);
391 pCanvas =
new uiEditorCanvas();
392 pCanvas->pEditor =
this;
393 _uiDesktop.insert( pCanvas );
395 _pPalette =
new uiPalette();
396 _pPalette->pEditor =
this;
397 _uiDesktop.insert(_pPalette);
400 pButton->
create( laPoint3(5, s->graphics_resolution_h/2), laPoint3(45, 45) );
401 pButton->setText(
"<<");
403 pButton->toggleRepetitive(M_TRUE);
405 _uiDesktop.insert(pButton);
408 pButton->
create( laPoint3(s->graphics_resolution_w-55, s->graphics_resolution_h/2), laPoint3(45, 45) );
409 pButton->setText(
">>");
411 pButton->toggleRepetitive(M_TRUE);
413 _uiDesktop.insert(pButton);
416 _uiDesktop.insert(_pMenu);
418 pNewLevelDlg =
new uiNewLevelDlg();
419 pNewLevelDlg->pEditor =
this;
420 _uiDesktop.insert( pNewLevelDlg );
422 pSaveDlg =
new laSaveDlg_Editor();
423 ((laSaveDlg_Editor*)pSaveDlg)->pEditor =
this;
424 _uiDesktop.insert( pSaveDlg );
426 pOpenDlg =
new laLoadDlg_Editor();
427 ((laLoadDlg_Editor*)pOpenDlg)->pEditor =
this;
428 _uiDesktop.insert( pOpenDlg );
431 void stageEdit::onActivate()
433 laSystemIntegrator::getEnvironment()->setTitle(M_EDITORTITLE_STRING);
438 pNewLevelDlg->show();
440 pNewLevelDlg->hide();
446 void stageEdit::onDeactivate()
456 void stageEdit::onFini()
467 laSettings *s = laSystemIntegrator::getSettings();
470 _uiDesktop.drawBackground();
479 if(pi->key(KEY_ESCAPE)) _pMenu->expand();
virtual void modeTexture(M_BOOL bOn)=0
Enable/disable texturing.
M_BOOL isMouseInside()
Helpful function that checks if the mouse pointer is inside the window.
#define M_AB
Text align bottom.
virtual void move(laPoint3 ptNewPos, unsigned nHReference=M_AL, unsigned nVReference=M_AT)
Change window position.
#define M_AL
Text align left.
#define M_AT
Text align top.
Base class for GUI windows.
#define M_AC
Text align center.
Virtual interface for the Engine graphics renderer.
virtual void modeInterface()=0
Switch to interface rendering (2D projection mode)
virtual void reply()
Handle input message.
virtual void draw()
Display the window.