From fe6779da7e24139888c504c45eb4cd254024e9b1 Mon Sep 17 00:00:00 2001 From: /jedi/ Date: Tue, 27 Sep 2016 20:51:03 +0200 Subject: [PATCH] server files --- game/server.cpp | 67 +++++++++++++++++++++++++++++++++++++++++++++++++ game/server.hpp | 21 ++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 game/server.cpp create mode 100644 game/server.hpp diff --git a/game/server.cpp b/game/server.cpp new file mode 100644 index 0000000..f2cdd77 --- /dev/null +++ b/game/server.cpp @@ -0,0 +1,67 @@ +#include "server.hpp" + +#include "state/commands.hpp" + +#include "util.hpp" + +#include + +Game::Game() +{ + // advance simulation with 100 Hz + m_time_step = 1.0 / 100.0; + m_time_for_next_step = 0.0; + + m_state = new game::State(); + m_state->init(); + + m_state->addPlayer(0); + m_state->addPlayer(1); + m_state->addPlayer(2); + m_state->addPlayer(3); + //m_state->addPlayer(2); +} + +bool Game::cycle(float dt) +{ + static float acc = 0.0; + acc += dt; + + float spawnInterval = 0.1; + while(acc > spawnInterval) { + acc -= spawnInterval; + + float a = 2.0 * M_PI * util::randf_0_1(); + float speed = 0.002; + m_state->players[0]->addCommand(new game::ShootCommand(a, speed)); + } + +#if 1 + if (dt >= 10.0) { + //std::cout<<"time to big: " << dt << std::endl; + dt = m_time_step; + } + + //std::cout<<"adding dt: " << dt << std::endl; + m_time_for_next_step += dt; + + int steps = 0; + while(m_time_for_next_step >= m_time_step) { + //std::cout<<"time now: " << m_time_for_next_step << std::endl; + m_time_for_next_step -= m_time_step; + + m_state->advance(m_time_step); + steps++; + } + + //std::cout << m_time_for_next_step << " s remaining time, " << steps << " steps taken." << std::endl; + + return true; +#else + (void) dt; + + m_state->advance(dt); + + return true; +#endif +} diff --git a/game/server.hpp b/game/server.hpp new file mode 100644 index 0000000..bc02597 --- /dev/null +++ b/game/server.hpp @@ -0,0 +1,21 @@ +#pragma once + +#include "state/state.hpp" + +class Server { +public: + Server(); + + // main method of the game. run this regulary + // return false if want to exit. + // bool cycle(float dt); + + // for rendering +// const game::State *state() const { return m_state; } + +private: + game::State *m_state; + + float m_time_for_next_step; + float m_time_step; +};