diff --git a/src/hexgame.cpp b/src/hexgame.cpp index 313bd0b..0a68f2c 100644 --- a/src/hexgame.cpp +++ b/src/hexgame.cpp @@ -286,7 +286,7 @@ handleMouseDown(SDL_MouseButtonEvent& e, bool gooey_wants) handleEntityMouseDown(e); } } 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) gs->grid.is_selecting = false; 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 (gs->select_mode == HEX_SELECT && gs->grid.is_selecting) handleHexMouseMove(e); - else if(gs->is_camera_rotate) + else if(gs->movement.is_camera_rotate) cameraRotate(g_render_state->cam, e.xrel, e.yrel); } } @@ -334,26 +334,26 @@ processSDLEvents() case SDL_KEYDOWN: switch (e.key.keysym.sym) { case SDLK_ESCAPE: run = false; break; - case SDLK_e: gs->is_moveforward = true; break; - case SDLK_s: gs->is_moveleft = true; break; - case SDLK_d: gs->is_movebackward = true; break; - case SDLK_f: gs->is_moveright = true; break; - case SDLK_SPACE: gs->is_moveup = true; break; - case SDLK_c: gs->is_movedown = true; break; - case SDLK_r: gs->is_rotateCW = true; break; - case SDLK_w: gs->is_rotateCCW = true; break; + case SDLK_e: gs->movement.is_moveforward = true; break; + case SDLK_s: gs->movement.is_moveleft = true; break; + case SDLK_d: gs->movement.is_movebackward = true; break; + case SDLK_f: gs->movement.is_moveright = true; break; + case SDLK_SPACE: gs->movement.is_moveup = true; break; + case SDLK_c: gs->movement.is_movedown = true; break; + case SDLK_r: gs->movement.is_rotateCW = true; break; + case SDLK_w: gs->movement.is_rotateCCW = true; break; } break; case SDL_KEYUP: switch (e.key.keysym.sym) { - case SDLK_e: gs->is_moveforward = false; break; - case SDLK_s: gs->is_moveleft = false; break; - case SDLK_d: gs->is_movebackward = false; break; - case SDLK_f: gs->is_moveright = false; break; - case SDLK_SPACE: gs->is_moveup = false; break; - case SDLK_c: gs->is_movedown = false; break; - case SDLK_r: gs->is_rotateCW = false; break; - case SDLK_w: gs->is_rotateCCW = false; break; + case SDLK_e: gs->movement.is_moveforward = false; break; + case SDLK_s: gs->movement.is_moveleft = false; break; + case SDLK_d: gs->movement.is_movebackward = false; break; + case SDLK_f: gs->movement.is_moveright = false; break; + case SDLK_SPACE: gs->movement.is_moveup = false; break; + case SDLK_c: gs->movement.is_movedown = false; break; + case SDLK_r: gs->movement.is_rotateCW = false; break; + case SDLK_w: gs->movement.is_rotateCCW = false; break; } break; case SDL_MOUSEBUTTONDOWN: @@ -428,8 +428,14 @@ int main(int argc, char* argv[]) game_state* gs = g_game_state; render_state* rs = g_render_state; - cameraMove(rs->cam, gs->is_moveup, gs->is_moveleft, gs->is_movedown, gs->is_moveright, - gs->is_moveforward, gs->is_movebackward); + cameraMove( + 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); diff --git a/src/hexgame.h b/src/hexgame.h index bf4b5ee..c983750 100644 --- a/src/hexgame.h +++ b/src/hexgame.h @@ -13,17 +13,9 @@ enum game_select_mode 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_moveforward; bool is_movebackward; @@ -35,3 +27,15 @@ struct game_state 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; +}; +