//Logic for States void state_logic () { if (state_terminated) { if (state_terminated > 0) { trans_stop (); state_quit (); game_shutdown (); state_terminated = -1; //One Time Quit. } return; } if (state_switched) { return; } handlers[state].proc_logic (); { dt = al_get_time () - prev_time; while (dt >= GUI_DT) { gui_update (); dt -= GUI_DT; prev_time = al_get_time (); } gui_update (); } }
//Quit for States void state_switch (run_state newstate) { if (state != GAME_UNINITIALIZED) { state_quit (); } oldstate = state; state = newstate; ++state_switched; if (state_init ()) { //Not for GAME_USUAL state_quit (); state = GAME_USUAL; (void) state_init (); } --state_switched; }
// --------------------------------------------------------------------- Form::~Form() { for (int i=children.size()-1; 0<=i; i--) delete children.at(i); if (this==form) form = 0; if (this==evtform) evtform = 0; Forms.removeOne(this); if (Forms.isEmpty()) form=0; if (Forms.isEmpty() && (!ShowIde)) { if (jdllproc) evloop->exit(); else { jcon->cmd("2!:55)0"); state_quit(); app->quit(); delete app; } } }