void ViewSFML::output() { if (!simulation) { throw std::runtime_error("No Simulation was set for this View."); } frameTimer.sync(); /* NOTE: to get better perfomance for drawing only create the * Graphical objets once and update their state here. */ // clear-draw-display cycle // clear background window.clear(sf::Color::Black); // draw Arena drawArena(window); // draw all players for (auto const &player : simulation->getPlayers()) { drawPlayer(window, player.first, player.second); } // draw all projectiles for (auto const &projectile : simulation->getProjectiles()) { drawProjectile(window, projectile); } // draw UI drawUI(window); window.display(); }
void advanceGame(void* gameMemory, OOGameInput* input, OOGameOutput* output) { cbgame * game = (cbgame*) gameMemory; oofloat respawnTime = 2.f; if(game->p1.score == CombatGame_ScoreLimit) { //Player 1 wins } else if (game->p2.score == CombatGame_ScoreLimit) { //Player 2 Wins } if(!game->p1.alive && game->time >= game->p1.timeOfDeath + respawnTime) { respawnPlayer(game, &game->p1); } else if (!game->p2.alive && game->time >= game->p2.timeOfDeath + respawnTime) { respawnPlayer(game, &game->p2); } game->input = input; game->output = output; if( !game->initialised ) { initGame(game); } game->moveDelta = game->p1.x; updateGame(game); game->moveDelta -= game->p1.x; clearScreen(game); moveWall(game); drawPlayer(game, &game->p2); drawPlayer(game, &game->p1); drawArena(game); if(game->p1.missile.isFiring) { drawMissile(game,&game->p1); } if(game->p2.missile.isFiring) { drawMissile(game,&game->p2); } game->time += game->input->dt; }