-
Notifications
You must be signed in to change notification settings - Fork 0
/
Object.h
143 lines (105 loc) · 3.89 KB
/
Object.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
#ifndef __OBJECT_H__
#define __OBJECT_H__
// system includes
#include <string>
// engine includes
#include "Position.h"
#include "Event.h"
#include "Sprite.h"
#include "Box.h"
using std::string; // shorten writing strings
namespace df{
enum Solidness {
HARD, // Objects cause collisions and impede.
SOFT, // Objects cause collisions, but don't impede.
SPECTRAL // Objects don't cause collisions.
};
class Object {
private:
int id; // Unique Object identifier.
string type; // User-defined identification.
df::Position pos; // Position in game world.
int altitude; // 0 to MAX supported (lower drawn first).
Solidness solidness; // Solidness of object.
float x_velocity; // Horizontal speed in spaces per step.
float x_velocity_countdown; // Countdown to horizontal movement.
float y_velocity; // Vertical speed in spaces per step.
float y_velocity_countdown; // Countdown to vertical movement.
df::Sprite *p_sprite; // Sprite associated with object.
bool sprite_center; // True if sprite centered on object.
int sprite_index; // Current index frame for sprite.
int sprite_slowdown; // Slowdown rate (1 = no slowdown, 0 = stop).
int sprite_slowdown_count; // Slowdown counter.
Box box; // collision box to use for calculations
public:
// constructor
Object();
// destructor
virtual ~Object();
// Set object id.
void setId(int new_id);
// Get object id.
int getId() const;
// Set type identifier of object.
void setType(string new_type);
// Get type identifier of object.
string getType() const;
// Set Position of object.
void setPosition(df::Position new_pos);
// Get Position of object.
df::Position getPosition() const;
// Handle event (default is to ignore everything).
// Return 0 if ignored, else 1 if handled.
virtual int eventHandler(Event *p_e);
// Set object altitude.
// Checks for in range [0, MAX_ALTITUDE].
// Return 0 if ok, else -1.
int setAltitude(int new_altitude);
// Return object altitude.
int getAltitude() const;
// Get and set velocity (x,y).
void setXVelocity(float new_x_velocity);
float getXVelocity() const;
void setYVelocity(float new_y_velocity);
float getYVelocity() const;
// Perform 1 step of velocity in horizontal direction.
// Return horizontal distance moved this step.
int getXVelocityStep();
// Perform 1 step of velocity in vertical direction.
// Return vertical distance moved this step.
int getYVelocityStep();
bool isSolid(); // True if HARD or SOFT, else false.
// Set object solidness, with checks for consistency.
// Return 0 if ok, else -1.
int setSolidness(Solidness new_solid);
// Return object solidness.
Solidness getSolidness() const;
// Set object Sprite to new one.
// If set_box is true, set bounding box to size of Sprite.
void setSprite(Sprite *p_new_sprite, bool set_box = true);
// Return pointer to Sprite associated with this object.
Sprite *getSprite() const;
// Set Sprite to be centered at object Position (pos).
void setCentered(bool centered = true);
// Indicates if sprite is centered at object Position (pos).
bool isCentered() const;
// Set index of current Sprite frame to be displayed.
void setSpriteIndex(int new_sprite_index);
// Return index of current Sprite frame to be displayed.
int getSpriteIndex() const;
// Slows down sprite animations.
// Sprite slowdown is in multiples of GameManager frame time.
void setSpriteSlowdown(int new_sprite_slowdown);
int getSpriteSlowdown() const;
void setSpriteSlowdownCount(int new_sprite_slowdown_count);
int getSpriteSlowdownCount() const;
// Draw single sprite frame.
// Drawing accounts for: centering, slowdown, advancing Sprite Frame.
virtual void draw();
// Set object's bounding box.
void setBox(Box new_box);
// Get object's bounding box.
Box getBox() const;
};
}
#endif