From b6f99e64986c39589fdde38596a727bdd245c837 Mon Sep 17 00:00:00 2001 From: Andreas Ortmann Date: Thu, 29 Sep 2016 18:11:00 +0200 Subject: [PATCH] minor improvements for gl error checcking/printing and shot defaults. --- game/game.cpp | 4 +-- game/glclasses.cpp | 38 ++++++++++++++++++++++ game/glclasses.hpp | 10 ++++++ game/renderer_polygon_3d/polygon_model.cpp | 23 ------------- game/state/commands.cpp | 15 ++++++--- 5 files changed, 60 insertions(+), 30 deletions(-) diff --git a/game/game.cpp b/game/game.cpp index 4f05dd0..52cf3cf 100644 --- a/game/game.cpp +++ b/game/game.cpp @@ -44,12 +44,12 @@ bool Game::cycle(float dt) acc += dt; total += dt; - float spawnInterval = 0.1; + float spawnInterval = 0.5; while (acc > spawnInterval) { acc -= spawnInterval; float angle = 360.0 * util::randf_0_1(); - float speed = 0.01; + float speed = 1.; m_state->players.back()->addCommand(new game::SetSpeedCommand(speed)); m_state->players.back()->addCommand(new game::ShootCommand(angle)); diff --git a/game/glclasses.cpp b/game/glclasses.cpp index 51cdd2e..3662012 100644 --- a/game/glclasses.cpp +++ b/game/glclasses.cpp @@ -126,3 +126,41 @@ namespace endofthejedi { return glGetUniformLocation(m_program, name.c_str()); } } + +void printGlError(GLenum err) +{ + if (err != GL_NO_ERROR) { + std::cout << "opengl error is: " << stringFromGlError(err) << std::endl; + } +} + +void discardLastGlError(bool print) +{ + GLenum err = glGetError(); + if (print) { + printGlError(err); + } +} + +// return false if there's an error +bool checkAndPrintGlError() +{ + GLenum err = glGetError(); + + printGlError(err); + + return true; +} + +const char *stringFromGlError(GLenum err) +{ + switch(err) { + case GL_INVALID_ENUM: return "GL_INVALID_ENUM"; break; + case GL_INVALID_VALUE: return "GL_INVALID_VALUE"; break; + case GL_INVALID_OPERATION: return "GL_INVALID_OPERATION"; break; + case GL_OUT_OF_MEMORY: return "GL_OUT_OF_MEMORY"; break; + case GL_INVALID_FRAMEBUFFER_OPERATION: return "GL_INVALID_FRAMEBUFFER_OPERATION"; break; + default: return ""; break; + } +} + diff --git a/game/glclasses.hpp b/game/glclasses.hpp index 7247ae7..03d75f5 100644 --- a/game/glclasses.hpp +++ b/game/glclasses.hpp @@ -93,3 +93,13 @@ TBufferObject(void, map)(GLenum access) { TBufferObject(void, unmap)() { // todo } + +void discardLastGlError(bool print=false); + +// return false if there's an error +bool checkAndPrintGlError(); + +void printGlError(GLenum err); + +const char *stringFromGlError(GLenum err); + diff --git a/game/renderer_polygon_3d/polygon_model.cpp b/game/renderer_polygon_3d/polygon_model.cpp index bc6141e..3bc1347 100644 --- a/game/renderer_polygon_3d/polygon_model.cpp +++ b/game/renderer_polygon_3d/polygon_model.cpp @@ -2,29 +2,6 @@ #include -void discardLastGlError() -{ - glGetError(); -} - -void checkAndPrintGlError() -{ - GLenum err = glGetError(); - const char *errString; - switch(err) { - case GL_INVALID_ENUM: errString = "GL_INVALID_ENUM"; break; - case GL_INVALID_VALUE: errString = "GL_INVALID_VALUE"; break; - case GL_INVALID_OPERATION: errString = "GL_INVALID_OPERATION"; break; - case GL_OUT_OF_MEMORY: errString = "GL_OUT_OF_MEMORY"; break; - case GL_INVALID_FRAMEBUFFER_OPERATION: errString = "GL_INVALID_FRAMEBUFFER_OPERATION"; break; - default: errString = ""; break; - } - - if (err != GL_NO_ERROR) { - std::cout<<"glGetAttribLocation() returned error: " << errString << std::endl; - } -} - namespace endofthejedi { PolygonModel::PolygonModel(const std::string &filename) : m_filename(filename) diff --git a/game/state/commands.cpp b/game/state/commands.cpp index 1c6b434..7f59d18 100644 --- a/game/state/commands.cpp +++ b/game/state/commands.cpp @@ -8,14 +8,16 @@ namespace game { void ShootCommand::apply(Player *player, State *state) const { - //std::cout<<"apply command " << name() << std::endl; - // TODO: idea // shoot multiple rockets at once or from different positions after // level up / upgrade ... // angles are supplied in degrees and are CCW - Missile *missile = new Missile(player, player->ship->position, -util::deg2rad(m_angle), player->speed); + Missile *missile = new Missile( + player, + player->ship->position, + -util::deg2rad(m_angle), + 0.005*player->speed); Trace *trace = new Trace(missile); missile->trace = trace; @@ -30,9 +32,7 @@ namespace game { { (void) state; - // TODO return player->alive && player->energy >= player->speed; - //return player->alive; } void ChangeNameCommand::apply(Player *player, State *state) const @@ -51,6 +51,11 @@ namespace game { void SetSpeedCommand::apply(Player *player, State *state) const { (void) state; + + if (m_speed < 0.0) { + return; + } + player->speed = m_speed; }