void State::Manager::Run(State& entranceState) { SDL_setenv("UBUNTU_PLATFORM_API_BACKEND", "touch_mirclient", 1); accel = ua_sensors_accelerometer_new(); ua_sensors_accelerometer_set_reading_cb(accel, tilt_cb, 0); ua_sensors_accelerometer_enable(accel); current = &entranceState; current->Enter(); //clock_t ticks = clock(); while (!quit) { PollEvent(); Tilt(); if (next) EnterNextState(); CallLoopFunction(); if (param.framerate != 0) { /**clock_t nticks = clock(); int32_t sleeptime = (CLOCKS_PER_SEC/param.framerate - (nticks-ticks)) / 1000; if (sleeptime > 0) SDL_Delay(sleeptime);*/ SDL_Delay(1); //ticks = nticks; } } current->Exit(); previous = current; current = NULL; }
bool ProcessEvent(Event* event){ if (current_state_ == 0) { return false; } // ConsumeEvent may change the next_state_ if (!ConsumeEvent(event)) { return false; } if (next_state_) { EnterNextState(); } return true; }
void SetInitialState(IStateBase* initial_state) { StateTransition(initial_state); EnterNextState(); }