Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

96 строки
1.2 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 "core.h"
  10. /*
  11. * Game implementation class
  12. */
  13. class GameData
  14. {
  15. friend class Game;
  16. private:
  17. Map *map;
  18. int x, y;
  19. int mousex, mousey;
  20. int done;
  21. Scene *scene;
  22. };
  23. /*
  24. * Public Game class
  25. */
  26. Game::Game(char const *mapname)
  27. {
  28. data = new GameData();
  29. data->map = new Map(mapname);
  30. data->x = data->y = 0;
  31. data->done = 0;
  32. data->scene = NULL;
  33. }
  34. Game::~Game()
  35. {
  36. delete data->map;
  37. delete data;
  38. }
  39. Entity::Group Game::GetGroup()
  40. {
  41. return Entity::GetGroup();
  42. }
  43. void Game::TickGame(float deltams)
  44. {
  45. Entity::TickGame(deltams);
  46. }
  47. void Game::TickDraw(float deltams)
  48. {
  49. Entity::TickDraw(deltams);
  50. GetScene();
  51. data->map->Render(data->scene, -data->mousex, -data->mousey, 0);
  52. data->scene->Render();
  53. delete data->scene;
  54. data->scene = NULL;
  55. }
  56. Scene *Game::GetScene()
  57. {
  58. if (!data->scene)
  59. data->scene = new Scene();
  60. return data->scene;
  61. }
  62. void Game::SetMouse(int x, int y)
  63. {
  64. data->mousex = x;
  65. data->mousey = y;
  66. }
  67. void Game::Quit()
  68. {
  69. data->done = 1;
  70. }
  71. int Game::Finished()
  72. {
  73. return data->done;
  74. }