123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #pragma once
- #include <vector>
- #include <SFML/Graphics.hpp>
- #include <SFML/Audio.hpp>
- #include <tmxlite/Map.hpp>
- #include "SFMLOrthogonalLayer.hpp"
- #include "Launcher.hpp"
- #include "Player.hpp"
- #include "IEntity.hpp"
- #include "BlockLayer.hpp"
- #include "Collider.hpp"
- #include "Grid.hpp"
- #include "Spike.hpp"
- #include "Sand.hpp"
- #include "Fruit.hpp"
- #define LAYER_COUNT 3
- class Core {
- public:
- Core() = delete;
- Core(sf::RenderWindow* window);
- virtual ~Core();
- score_t getScore(); // TODO why can't I set this to const??;
- bool hasQuit();
- void run();
- private:
- void registerEntity(IEntity* entity);
- void deregisterEntity(IEntity* entity);
- void events();
- void update(float delta);
- void reset();
-
- enum State {
- SPLASH, INGAME, END
- };
- State m_state;
-
- std::vector<IEntity*> m_entities;
-
- score_t m_score;
- bool m_running;
- bool m_paused;
-
- Collider m_collider;
- Renderer m_renderer;
- std::vector<Spike> m_spikes;
- std::vector<Sand> m_sand;
- std::vector<Fruit> m_fruit;
-
- sf::RenderWindow* m_window;
- Player m_player;
-
- BlockLayer m_blockLayer;
- Grid m_grid;
-
- sf::Sound m_music;
-
- sf::Sprite m_background;
- tmx::Map m_map;
- std::array<MapLayer, LAYER_COUNT> m_layer;
-
- sf::Clock m_interlude_clock;
- sf::Clock m_fruit_clock;
- sf::Clock m_global_clock;
-
- sf::Sprite m_splash;
- bool m_victory;
- sf::Text m_victory_text;
- };
|