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
|
#include "Dark.h"
namespace Dark
{
Player::Player() : Entity(),
VELOCITY(150.0f)
{
sprite = new SpriteAnimation("player.png", FILTER_NONE, 64, 64);
sprite->Add("idle", 0, 0, 0.35f);
sprite->Play("idle");
SetGraphic(sprite);
AddTag("player");
SetCollider(new RectangleCollider(32, 32));
}
void Player::Update()
{
Entity::Update();
//Scene::GetCamera()->position = position;
//...
}
// Scene
DarkScene::DarkScene() : Scene()
{
}
void DarkScene::Begin()
{
Scene::Begin();
Graphics::Set2D(1024, 768);
Text *inst2 = new Text("Press ESC to quit");
inst2->position = Vector2(-492, -354); // 20px h, 30px v from U-L corner
Add(inst2);
Input::DefineMaskKey("left", KEY_LEFT);
Input::DefineMaskKey("right", KEY_RIGHT);
Input::DefineMaskKey("up", KEY_UP);
Input::DefineMaskKey("down", KEY_DOWN);
Input::DefineMaskKey("up", KEY_W);
Input::DefineMaskKey("left", KEY_A);
Input::DefineMaskKey("down", KEY_S);
Input::DefineMaskKey("right", KEY_D);
// level editor
Add( levelEditor = new LevelEditor() );
levelEditor->Disable();
// load level from files
Level::LoadProject("project.xml");
Level::Load("level.xml", this);
Player *player = new Player;
player->position = Graphics::GetScreenCenter();
Add(player);
Graphics::SetBackgroundColor(Color::green * 0.2f);
}
void DarkScene::Update()
{
Scene::Update();
if (Input::IsKeyPressed(KEY_ESCAPE))
Game::Quit();
if (isPaused)
{
if (Input::IsKeyPressed(KEY_S) && Input::IsKeyHeld(KEY_LCTRL))
Level::Save();
if (Input::IsKeyPressed(KEY_A))
Scene::GetCamera()->position.x -= 600;
if (Input::IsKeyPressed(KEY_D))
Scene::GetCamera()->position.x += 600;
}
if (Input::IsKeyPressed(KEY_TAB))
{
// if we're not doing anything in the levelEditor...
if (levelEditor->GetState() == FTES_NONE)
{
isPaused = !isPaused;
if (isPaused)
levelEditor->Enable();
else
levelEditor->Disable();
}
}
}// DarkScene::Update
Text::Text(const std::string& text, FontAsset* font)
: Entity(), text(text)
{
if (font == NULL)
this->font = Assets::RequestFont("LiberationSans-Regular.ttf", 18.0f);
else
this->font = font;
}
void Text::Render()
{
Graphics::PushMatrix();
// place text directly relative to camera
Graphics::Translate(scene->GetCamera()->position + position);
Graphics::SetBlend(BLEND_ALPHA);
Graphics::SetColor(Color::white);
Graphics::BindFont(font);
Graphics::RenderText(*font, text, 0, 0);
Graphics::PopMatrix();
}
}
|