void Game::gameLoop() { sf::Clock clock; while (window.isOpen()) { sf::Time elapsed = clock.restart(); float dt = elapsed.asSeconds(); if (peekState() == nullptr) { continue; } while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) { window.close(); } peekState()->handleInput(); } peekState()->update(dt); window.clear(sf::Color(200, 210, 255, 255)); peekState()->draw(dt); window.display(); } }
void App::appLoop() { sf::Clock clock; while(this->window.isOpen()) { sf::Time elapsed = clock.restart(); float dt = elapsed.asSeconds(); if(peekState() == nullptr) continue; peekState()->handleInput(); peekState()->update(dt); peekState()->draw(dt); } }
void Game::draw() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); _shader.bind(); peekState()->draw(_clock, _shader); _context.flush(); }
GameState *StateManager::popState() { GameState *state = peekState(); states.pop(); return state; }
void Game::gameLoop() { sf::Clock clock; while(this->window.isOpen()) { sf::Time elapsed = clock.restart(); float dt = elapsed.asSeconds(); if(peekState() == nullptr) continue; peekState()->handleInput(); peekState()->update(dt); this->window.clear(sf::Color::Black); peekState()->draw(dt); this->window.display(); } }
void GameEngine::changeState(GameState* state) { if (!states.empty()) { popState(); } pushState(state); peekState()->Init(this); }
void GameEngine::pushState(GameState* state) { if (!states.empty()) { states.top()->Pause(); } states.push(state); peekState()->Init(this); }
bool Game::update() { if (_input.getKey(SDLK_ESCAPE) || _input.getInput(SDL_QUIT)) return false; // Mise a jour des inputs et de l'horloge de jeu _context.updateClock(_clock); _context.updateInputs(_input); if(peekState()->update(_clock, _input) == false) return false; return true; }