diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-01-15 19:35:40 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-01-15 19:35:40 (GMT) |
| commit | 2511afec8bfaa0582928406b37e8b579fa267e4f (patch) | |
| tree | aae1674f5f076db275ec1c6b32271a69cff1489a /src/PowderToy.cpp | |
| parent | 2c9295007a287dc01ff63fcf7b3da141f7474e37 (diff) | |
| download | powder-2511afec8bfaa0582928406b37e8b579fa267e4f.zip powder-2511afec8bfaa0582928406b37e8b579fa267e4f.tar.gz | |
More stuff, better events and starting on interface
Diffstat (limited to 'src/PowderToy.cpp')
| -rw-r--r-- | src/PowderToy.cpp | 66 |
1 files changed, 42 insertions, 24 deletions
diff --git a/src/PowderToy.cpp b/src/PowderToy.cpp index 7ede4d5..1e9630c 100644 --- a/src/PowderToy.cpp +++ b/src/PowderToy.cpp @@ -5,6 +5,7 @@ #include <sstream> #include <string> #include "Config.h" +#include "Global.h" #include "Simulation.h" #include "Renderer.h" #include "Graphics.h" @@ -17,7 +18,6 @@ #include "interface/ControlFactory.h" #include "interface/Point.h" #include "interface/Label.h" -#include "GameSession.h" using namespace std; @@ -44,9 +44,8 @@ SDL_Surface * SDLOpen() return SDL_SetVideoMode(XRES + BARSIZE, YRES + MENUSIZE, 32, SDL_SWSURFACE); } -int SDLPoll(SDL_Event * event) +/*int SDLPoll(SDL_Event * event) { - event->type = 0; while (SDL_PollEvent(event)) { switch (event->type) @@ -56,50 +55,60 @@ int SDLPoll(SDL_Event * event) } } return 0; -} +}*/ int main(int argc, char * argv[]) { int elapsedTime = 0, currentTime = 0, lastTime = 0, currentFrame = 0; - float fps, fpsLimit, delta; + float fps = 0, fpsLimit = 30, delta = 1.0f; //Renderer * ren; //Simulation * sim = new Simulation(); //ren = new Renderer(g, sim); - GameSession * gameSession = new GameSession(); + Global::Ref().g = new Graphics(); + Global::Ref().g->AttachSDLSurface(SDLOpen()); + ui::Engine * engine = &ui::Engine::Ref();//new ui::Engine(); ui::State * engineState = new ui::State(); ui::Sandbox * sandbox = new ui::Sandbox(); ui::Button * button = new ui::Button(ui::Point(100, 100), ui::Point(100, 100), std::string("poP")); ui::Label * fpsLabel = new ui::Label(ui::Point(2, 2), ui::Point(200, 14), std::string("FPS: 0")); - engine->Begin(XRES, YRES, SDLOpen()); + engine->Begin(XRES, YRES); engine->SetState(engineState); engineState->AddComponent(fpsLabel); engineState->AddComponent(sandbox); engineState->AddComponent(button); - //window->Add(ControlFactory::MainMenu(gameSession, 0, 0, 200, 200)); + engineState->AddComponent(ControlFactory::MainMenu(0, YRES+MENUSIZE-17, XRES+BARSIZE, 16)); SDL_Event event; - while(!SDLPoll(&event)) + while(engine->Running()) { - //mouseButton = SDL_GetMouseState(&mouseX, &mouseY); - switch(event.type) + event.type = 0; + while (SDL_PollEvent(&event)) { - case SDL_KEYDOWN: - break; - case SDL_KEYUP: - break; - case SDL_MOUSEMOTION: - engine->onMouseMove(event.motion.x, event.motion.y); - break; - case SDL_MOUSEBUTTONDOWN: - engine->onMouseClick(event.motion.x, event.motion.y, event.button.button); - break; - case SDL_MOUSEBUTTONUP: - engine->onMouseUnclick(event.motion.x, event.motion.y, event.button.button); - break; + switch (event.type) + { + case SDL_QUIT: + engine->Exit(); + break; + case SDL_KEYDOWN: + break; + case SDL_KEYUP: + break; + case SDL_MOUSEMOTION: + engine->onMouseMove(event.motion.x, event.motion.y); + break; + case SDL_MOUSEBUTTONDOWN: + engine->onMouseClick(event.motion.x, event.motion.y, event.button.button); + break; + case SDL_MOUSEBUTTONUP: + engine->onMouseUnclick(event.motion.x, event.motion.y, event.button.button); + break; + } + event.type = 0; //Clear last event } + //mouseButton = SDL_GetMouseState(&mouseX, &mouseY); fpsLabel->LabelText = ""; stringstream fpsText; fpsText << "FPS: " << fps; @@ -111,6 +120,15 @@ int main(int argc, char * argv[]) currentFrame++; currentTime = SDL_GetTicks(); elapsedTime = currentTime - lastTime; + if((currentFrame>2 || elapsedTime > 1000*2/ui::Engine::Ref().FpsLimit) && elapsedTime && currentFrame*1000/elapsedTime > ui::Engine::Ref().FpsLimit) + { + while (currentFrame*1000/elapsedTime > ui::Engine::Ref().FpsLimit) + { + SDL_Delay(1); + currentTime = SDL_GetTicks(); + elapsedTime = currentTime-lastTime; + } + } if(elapsedTime>=1000) { fps = (((float)currentFrame)/((float)elapsedTime))*1000.0f; |
