/minild29

To get this branch, use:
bzr branch http://9ix.org/bzr/minild29
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();
  }

}