Player : MapObject
[sdlbotor.git] / Game.cpp
blob340ada2f6225323fb74d994c16c4a20e1404ac74
1 #include <time.h>
2 #include <iostream>
3 #include <assert.h>
4 #include "SDLVideoOut.h"
5 #include "Game.h"
7 namespace botor
10 SDLVideoOut *Game::video = 0;
11 Tileset Game::tileset;
12 Map Game::map;
13 Player Game::player;
16 Game::Game()
18 Game::video = new SDLVideoOut( 800, 600, 32 );
21 Game::~Game()
23 delete Game::video;
26 void Game::Initialize()
28 Game::tileset.load( "global.bmp" );
29 Game::map.load( "map.txt" );
30 Game::player.Teleport( 2,1 );
33 void Game::DeInitialize()
35 Game::map.unload();
36 SDL_FreeSurface( bmp );
39 void Game::Update()
41 SDL_Event event;
43 while( SDL_PollEvent( &event ) )
45 HandleInput( &event );
46 Game::player.HandleInput( &event );
49 Game::map.Update();
50 Game::player.Update();
55 void Game::HandleInput( SDL_Event *event )
57 switch (event->type)
59 // exit if the window is closed
60 case SDL_QUIT:
61 game_is_running = false;
62 break;
64 // check for keypresses
65 case SDL_KEYDOWN:
67 // exit if ESCAPE is pressed
68 if (event->key.keysym.sym == SDLK_ESCAPE)
69 game_is_running = false;
70 break;
72 } // end switch
75 void Game::Draw()
77 if( !Game::video )
78 return;
80 Game::video->Clear( Game::video->MapRGB( 255, 255, 255 ) );
82 Game::map.Draw( );
84 Game::player.Draw( );
86 Game::video->Flip();
91 void Game::run()
93 int loops;
95 Initialize();
97 game_is_running = true;
99 nextUpdate = clock();
101 while( game_is_running )
103 loops = 0;
105 while( clock() > nextUpdate && loops < MAX_FRAMESKIP )
107 Update();
109 nextUpdate += SKIP_FRAMES;
111 loops++;
114 Draw();
117 DeInitialize();
121 SDLVideoOut *Game::getVideo()
123 return Game::video;
126 Tileset *Game::getTileset()
128 return &Game::tileset;
131 Map *Game::getMap()
133 return &Game::map;
136 Player *Game::getPlayer()
138 return &Game::player;