sound is so buggy.

This commit is contained in:
Andreas Ortmann 2016-10-03 18:45:24 +02:00
parent becf8602d7
commit 550556e0e4
12 changed files with 303 additions and 160 deletions

View file

@ -14,7 +14,7 @@ namespace game {
// angles are supplied in degrees and are CCW
Missile *missile = new Missile(
state->generateMissileId(),
state->generateId(),
player,
player->ship->position,
-util::deg2rad(m_angle),
@ -30,7 +30,8 @@ namespace game {
{
(void) state;
return player->alive && player->energy >= player->speed;
//return player->alive && player->energy >= player->speed;
return player->alive;
}
void ChangeNameCommand::apply(Player *player, State *state) const
@ -76,6 +77,8 @@ namespace game {
void DeveloperCommand::apply(Player *player, State *state) const
{
(void) player;
if (!state->developerMode()) {
std::cout<<"ignoring dev command while not in developer mode: '"
<< m_payload << "'" << std::endl;
@ -96,6 +99,7 @@ namespace game {
void SetDeveloperModeCommand::apply(Player *player, State *state) const
{
(void) player;
// TODO: check if player is admin
state->setDeveloperMode(m_enable);

View file

@ -32,9 +32,6 @@ namespace game {
// TODO: clear shots etc. too
m_nextPlayerId = 0;
m_nextMissileId = 0;
m_nextShipId = 0;
m_time = 0.0;
m_shipRadius = 0.02;
m_maxMissileDistance = 2.0;
@ -42,7 +39,6 @@ namespace game {
m_defaultEnergy = 10.0;
m_maxNumTraces = 10;
m_developerMode = devMode;
m_nextExplosionId = 0;
setPlayingFieldCenter(0, 0);
@ -144,7 +140,7 @@ namespace game {
return false;
}
Ship *ship = new Ship(m_nextShipId++, spawnPos, m_shipRadius);
Ship *ship = new Ship(generateId(), spawnPos, m_shipRadius);
player->ship = ship;
ships.push_back(ship);
@ -157,7 +153,7 @@ namespace game {
size_t State::addPlayer()
{
Player *player = new Player(m_nextPlayerId++);
Player *player = new Player(generateId());
players.push_back(player);
return player->id;
}
@ -483,7 +479,7 @@ namespace game {
}
Explosion *explosion = new Explosion(
m_nextExplosionId++, evt->position,
generateId(), evt->position,
evt->missileVelocity, evt->hit);
explosions.push_back(explosion);
@ -519,9 +515,9 @@ namespace game {
m_playingFieldSize = glm::vec2(width, height);
}
size_t State::generateMissileId()
size_t State::generateId()
{
return m_nextMissileId++;
return m_ids.makeNextId();
}
void State::applyAndClearAllOldStateUpdates()
@ -532,8 +528,8 @@ namespace game {
case EventType::Explosion:
{
ExplosionEvent *ee = static_cast<ExplosionEvent*>(evt);
//std::cout<<"got explosion delete event, finally deleting explosion #"
// << ee->explosion->id << std::endl;
std::cout<<"got explosion delete event, finally deleting explosion #"
<< ee->object()->id << std::endl;
delete(ee->object());
}
@ -542,8 +538,8 @@ namespace game {
case EventType::Missile:
{
auto *me = static_cast<MissileEvent*>(evt);
//std::cout<<"got missile delete event, finally deleting missile #"
// << me->missile->id << std::endl;
std::cout<<"got missile delete event, finally deleting missile #"
<< me->object()->id << std::endl;
delete(me->object());
}

View file

@ -35,6 +35,25 @@ namespace game {
class Trace;
class Explosion;
class IdGenerator {
public:
IdGenerator() : m_nextId(0)
{
}
size_t makeNextId()
{
return m_nextId++;
if (m_nextId == 0) {
std::cerr << "note: id counter just wrapped to 0, "
"funny things can happen now." << std::endl;
}
}
private:
size_t m_nextId;
};
class State {
public:
/*************************************************************************/
@ -105,7 +124,7 @@ namespace game {
void setPlayingFieldSize(int width, int height);
void setPlayingFieldCenter(int width, int height);
size_t generateMissileId();
size_t generateId();
void applyAndClearAllOldStateUpdates();
@ -159,10 +178,7 @@ namespace game {
float m_shipRadius;
float m_defaultEnergy;
int m_maxNumTraces;
size_t m_nextPlayerId;
size_t m_nextExplosionId;
size_t m_nextMissileId;
size_t m_nextShipId;
IdGenerator m_ids;
float m_time;
bool m_developerMode;