2016-09-27 16:23:58 +00:00
|
|
|
#include "game.hpp"
|
|
|
|
|
|
|
|
#include "state/commands.hpp"
|
|
|
|
|
|
|
|
#include "util.hpp"
|
|
|
|
|
|
|
|
#include <cmath>
|
|
|
|
|
|
|
|
Game::Game()
|
|
|
|
{
|
|
|
|
// advance simulation with 100 Hz
|
2016-09-27 20:35:16 +00:00
|
|
|
m_time_step = 1.0 / 100.0;
|
2016-09-27 16:23:58 +00:00
|
|
|
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)
|
|
|
|
{
|
2016-09-27 21:07:11 +00:00
|
|
|
static float total = 0.0;
|
2016-09-27 16:23:58 +00:00
|
|
|
static float acc = 0.0;
|
2016-09-27 21:07:11 +00:00
|
|
|
|
|
|
|
//if (total == 0.0) {
|
|
|
|
// float speed = 0.005;
|
|
|
|
// m_state->players[0]->addCommand(new game::SetSpeedCommand(speed));
|
|
|
|
// for (int i=0; i<100; i++) {
|
|
|
|
// float a = 2.0 * M_PI * util::randf_0_1();
|
|
|
|
// m_state->players[0]->addCommand(new game::ShootCommand(a));
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
|
2016-09-27 16:23:58 +00:00
|
|
|
acc += dt;
|
2016-09-27 21:07:11 +00:00
|
|
|
total += dt;
|
2016-09-27 16:23:58 +00:00
|
|
|
|
|
|
|
float spawnInterval = 0.1;
|
|
|
|
while(acc > spawnInterval) {
|
|
|
|
acc -= spawnInterval;
|
|
|
|
|
|
|
|
float a = 2.0 * M_PI * util::randf_0_1();
|
2016-09-27 18:23:33 +00:00
|
|
|
float speed = 0.005;
|
2016-09-27 16:23:58 +00:00
|
|
|
|
2016-09-27 20:35:16 +00:00
|
|
|
m_state->players[0]->addCommand(new game::SetSpeedCommand(speed));
|
|
|
|
m_state->players[0]->addCommand(new game::ShootCommand(a));
|
2016-09-27 21:07:11 +00:00
|
|
|
|
|
|
|
//static bool done = false;
|
|
|
|
//if (total >= 10.0 && !done) {
|
|
|
|
// done = true;
|
|
|
|
|
|
|
|
// m_state->players[0]->addCommand(new game::ClearTracesCommand());
|
|
|
|
//}
|
2016-09-27 16:23:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//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;
|
|
|
|
}
|