Repository navigation
Expand file tree
/
Copy pathCoatingObject.cpp
More file actions
106 lines (87 loc) · 2.94 KB
/
Copy pathCoatingObject.cpp
File metadata and controls
106 lines (87 loc) · 2.94 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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include "AllRtmClasses.h"
rtm::CoatingObject::CoatingObject()
: CoatingObject{ nullptr, 0.f, 0.f, Up, 0.f, { false, false, false, false } }
{}
rtm::CoatingObject::CoatingObject(cocos2d::Sprite* const sprite, int column, int row,
AngleType angle, float resistance, Directions directions)
: sprite_(nullptr)
, x_(CellToPixel(column))
, y_(CellToPixel(row))
, resistance_(resistance)
, directions_(directions)
{
SetSprite_(sprite);
if (angle == Right) {
sprite_->setRotation(RAD_DEG * ANGLE_RIGHT);
std::swap(directions_[Up], directions_[Left]);
std::swap(directions_[Left], directions_[Down]);
std::swap(directions_[Down], directions_[Right]);
std::swap(directions_[UpRight], directions_[UpLeft]);
std::swap(directions_[UpLeft], directions_[DownLeft]);
std::swap(directions_[DownLeft], directions_[DownRight]);
}
else if (angle == Down) {
sprite_->setRotation(RAD_DEG * ANGLE_DOWN);
std::swap(directions_[Up], directions_[Down]);
std::swap(directions_[Right], directions_[Left]);
std::swap(directions_[UpRight], directions_[DownLeft]);
std::swap(directions_[DownRight], directions_[UpLeft]);
}
else if (angle == Left) {
sprite_->setRotation(RAD_DEG * ANGLE_LEFT);
std::swap(directions_[Up], directions_[Right]);
std::swap(directions_[Right], directions_[Down]);
std::swap(directions_[Down], directions_[Left]);
std::swap(directions_[UpRight], directions_[DownRight]);
std::swap(directions_[DownRight], directions_[DownLeft]);
std::swap(directions_[DownLeft], directions_[UpLeft]);
}
availableDirections_ = directions_;
}
rtm::CoatingObject::CoatingObject(std::string const& filename, int column, int row,
AngleType angle, float resistance, Directions directions)
: CoatingObject{ cocos2d::Sprite::create(filename), column, row, angle, resistance, directions }
{}
cocos2d::Sprite* rtm::CoatingObject::GetSprite() const
{
return sprite_;
}
float rtm::CoatingObject::GetResistance() const
{
return resistance_;
}
bool rtm::CoatingObject::HasDirection(AngleType angle) const
{
return directions_[angle];
}
bool rtm::CoatingObject::IsDirectionAvailable(AngleType angle) const
{
return availableDirections_[angle];
}
void rtm::CoatingObject::SetDirectionAvailability(AngleType angle, bool status)
{
availableDirections_[angle] = status;
}
void rtm::CoatingObject::SetSprite_(cocos2d::Sprite* const sprite)
{
sprite_ = sprite;
if (sprite_ != nullptr) {
sprite_->setAnchorPoint(cocos2d::Vec2(0.5, 0.5));
sprite_->setPositionX(x_);
sprite_->setPositionY(y_);
}
}
void rtm::CoatingObject::SetX_(float x)
{
x_ = x;
if (sprite_ != nullptr) {
sprite_->setPositionX(x);
}
}
void rtm::CoatingObject::SetY_(float y)
{
y_ = y;
if (sprite_ != nullptr) {
sprite_->setPositionY(y);
}
}