Browse Source

move camera movement state out of game_state structure

master
cinnaboot 8 years ago
parent
commit
d5b52111fc
  1. 48
      src/hexgame.cpp
  2. 24
      src/hexgame.h

48
src/hexgame.cpp

@ -286,7 +286,7 @@ handleMouseDown(SDL_MouseButtonEvent& e, bool gooey_wants)
handleEntityMouseDown(e); handleEntityMouseDown(e);
} }
} else if (e.button == SDL_BUTTON_RIGHT) { } else if (e.button == SDL_BUTTON_RIGHT) {
gs->is_camera_rotate = true; gs->movement.is_camera_rotate = true;
} }
} }
} }
@ -300,7 +300,7 @@ handleMouseUp(SDL_MouseButtonEvent& e, bool gooey_wants)
if (e.button == SDL_BUTTON_LEFT && gs->select_mode == HEX_SELECT) if (e.button == SDL_BUTTON_LEFT && gs->select_mode == HEX_SELECT)
gs->grid.is_selecting = false; gs->grid.is_selecting = false;
else if (e.button == SDL_BUTTON_RIGHT) else if (e.button == SDL_BUTTON_RIGHT)
gs->is_camera_rotate = false; gs->movement.is_camera_rotate = false;
} }
} }
@ -312,7 +312,7 @@ handleMouseMove(SDL_MouseMotionEvent& e, bool gooey_wants)
if (!gooey_wants) { if (!gooey_wants) {
if (gs->select_mode == HEX_SELECT && gs->grid.is_selecting) if (gs->select_mode == HEX_SELECT && gs->grid.is_selecting)
handleHexMouseMove(e); handleHexMouseMove(e);
else if(gs->is_camera_rotate) else if(gs->movement.is_camera_rotate)
cameraRotate(g_render_state->cam, e.xrel, e.yrel); cameraRotate(g_render_state->cam, e.xrel, e.yrel);
} }
} }
@ -334,26 +334,26 @@ processSDLEvents()
case SDL_KEYDOWN: case SDL_KEYDOWN:
switch (e.key.keysym.sym) { switch (e.key.keysym.sym) {
case SDLK_ESCAPE: run = false; break; case SDLK_ESCAPE: run = false; break;
case SDLK_e: gs->is_moveforward = true; break; case SDLK_e: gs->movement.is_moveforward = true; break;
case SDLK_s: gs->is_moveleft = true; break; case SDLK_s: gs->movement.is_moveleft = true; break;
case SDLK_d: gs->is_movebackward = true; break; case SDLK_d: gs->movement.is_movebackward = true; break;
case SDLK_f: gs->is_moveright = true; break; case SDLK_f: gs->movement.is_moveright = true; break;
case SDLK_SPACE: gs->is_moveup = true; break; case SDLK_SPACE: gs->movement.is_moveup = true; break;
case SDLK_c: gs->is_movedown = true; break; case SDLK_c: gs->movement.is_movedown = true; break;
case SDLK_r: gs->is_rotateCW = true; break; case SDLK_r: gs->movement.is_rotateCW = true; break;
case SDLK_w: gs->is_rotateCCW = true; break; case SDLK_w: gs->movement.is_rotateCCW = true; break;
} }
break; break;
case SDL_KEYUP: case SDL_KEYUP:
switch (e.key.keysym.sym) { switch (e.key.keysym.sym) {
case SDLK_e: gs->is_moveforward = false; break; case SDLK_e: gs->movement.is_moveforward = false; break;
case SDLK_s: gs->is_moveleft = false; break; case SDLK_s: gs->movement.is_moveleft = false; break;
case SDLK_d: gs->is_movebackward = false; break; case SDLK_d: gs->movement.is_movebackward = false; break;
case SDLK_f: gs->is_moveright = false; break; case SDLK_f: gs->movement.is_moveright = false; break;
case SDLK_SPACE: gs->is_moveup = false; break; case SDLK_SPACE: gs->movement.is_moveup = false; break;
case SDLK_c: gs->is_movedown = false; break; case SDLK_c: gs->movement.is_movedown = false; break;
case SDLK_r: gs->is_rotateCW = false; break; case SDLK_r: gs->movement.is_rotateCW = false; break;
case SDLK_w: gs->is_rotateCCW = false; break; case SDLK_w: gs->movement.is_rotateCCW = false; break;
} }
break; break;
case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONDOWN:
@ -428,8 +428,14 @@ int main(int argc, char* argv[])
game_state* gs = g_game_state; game_state* gs = g_game_state;
render_state* rs = g_render_state; render_state* rs = g_render_state;
cameraMove(rs->cam, gs->is_moveup, gs->is_moveleft, gs->is_movedown, gs->is_moveright, cameraMove(
gs->is_moveforward, gs->is_movebackward); rs->cam,
gs->movement.is_moveup,
gs->movement.is_moveleft,
gs->movement.is_movedown,
gs->movement.is_moveright,
gs->movement.is_moveforward,
gs->movement.is_movebackward);
renRenderFrame(rs, gs->grid, gs->entities, gs->entity_count); renRenderFrame(rs, gs->grid, gs->entities, gs->entity_count);

24
src/hexgame.h

@ -13,17 +13,9 @@ enum game_select_mode
ENTITY_SELECT ENTITY_SELECT
}; };
struct game_state // TODO: move this state into camera struct?
struct game_camera_movement_state
{ {
hexgrid grid;
uint32 entity_count;
Entity* entities;
// testing entity selection
game_select_mode select_mode;
Entity* selected_entity;
// camera movement controls
bool is_camera_rotate; bool is_camera_rotate;
bool is_moveforward; bool is_moveforward;
bool is_movebackward; bool is_movebackward;
@ -35,3 +27,15 @@ struct game_state
bool is_rotateCCW; bool is_rotateCCW;
}; };
struct game_state
{
hexgrid grid;
uint32 entity_count;
Entity* entities;
game_camera_movement_state movement;
// testing entity selection
game_select_mode select_mode;
Entity* selected_entity;
};

Loading…
Cancel
Save