-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPhaseState.h
176 lines (142 loc) · 3.18 KB
/
PhaseState.h
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#pragma once
#include "Game.h"
#define CONSTRUCTOR_WITH_TYPE(__TYPE__) /*__TYPE__::*/__TYPE__(){ phase_name=#__TYPE__;}
class Game;
class PhaseState
{
public:
Game *game;
std::string phase_name;
bool expired;
PhaseState();
virtual void OnEnter();
virtual void Update(sf::Time dt);
virtual void OnExit();
void Log();
};
class PrepareState : public PhaseState
{
public:
CONSTRUCTOR_WITH_TYPE(PrepareState);
void OnEnter() override;
void Update(sf::Time dt) override;
};
class DispatchState : public PhaseState
{
public:
CONSTRUCTOR_WITH_TYPE(DispatchState);
void OnEnter() override;
void Update(sf::Time dt) override;
};
class ValidateGameState : public PhaseState
{
public:
CONSTRUCTOR_WITH_TYPE(ValidateGameState);
void OnEnter() override;
};
class PrecompleteState : public PhaseState
{
public:
CONSTRUCTOR_WITH_TYPE(PrecompleteState);
void OnEnter() override;
};
class PutState : public PhaseState
{
public:
CONSTRUCTOR_WITH_TYPE(PutState);
//void OnEnter() override;
void Update(sf::Time dt);
void Put(Card *card);
};
class DrawState : public PhaseState
{
public:
CONSTRUCTOR_WITH_TYPE(DrawState);
void OnEnter() override;
};
class SelectPutTargetState : public PhaseState
{
public:
CONSTRUCTOR_WITH_TYPE(SelectPutTargetState);
void OnEnter() override;
void Update(sf::Time dt) override ;
void SelectPutTarget(Card *card);
};
class SelectDrawTargetState : public PhaseState
{
public:
CONSTRUCTOR_WITH_TYPE(SelectDrawTargetState);
void OnEnter() override;
void select_draw_target(Card* card);
void Update(sf::Time dt) override ;
};
// class PutMoveToFieldState: public PhaseState
// {
// public:
// void Update(sf::Time dt) override;
// };
class PutMoveToTargetState : public PhaseState
{
public:
CONSTRUCTOR_WITH_TYPE(PutMoveToTargetState);
void Update(sf::Time dt) override;
};
// class DrawMoveToFieldState : public PhaseState
// {
// public:
// void Update(sf::Time dt) override;
// };
class DrawMoveToTargetState : public PhaseState
{
public:
CONSTRUCTOR_WITH_TYPE(DrawMoveToTargetState);
void Update(sf::Time dt) override;
};
class PutGetState : public PhaseState
{
public:
CONSTRUCTOR_WITH_TYPE(PutGetState);
void OnEnter() override;
void Update(sf::Time dt) override;
};
class DrawGetState : public PhaseState
{
public:
void OnEnter() override ;
void Update(sf::Time dt) override;
};
class EndTurnState : public PhaseState
{
public:
CONSTRUCTOR_WITH_TYPE(EndTurnState);
void OnEnter() override;
};
class CheckWinState : public PhaseState
{
public:
CONSTRUCTOR_WITH_TYPE(CheckWinState);
void OnEnter() override;
};
class KoikoiState : public PhaseState
{
public:
CONSTRUCTOR_WITH_TYPE(KoikoiState);
void OnEnter() override;
void Update(sf::Time dt) override;
};
class SummaryState : public PhaseState
{
public:
CONSTRUCTOR_WITH_TYPE(SummaryState);
void OnEnter() override;
void Update(sf::Time dt) override;
};
class EndGameState : public PhaseState
{
};
class WaitIntervalState : public PhaseState
{
public:
CONSTRUCTOR_WITH_TYPE(WaitIntervalState);
void Update(sf::Time dt) override;
};