Edited map, new efence tile
[sdlbotor.git] / Game.cpp
blob52bf59f945e9e26d938abf6d0b14a1eebd4baf73
1 #include <time.h>
2 #include <iostream>
3 #include <sstream>
4 #include <assert.h>
5 #include "SDLVideoOut.h"
6 #include "Game.h"
8 namespace botor
11 SDLVideoOut *Game::video = 0;
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()
29 Game::map.load( "map.txt" );
30 Game::player.Teleport( 2,1 );
32 Game::map.Initialize();
36 void Game::DeInitialize()
38 Game::map.unload();
41 void Game::Update()
43 SDL_Event event;
45 while( SDL_PollEvent( &event ) )
47 HandleInput( &event );
48 Game::player.HandleInput( &event );
51 if( Game::player.isAlive() )
53 Game::map.Update();
54 Game::player.Update();
57 if( Game::player.getLives() == 0 )
58 game_is_running = false;
63 void Game::HandleInput( SDL_Event *event )
65 switch (event->type)
67 // exit if the window is closed
68 case SDL_QUIT:
69 game_is_running = false;
70 break;
72 // check for keypresses
73 case SDL_KEYDOWN:
75 // exit if ESCAPE is pressed
76 if (event->key.keysym.sym == SDLK_ESCAPE)
77 game_is_running = false;
78 break;
80 } // end switch
83 void Game::Draw()
85 std::stringstream status;
87 if( !Game::video )
88 return;
90 Game::video->Clear( Game::video->MapRGB( 255, 255, 255 ) );
92 Game::map.Draw( );
94 if(Game::player.isAlive())
95 Game::player.Draw( );
96 else
97 Game::video->DrawString( "You are dead! Press [Enter] to continue!", 0, 0, 255, 0, 0 );
99 status << "Leben: " << Game::player.getLives() << " Pos: " << (int)Game::player.getMapX() << "/" << (int)Game::player.getMapY();
101 Game::video->DrawString( status.str().c_str(), 0, 20, 0, 0, 0 );
104 Game::video->Flip();
108 void Game::run()
110 int loops;
112 Initialize();
114 game_is_running = true;
115 clock_t nextUpdate = clock();
117 while( game_is_running )
119 loops = 0;
121 while( clock() > nextUpdate && loops < MAX_FRAMESKIP )
123 Update();
125 nextUpdate += SKIP_FRAMES;
127 loops++;
130 Draw();
134 DeInitialize();
138 SDLVideoOut *Game::getVideo()
140 return Game::video;
143 Map *Game::getMap()
145 return &Game::map;
148 Player *Game::getPlayer()
150 return &Game::player;