97 lines
1.3 KiB

  1. //
  2. // Deus Hax (working title)
  3. // Copyright (c) 2010 Sam Hocevar <sam@hocevar.net>
  4. //
  5. #if defined HAVE_CONFIG_H
  6. # include "config.h"
  7. #endif
  8. #include <cstdio>
  9. #include "game.h"
  10. #include "map.h"
  11. /*
  12. * Game implementation class
  13. */
  14. class GameData
  15. {
  16. friend class Game;
  17. private:
  18. Map *map;
  19. int x, y;
  20. int mousex, mousey;
  21. int done;
  22. Scene *scene;
  23. };
  24. /*
  25. * Public Game class
  26. */
  27. Game::Game(char const *mapname)
  28. {
  29. data = new GameData();
  30. data->map = new Map(mapname);
  31. data->x = data->y = 0;
  32. data->done = 0;
  33. data->scene = NULL;
  34. }
  35. Game::~Game()
  36. {
  37. delete data->map;
  38. delete data;
  39. }
  40. Asset::Group Game::GetGroup()
  41. {
  42. return Asset::GetGroup();
  43. }
  44. void Game::TickGame(float delta_time)
  45. {
  46. Asset::TickGame(delta_time);
  47. }
  48. void Game::TickRender(float delta_time)
  49. {
  50. Asset::TickRender(delta_time);
  51. GetScene();
  52. data->map->Render(data->scene, data->mousex, data->mousey, 0);
  53. data->scene->Render();
  54. delete data->scene;
  55. data->scene = NULL;
  56. }
  57. Scene *Game::GetScene()
  58. {
  59. if (!data->scene)
  60. data->scene = new Scene();
  61. return data->scene;
  62. }
  63. void Game::SetMouse(int x, int y)
  64. {
  65. data->mousex = x;
  66. data->mousey = y;
  67. }
  68. void Game::Quit()
  69. {
  70. data->done = 1;
  71. }
  72. int Game::Finished()
  73. {
  74. return data->done;
  75. }