-
Notifications
You must be signed in to change notification settings - Fork 0
/
World.hpp
77 lines (64 loc) · 1.67 KB
/
World.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/*
* File: World.hpp
* Author: iMer
*
* Created on 23. August 2014, 09:25
*/
#ifndef WORLD_HPP
#define WORLD_HPP
#include "Scene.hpp"
#include "util/Event.hpp"
#include "SFML/Window.hpp"
#include "PauseMenu.hpp"
#include <fstream>
#include <iostream>
class LD30Game;
class World;
class EscHandler : public engine::util::EventHandler<const sf::Event::KeyEvent&> {
private:
World* m_world;
public:
EscHandler(World* world);
virtual void handle(const sf::Event::KeyEvent&);
};
class ChainMouse : public engine::util::EventHandler<const sf::Event::MouseButtonEvent&> {
private:
World* m_world;
engine::Node* m_current;
Json::Value m_root;
std::string m_config;
public:
ChainMouse(World* world) {
m_config = "assets/config/explosion_loop.json";
m_world = world;
m_root["children"] = Json::arrayValue;
m_current = nullptr;
}
virtual ~ChainMouse() {
std::ofstream d;
d.open("out.json");
if (!d.good()) {
std::cerr << "Could not open config file: " << strerror(errno) << std::endl;
} else {
Json::StyledWriter w;
d << w.write(m_root) << std::endl;
}
}
virtual void handle(const sf::Event::MouseButtonEvent&);
};
class World : public engine::Scene {
protected:
bool m_paused;
EscHandler m_escHandler;
ChainMouse m_cm;
PauseMenu* m_pauseMenu;
Node* m_portal;
public:
World(LD30Game* game);
virtual ~World();
virtual void update(sf::Time interval);
void TogglePause();
virtual void draw(sf::RenderTarget& target, sf::RenderStates states, float delta);
Node* GetPortal() const;
};
#endif /* WORLD_HPP */