-
Notifications
You must be signed in to change notification settings - Fork 0
/
checkpoints.h
executable file
·81 lines (70 loc) · 1.64 KB
/
checkpoints.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
#ifndef CHECKPOINTS_H
#define CHECKPOINTS_H
#include "base/object.h"
#include "base/creator.h"
#include "base/timer.h"
#include <SDL/SDL.h>
#include <vector>
#include <map>
class Checkpoints : public GameObject
{
public:
Checkpoints(const std::string&, int, int, SDL_Rect*);
~Checkpoints();
void draw(SDL_Surface*);
void update();
protected:
std::map<std::string, SDL_Surface*> images;
Timer timer;
SDL_Rect* viewport;
int cur_image;
std::string state;
Timer state_timer;
};
class Checkpoint : public Checkpoints
{
public:
Checkpoint(int, int, SDL_Rect*);
void update();
void bump(const std::string& flag = "");
class Creator : public ObjectCreator
{
public:
GameObject* operator()(int _x, int _y)
{
return new Checkpoint(_x, _y, (SDL_Rect*)getParameter("game viewport"));
}
};
};
class Start : public Checkpoints
{
public:
Start(int, int, SDL_Rect*);
void update();
void bump(const std::string& flag = "");
class Creator : public ObjectCreator
{
public:
GameObject* operator()(int _x, int _y)
{
return new Start(_x, _y, (SDL_Rect*)getParameter("game viewport"));
}
};
private:
bool first;
int delay;
};
class End : public Start
{
public:
End(int, int, SDL_Rect*);
class Creator : public ObjectCreator
{
public:
GameObject* operator()(int _x, int _y)
{
return new End(_x, _y, (SDL_Rect*)getParameter("game viewport"));
}
};
};
#endif // CHECKPOINTS_H