-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSaucer.cpp
More file actions
104 lines (79 loc) · 2.36 KB
/
Saucer.cpp
File metadata and controls
104 lines (79 loc) · 2.36 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
// system includes
#include <stdlib.h>
// game engine includes
#include "EventOut.h"
#include "EventCollision.h"
#include "EventKeyboard.h"
#include "LogManager.h"
#include "ResourceManager.h"
#include "WorldManager.h"
#include "GameManager.h"
// tester includes
#include "Saucer.h"
Saucer::Saucer(std::string spriteName){
// Dragonfly managers needed for this method.
df::LogManager &log_manager = df::LogManager::getInstance();
df::ResourceManager &resource_manager = df::ResourceManager::getInstance();
df::WorldManager &world_manager = df::WorldManager::getInstance();
// Setup "saucer" sprite.
df::Sprite *p_temp_sprite = resource_manager.getSprite(spriteName);
if (!p_temp_sprite) {
log_manager.writeLog("Saucer::Saucer(): Warning! Sprite '%s' not found",
"saucer");
}
else {
setSprite(p_temp_sprite);
setSpriteSlowdown(4);
}
this->spriteName = spriteName;
// Set object type.
setType("Saucer");
// Set speed in horizontal direction.
setXVelocity(-0.5); // 1 space left every 4 frames
moveToStart();
}
Saucer::~Saucer(){
}
int Saucer::eventHandler(df::Event *p_e) {
df::LogManager::getInstance().writeLog("id: %3d, x: %3d, y: %3d\n", getId(), getPosition().getX(), getPosition().getY());
if (p_e->getType() == DF_OUT_EVENT) {
df::LogManager::getInstance().writeLog("out event\n");
out();
return 1;
}
// collision event
if (p_e->getType() == DF_COLLISION_EVENT) {
return 1;
}
if (count == -1){
moveToStart();
count++;
}
if (p_e->getType() == df::DF_KEYBOARD_EVENT){
df::GameManager::getInstance().setGameOver();
df::WorldManager::getInstance().markForDelete(this);
}
return 0;
}
void Saucer::hit(const df::EventCollision *p_c) {
}
void Saucer::out() {
df::LogManager::getInstance().writeLog("in out function\n");
if (getPosition().getX() > 1)
return;
count = -1;
}
void Saucer::moveToStart() {
df::WorldManager &world_manager = df::WorldManager::getInstance();
df::GraphicsManager &graphics_manager = df::GraphicsManager::getInstance();
df::Position temp_pos;
// get boundary position
int world_horiz = graphics_manager.getHorizontal();
int world_vert = graphics_manager.getVertical();
// x is off right side of window
temp_pos.setX(world_horiz + 3 + rand() % world_horiz);
// y is in vertical range.
temp_pos.setY(rand() % (world_vert - 4) + 4);
// move saucer to new position
world_manager.moveObject(this, temp_pos);
}