-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGameObject.cpp
More file actions
82 lines (70 loc) · 1.93 KB
/
GameObject.cpp
File metadata and controls
82 lines (70 loc) · 1.93 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
//GameObject.cpp -- implementation file for GameObject class
//updated 2016/05/16
//Good Day Fishing
//a game written by Jean Park
//created April 2016
#include "GameObject.hpp"
GameObject::GameObject()
: head_x(0)
, head_y(0)
, is_leftward_(true)
, x_velocity_(0)
, y_velocity_(0)
, state(GameObjectState::dead) {
}
GameObject::GameObject(const Species &newSpecies)
: head_x(0)
, head_y(0)
, is_leftward_(false)
, x_velocity_(1)
, y_velocity_(0)
, state(GameObjectState::alive)
, species(&newSpecies) {
}
void GameObject::update() {
head_x += x_velocity_;
head_y += y_velocity_;
killOffscreen();
}
void GameObject::killOffscreen() {
// @ @
// <>< kill here ><> kill here
// <><@ already dead @><> already dead
// @ @
if (x_velocity_ < 0 && head_x < WorldConstant::STAGE_FIRST_X - width() + 1 ||
x_velocity_ > 0 && head_x > WorldConstant::STAGE_LAST_X + width() - 1) {
kill();
}
}
void GameObject::revive() {
state = GameObjectState::alive;
is_leftward_ = false;
x_velocity_ = 1;
y_velocity_ = 0;
}
void GameObject::reverse() {
is_leftward_ = !is_leftward_;
x_velocity_ = -x_velocity_;
}
void GameObject::sink() {
state = GameObjectState::caught;
x_velocity_ = 0;
y_velocity_ = 1;
}
void GameObject::reel() {
state = GameObjectState::caught;
x_velocity_ = 0;
y_velocity_ = -1;
}
void GameObject::kill() {
state = GameObjectState::dead;
x_velocity_ = 0;
y_velocity_ = 0;
}
void GameObject::draw(World &world) {
(is_leftward_) ?
species->sprite_left.draw(world, head_x, head_y) :
species->sprite_right.draw(world,
//head_x - (size - 1) example object: "bbbx" size = 4, where x == head_x and b = body
head_x + 1 - species->sprite_right.maxWidth(), head_y);
}