-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIPlayer.cpp
More file actions
82 lines (70 loc) · 1.69 KB
/
IPlayer.cpp
File metadata and controls
82 lines (70 loc) · 1.69 KB
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
#include "IPlayer.h"
IPlayer::IPlayer(PlayerOrderType type, IGameStateMachine* stateMachine, Board* board)
{
StateMachine = stateMachine;
GameBoard = board;
OrderType = type;
_font.loadFromFile(FONT_PATH);
_checksOutText.setFont(_font);
_checksOutText.setCharacterSize(20);
_checksOutText.setFillColor(sf::Color::Black);
UpdateChecksOutText();
_checksOutText.setPosition(sf::Vector2f(1200.f, 10.f));
}
void IPlayer::Draw(Window* window)
{
UpdateChecksOutText();
window->Draw(_checksOutText);
}
void IPlayer::NextTurn()
{
if (!IsFirstTurnMade())
{
GameBoard->SetFirstTurnMade(OrderType);
}
if (GameBoard->IsGameEnded())
{
StateMachine->SwitchState(GameStateType::EndGame);
return;
}
switch (OrderType)
{
case PlayerOrderType::FirstPlayer:
if (IsOnEndStage(PlayerOrderType::SecondPlayer))
{
StateMachine->SwitchState(GameStateType::SecondPlayerEnd);
}
else
{
StateMachine->SwitchState(GameStateType::SecondPlayer);
}
break;
case PlayerOrderType::SecondPlayer:
if (IsOnEndStage(PlayerOrderType::FirstPlayer))
{
StateMachine->SwitchState(GameStateType::FirstPlayerEnd);
}
else
{
StateMachine->SwitchState(GameStateType::FirstPlayer);
}
break;
}
}
void IPlayer::DebugSetEndStage(bool value)
{
GameBoard->SetOnEndStage(OrderType, value);
Debug::LogWarning("End stage flag set to " + std::to_string(value));
}
short IPlayer::CalculateCellId(short fromId, short turnValue)
{
return GameBoard->CalculateCellId(fromId, turnValue);
}
PossibleTurns IPlayer::CalculatePossibleTurns()
{
return GameBoard->GetAllPossibleTurns(OrderType);
}
void IPlayer::UpdateChecksOutText()
{
_checksOutText.setString(CHECKS_OUT_PLACEHOLDER + std::to_string(GetChecksOut()));
}