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