r93 - trunk/src
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Tue Feb 22 08:51:28 EST 2005
Author: jonas
Date: 2005-02-22 08:51:28 -0500 (Tue, 22 Feb 2005)
New Revision: 93
Modified:
trunk/src/input.cpp
trunk/src/input.h
trunk/src/lost_penguins.cpp
Log:
moved game state decisions up to the main loop, reorganized input.*
Modified: trunk/src/input.cpp
===================================================================
--- trunk/src/input.cpp 2005-02-22 13:36:33 UTC (rev 92)
+++ trunk/src/input.cpp 2005-02-22 13:51:28 UTC (rev 93)
@@ -69,14 +69,6 @@
state&=~INPUT_SP2;
break;
}
- case SDLK_TAB: {
- state&=~INPUT_PAUSE;
- break;
- }
- case SDLK_ESCAPE: {
- state&=~INPUT_MENU;
- break;
- }
case SDLK_RETURN: {
if (state&INPUT_ACT) setState(INPUTR_ACT);
state&=~INPUT_ACT;
@@ -152,19 +144,10 @@
break;
}
case SDLK_ESCAPE: {
- if (state&INPUT_MENU) {
- break;
- } else if (menu) {
- state|=INPUT_MENU;
- if (!closeMenu()) {
- gfxeng->renderScene(true);
- scenario->physic->resetTime();
- sfxeng->resumeMusic();
- }
- } else {
- state|=INPUT_MENU;
- sfxeng->pauseMusic();
- menu=new GameMenu();
+ if (!closeMenu()) {
+ gfxeng->renderScene(true);
+ scenario->physic->resetTime();
+ sfxeng->resumeMusic();
}
gfxeng->updateMenu();
break;
@@ -192,7 +175,7 @@
}
}
-void InputHandler::pollEvents() {
+void InputHandler::pollPEvents() {
SDL_Event event;
while(SDL_PollEvent(&event)) {
@@ -239,14 +222,6 @@
state&=~INPUT_SP2;
break;
}
- case SDLK_TAB: {
- state&=~INPUT_PAUSE;
- break;
- }
- case SDLK_ESCAPE: {
- state&=~INPUT_MENU;
- break;
- }
case SDLK_RETURN: {
if (state&INPUT_ACT) setState(INPUTR_ACT);
state&=~INPUT_ACT;
@@ -313,36 +288,14 @@
}
//change game state!
case SDLK_TAB: {
- if (state&INPUT_PAUSE) {
- break;
- } else if (paused) {
- state|=INPUT_PAUSE;
- paused=false;
- scenario->physic->resetTime();
- sfxeng->resumeMusic();
- } else {
- state|=INPUT_PAUSE;
- paused=true;
- sfxeng->playWAV(au_pause);
- sfxeng->pauseMusic();
- }
+ paused=false;
+ scenario->physic->resetTime();
+ sfxeng->resumeMusic();
break;
}
case SDLK_ESCAPE: {
- if (state&INPUT_MENU) {
- break;
- } else if (menu) {
- state|=INPUT_MENU;
- if (!closeMenu()) {
- gfxeng->renderScene(true);
- scenario->physic->resetTime();
- sfxeng->resumeMusic();
- }
- } else {
- state|=INPUT_MENU;
- sfxeng->pauseMusic();
- menu=new GameMenu();
- }
+ sfxeng->pauseMusic();
+ menu=new GameMenu();
break;
}
case SDLK_F1: {
@@ -374,34 +327,155 @@
}
}
+void InputHandler::pollEvents() {
+ SDL_Event event;
-int filterEvents(const SDL_Event*) {
-/*
-int filterEvents(const SDL_Event *event) {
- switch(event->type) {
- case SDL_QUIT: {
- quitGame(0);
- break;
- }
- case SDL_KEYDOWN: {
- switch(event->key.keysym.sym) {
- case SDLK_p: {
- input->resume();
- break;
+ while(SDL_PollEvent(&event)) {
+ switch(event.type) {
+ // special events
+ case SDL_VIDEORESIZE: {
+ gfxeng->resize(event.resize.w, event.resize.h);
+ gfxeng->renderScene(true);
+ break;
+ }
+ // keyboard events
+ case SDL_QUIT: {
+ quitGame(0);
+ }
+ case SDL_KEYUP: {
+ switch(event.key.keysym.sym) {
+ case SDLK_LEFT: {
+ if (state&INPUT_LEFT) setState(INPUTR_LEFT);
+ state&=~INPUT_LEFT;
+ break;
+ }
+ case SDLK_RIGHT: {
+ if (state&INPUT_RIGHT) state|=INPUTR_RIGHT;
+ state&=~INPUT_RIGHT;
+ break;
+ }
+ case SDLK_UP: {
+ if (state&INPUT_UP) setState(INPUTR_UP);
+ state&=~INPUT_UP;
+ break;
+ }
+ case SDLK_DOWN: {
+ if (state&INPUT_DOWN) setState(INPUTR_DOWN);
+ state&=~INPUT_DOWN;
+ break;
+ }
+ case SDLK_SPACE: {
+ if (state&INPUT_SP1) setState(INPUTR_SP1);
+ state&=~INPUT_SP1;
+ break;
+ }
+ case SDLK_LSHIFT: {
+ if (state&INPUT_SP2) setState(INPUTR_SP2);
+ state&=~INPUT_SP2;
+ break;
+ }
+ case SDLK_RETURN: {
+ if (state&INPUT_ACT) setState(INPUTR_ACT);
+ state&=~INPUT_ACT;
+ break;
+ }
+ case SDLK_INSERT: {
+ if (state&INPUT_USE) setState(INPUTR_USE);
+ state&=~INPUT_USE;
+ break;
+ }
+ case SDLK_DELETE: {
+ if (state&INPUT_DEL) setState(INPUTR_DEL);
+ state&=~INPUT_DEL;
+ break;
+ }
+ default: {
+ break;
+ }
}
- case SDLK_q: {
- quitGame(0);
- break;
+ break;
+ }
+ case SDL_KEYDOWN: {
+ switch(event.key.keysym.sym) {
+ case SDLK_LCTRL: {
+ scenario->pool->switchPlayer();
+ state=NOTHING;
+ break;
+ }
+ case SDLK_LEFT: {
+ state|=INPUT_LEFT;
+ break;
+ }
+ case SDLK_RIGHT: {
+ state|=INPUT_RIGHT;
+ break;
+ }
+ case SDLK_UP: {
+ state|=INPUT_UP;
+ break;
+ }
+ case SDLK_DOWN: {
+ state|=INPUT_DOWN;
+ break;
+ }
+ case SDLK_SPACE: {
+ state|=INPUT_SP1;
+ break;
+ }
+ case SDLK_LSHIFT: {
+ state|=INPUT_SP2;
+ break;
+ }
+ case SDLK_RETURN: {
+ state|=INPUT_ACT;
+ break;
+ }
+ case SDLK_INSERT: {
+ state|=INPUT_USE;
+ break;
+ }
+ case SDLK_DELETE: {
+ state|=INPUT_DEL;
+ break;
+ }
+ //change game state!
+ case SDLK_TAB: {
+ paused=true;
+ sfxeng->playWAV(au_pause);
+ sfxeng->pauseMusic();
+ break;
+ }
+ case SDLK_ESCAPE: {
+ sfxeng->pauseMusic();
+ menu=new GameMenu();
+ break;
+ }
+ case SDLK_F1: {
+ gfxeng->togglePlayerBar();
+ break;
+ }
+ case SDLK_F2: {
+ gfxeng->toggleFPS();
+ break;
+ }
+ case SDLK_f: {
+ gfxeng->toggleFullScreen();
+ break;
+ }
+ case SDLK_q: {
+ quitGame(0);
+ break;
+ }
+ default: {
+ break;
+ }
}
- default: {
- break;
- }
+ break;
}
+ default: {
+ break;
+ }
}
- default: {
- break;
- }
- }
-*/
- return 1;
+ }
}
+
Modified: trunk/src/input.h
===================================================================
--- trunk/src/input.h 2005-02-22 13:36:33 UTC (rev 92)
+++ trunk/src/input.h 2005-02-22 13:51:28 UTC (rev 93)
@@ -20,8 +20,6 @@
#define INPUTR_ACT 0x00400000
#define INPUTR_USE 0x00800000
#define INPUTR_DEL 0x01000000
-#define INPUT_PAUSE 0x10000000
-#define INPUT_MENU 0x20000000
/** \brief Handels keyboard events
@@ -35,6 +33,8 @@
~InputHandler();
/// Check for keyboard events in game
void pollEvents();
+ /// Check for keyboard events in paused game
+ void pollPEvents();
/// Check for keyboard events in menu
void pollMEvents();
bool getState(Uint32 cstate) {
@@ -56,8 +56,4 @@
Mix_Chunk* au_pause;
};
-/// \obsolete This isn't used at the moment
-/// \brief SDL event filter
-int filterEvents(const SDL_Event *event);
-
#endif
Modified: trunk/src/lost_penguins.cpp
===================================================================
--- trunk/src/lost_penguins.cpp 2005-02-22 13:36:33 UTC (rev 92)
+++ trunk/src/lost_penguins.cpp 2005-02-22 13:51:28 UTC (rev 93)
@@ -32,7 +32,6 @@
exit(-1);
}
SDL_ShowCursor(SDL_DISABLE);
- SDL_SetEventFilter(filterEvents);
system(config.datadir.c_str());
cout << "ImageCache...\n";
@@ -57,13 +56,19 @@
while (true) {
if (menu) {
gfxeng->drawMenu();
+ //Check menu input
input->pollMEvents();
} else if (running) {
- gfxeng->renderScene();
- //Check input
- input->pollEvents();
- //Run Animations
- scenario->physic->update();
+ if (paused) {
+ //Check pause input
+ input->pollPEvents();
+ } else {
+ gfxeng->renderScene();
+ //Check normal input
+ input->pollEvents();
+ //Run Animations
+ scenario->physic->update();
+ }
} else {
quitGame(-6);
}
More information about the lostpenguins-commits
mailing list