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

85 строки
1.1 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. #include "font.h"
  12. /*
  13. * Game implementation class
  14. */
  15. class GameData
  16. {
  17. friend class Game;
  18. private:
  19. Map *map;
  20. Font *font;
  21. int x, y;
  22. int mousex, mousey;
  23. int done;
  24. int frame;
  25. };
  26. /*
  27. * Public Game class
  28. */
  29. Game::Game(char const *mapname)
  30. {
  31. data = new GameData();
  32. data->map = new Map(mapname);
  33. data->font = new Font("gfx/font/ascii.png");
  34. data->x = data->y = 0;
  35. data->done = 0;
  36. data->frame = 0;
  37. }
  38. Game::~Game()
  39. {
  40. delete data->font;
  41. delete data->map;
  42. delete data;
  43. }
  44. void Game::SetMouse(int x, int y)
  45. {
  46. data->mousex = x;
  47. data->mousey = y;
  48. }
  49. void Game::Render()
  50. {
  51. Scene *scene = new Scene();
  52. data->map->Render(scene, data->mousex, data->mousey, 0);
  53. scene->Render();
  54. delete scene;
  55. char buf[1024];
  56. sprintf(buf, "Frame %i", data->frame++);
  57. data->font->Print(10, 10, buf);
  58. }
  59. void Game::Quit()
  60. {
  61. data->done = 1;
  62. }
  63. int Game::Finished()
  64. {
  65. return data->done;
  66. }