38 #include "laStagesJR.h"
40 stageJRGame::stageJRGame() {
41 _shutterCinematic.parameters(laColor(0,0,0,100), 0.8, M_TRUE);
42 _shutterMenu.parameters(laColor(255,255,255,100), 0.5, M_FALSE);
45 stageJRGame::~stageJRGame(
void) {
48 void stageJRGame::onInit()
55 _ttMenu.parameters(0.5, 0.5, M_FALSE);
56 _ttMenu.enable(M_FALSE);
58 _ttJump.parameters(0.1, 0.1, M_FALSE);
59 _ttJump.enable(M_FALSE);
60 _mkSomersault.set(KEY_SPACE, 0.2, 2);
63 _mkAttack.set(KEY_X, 20, 1, M_FALSE);
65 _mkQuickAttack.set(KEY_X, 0.2, 2);
73 void stageJRGame::_init_gui()
75 _uiDesktop.create(
"ui\\desktop-ingame.dsk");
77 _uiDesktop.insert(_pMenu);
80 void stageJRGame::onActivate()
83 ASSERT(_pGame,
"Nil game object");
84 stageJR::onActivate();
86 _shutterMenu.activate(M_FALSE);
92 if( _pGame->level.isIntroPresent() && (!_pGame->level.isIntroOver()) )
94 ((stageIntro*)(laSystemIntegrator::getGame()->getStage(M_STAGE_INTRO)))
95 ->setTS( _pGame->level.getTS() );
96 laSystemIntegrator::getGame()->setStage(M_STAGE_INTRO);
99 ::laSystemIntegrator::getEnvironment()->getTimer()->statistics_enable();
103 void stageJRGame::onDeactivate()
106 ::laSystemIntegrator::getEnvironment()->getTimer()->statistics_enable(M_FALSE);
107 ASSERT(_pGame,
"Nil game object");
108 stageJR::onDeactivate();
113 if( _pGame->level.isIntroPresent() ? _pGame->level.isIntroOver() : M_FALSE )
119 else if(_pGame->level.isIntroPresent()) _pGame->level.introOver();
126 void stageJRGame::_draw_UI(
laRenderer *pr, laTimer *pt)
128 PROFILE(stageJR__draw_UI);
132 laSettings* ps = laSystemIntegrator::getSettings();
133 double w = laSystemIntegrator::getSettings()->graphics_resolution_w;
134 double h = laSystemIntegrator::getSettings()->graphics_resolution_h;
136 _pGame->level.drawInterface(pr, laPoint3());
138 _shutterMenu.draw(pr);
143 _shutterCinematic.animate(*pt);
144 _shutterCinematic.draw(pr);
152 pr->styleSet(laColor(255,255,255,150));
153 f->draw(laPoint3(w-20, 20),
"fps: %.1f", pt->fps_sampled());
155 laPoint3 pt = (_pGame->level.getPlayer())->getPosition();
156 int seg = _pGame->level.segmentIndex(pt.x());
160 f->draw(laPoint3(w-40, 50),
"_nCrSeg: %d, x:%d, y:%d", _nCrSeg , nx, ny);
163 f->draw(laPoint3(w-40, 80),
"_nColDomains: %d", _nColDomains);
168 _shutterMenu.animate(*pt);
169 _ttMenu.animate(*pt);
178 PROFILE(stageJR__animate);
181 laPlayer *pPlayer = _pGame->level.getPlayer();
182 laRenderer *pr = laSystemIntegrator::getRenderer();
184 if( !_pMenu->isVisible() )
186 if( (pPlayer->isAlive()) && (!_pGame->level.isCompleted()) )
187 _animate_PlayerControls(pi, pt);
190 _pGame->level.cameraSetup(pr);
191 _animate_Dynamics(pi, pt);
194 _animate_GUI(pi, pt);
201 void stageJRGame::_animate_PlayerControls(
laInputManager *pi, laTimer *pt)
206 if(pPlayer->isDialogActive())
return;
210 _ttJump.animate(*pt);
211 _mkSomersault.animate(pi, *pt);
213 if( _ttJump.isElapsed() && (_nJump<3))
215 _ttJump.enable(M_FALSE);
218 if( !pi->key(KEY_SPACE) )
221 _ttJump.enable(M_FALSE);
223 else if( !_ttJump.isEnabled() )
225 if(pPlayer->jump()) _nJump++;
231 if( _mkSomersault.isActivated() )
234 _mkSomersault.reset();
239 _mkAttack.animate(pi, *pt);
240 _mkQuickAttack.animate(pi, *pt);
242 if( _mkQuickAttack.isActivated() && (!pPlayer->attackIsQuick()) )
244 pPlayer->attackStop();
245 pPlayer->attackSelect(1);
246 pPlayer->attackInitiate(M_TRUE);
249 _mkQuickAttack.reset();
254 if(_mkQuickAttack.getNPress() >= 10)
256 _mkQuickAttack.set(KEY_X, _mkQuickAttack.getInterval(), 10);
258 else _mkQuickAttack.set(KEY_X, _mkQuickAttack.getInterval(), _mkQuickAttack.getNPress()+2);
260 else if( _mkAttack.isActivated() )
262 pPlayer->attackSelect(0);
263 pPlayer->attackInitiate();
267 if(!_mkQuickAttack.isActivated() )
269 if(_mkQuickAttack.getNPress() <= 2) _mkQuickAttack.set(KEY_X, _mkQuickAttack.getInterval(), 2);
270 else _mkQuickAttack.set(KEY_X, _mkQuickAttack.getInterval(), _mkQuickAttack.getNPress()-2);
275 if(pi->key(KEY_LEFT)) pPlayer->move(-1);
276 else if(pi->key(KEY_RIGHT)) pPlayer->move(+1);
277 else pPlayer->move(0);
286 PROFILE(stageJR__animate_GUI);
288 laPlayer *pPlayer = _pGame->level.getPlayer();
292 if( (in::key(KEY_ESCAPE)) && (_ttMenu.isElapsed() || !_ttMenu.isEnabled()))
294 if(_pMenu->isVisible())
297 _shutterMenu.activate(M_FALSE);
304 _shutterMenu.activate();
312 if( _pGame->level.isCompleted() && pi->key(KEY_RETURN))
317 char* strNextLevel = _pGame->level.nextLevel();
321 strcpy(laSystemIntegrator::getSettings()->load_level, strNextLevel);
322 laSystemIntegrator::getGame()->setStage(M_STAGE_LOAD);
326 laSystemIntegrator::getGame()->setStage(M_STAGE_MENU);
332 if(pi->key(KEY_R)) _pGame->level.reset();
337 _pGame->level.load(laSystemIntegrator::getSettings()->load_level, M_TRUE);
343 ::laSystemIntegrator::getRenderer()->modeProfiler( 1 - laSystemIntegrator::getRenderer()->isProfilerOn() );
laFont * font(char *strName)
Get a font renderer.
#define M_UNIT
Unit of 1 meter.
#define M_AR
Text align right.
Virtual interface for the Engine graphics renderer.
virtual void somersault()