-
Notifications
You must be signed in to change notification settings - Fork 0
/
sampleObject.cpp
80 lines (77 loc) · 1.22 KB
/
sampleObject.cpp
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
77
78
79
80
#include "object.hpp"
#include "state_machine.cpp"
class SampleObject : BaseObject, StateMachine<SampleObject>
{
public:
float x, y;
char c;
SampleObject() :
rootEvent(
this,
&SampleObject::update,
std::vector<Event<SampleObject>*>
{
&is_on_screen_event,
&input_event
}
),
is_on_screen_event(
this,
&SampleObject::is_on_screen
),
is_off_screen_event(
this,
&SampleObject::is_off_screen
),
input_event(
this,
&SampleObject::input
),
basicState(
std::vector<Transition<SampleObject>>
{
Transition<SampleObject>(
&rootEvent,
std::vector<void (SampleObject::*)()>
{
&SampleObject::noth
}
),
Transition<SampleObject>
(
&is_off_screen_event,
std::vector<void (SampleObject::*)()>
{
&SampleObject::endgame
}
)
}
)
{};
public:
bool update()
{
return true;
}
bool is_on_screen()
{
return x > 0 && y > 0 && x < 1200 && y < 1200;
}
bool is_off_screen()
{
return !is_on_screen();
}
bool input()
{
return c!=' ';
}
void endgame()
{
exit(0);
}
Event<SampleObject> rootEvent;
Event<SampleObject> is_on_screen_event;
Event<SampleObject> is_off_screen_event;
Event<SampleObject> input_event;
State<SampleObject> basicState;
};