Core.hpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #pragma once
  2. #include <vector>
  3. #include <SFML/Graphics.hpp>
  4. #include <SFML/Audio.hpp>
  5. #include <tmxlite/Map.hpp>
  6. #include "SFMLOrthogonalLayer.hpp"
  7. #include "Launcher.hpp"
  8. #include "Player.hpp"
  9. #include "IEntity.hpp"
  10. #include "BlockLayer.hpp"
  11. #include "Collider.hpp"
  12. #include "Grid.hpp"
  13. #include "Spike.hpp"
  14. #include "Sand.hpp"
  15. #include "Fruit.hpp"
  16. #define LAYER_COUNT 3
  17. class Core {
  18. public:
  19. Core() = delete;
  20. Core(sf::RenderWindow* window);
  21. virtual ~Core();
  22. score_t getScore(); // TODO why can't I set this to const??;
  23. bool hasQuit();
  24. void run();
  25. private:
  26. void registerEntity(IEntity* entity);
  27. void deregisterEntity(IEntity* entity);
  28. void events();
  29. void update(float delta);
  30. void reset();
  31. enum State {
  32. SPLASH, INGAME, END
  33. };
  34. State m_state;
  35. std::vector<IEntity*> m_entities;
  36. score_t m_score;
  37. bool m_running;
  38. bool m_paused;
  39. Collider m_collider;
  40. Renderer m_renderer;
  41. std::vector<Spike> m_spikes;
  42. std::vector<Sand> m_sand;
  43. std::vector<Fruit> m_fruit;
  44. sf::RenderWindow* m_window;
  45. Player m_player;
  46. BlockLayer m_blockLayer;
  47. Grid m_grid;
  48. sf::Sound m_music;
  49. sf::Sprite m_background;
  50. tmx::Map m_map;
  51. std::array<MapLayer, LAYER_COUNT> m_layer;
  52. sf::Clock m_interlude_clock;
  53. sf::Clock m_fruit_clock;
  54. sf::Clock m_global_clock;
  55. sf::Sprite m_splash;
  56. bool m_victory;
  57. sf::Text m_victory_text;
  58. };