projects
/
supertux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
- fixed problem with last_menu not being able to handle menues deeper than two submenues
[supertux.git]
/
src
/
gameloop.cpp
diff --git
a/src/gameloop.cpp
b/src/gameloop.cpp
index
4b8f577
..
cfdefc1
100644
(file)
--- a/
src/gameloop.cpp
+++ b/
src/gameloop.cpp
@@
-131,22
+131,14
@@
GameSession::start_timers()
void
GameSession::on_escape_press()
{
void
GameSession::on_escape_press()
{
- if(
!game_pause
)
+ if(
st_gl_mode == ST_GL_TEST
)
{
{
- if(st_gl_mode == ST_GL_TEST)
- {
- exit_status = LEVEL_ABORT;
- }
- else if (!Menu::current())
- {
- Menu::set_current(game_menu);
- st_pause_ticks_stop();
- }
- else
- {
- Menu::set_current(NULL);
- st_pause_ticks_start();
- }
+ exit_status = LEVEL_ABORT;
+ }
+ else if (!Menu::current())
+ {
+ Menu::set_current(game_menu);
+ st_pause_ticks_stop();
}
}
}
}
@@
-160,151
+152,153
@@
GameSession::process_events()
{
/* Check for menu-events, if the menu is shown */
if (Menu::current())
{
/* Check for menu-events, if the menu is shown */
if (Menu::current())
- Menu::current()->event(event);
-
- switch(event.type)
{
{
- case SDL_QUIT: /* Quit event - quit: */
- st_abort("Received window close", "");
- break;
-
- case SDL_KEYDOWN: /* A keypress! */
- {
- SDLKey key = event.key.keysym.sym;
-
- if(tux.key_event(key,DOWN))
+ Menu::current()->event(event);
+ }
+ else
+ {
+ switch(event.type)
+ {
+ case SDL_QUIT: /* Quit event - quit: */
+ st_abort("Received window close", "");
break;
break;
- switch(key)
+ case SDL_KEYDOWN: /* A keypress! */
{
{
- case SDLK_ESCAPE: /* Escape: Open/Close the menu: */
- on_escape_press();
- break;
- default:
- break;
- }
- }
- break;
- case SDL_KEYUP: /* A keyrelease! */
- {
- SDLKey key = event.key.keysym.sym;
+ SDLKey key = event.key.keysym.sym;
+
+ if(tux.key_event(key,DOWN))
+ break;
- if(tux.key_event(key, UP))
+ switch(key)
+ {
+ case SDLK_ESCAPE: /* Escape: Open/Close the menu: */
+ on_escape_press();
+ break;
+ default:
+ break;
+ }
+ }
break;
break;
-
- switch(key)
+ case SDL_KEYUP: /* A keyrelease! */
{
{
- case SDLK_p:
- if(!Menu::current())
+ SDLKey key = event.key.keysym.sym;
+
+ if(tux.key_event(key, UP))
+ break;
+
+ switch(key)
{
{
- if(game_pause)
- {
- game_pause = false;
- st_pause_ticks_stop();
- }
- else
+ case SDLK_p:
+ if(!Menu::current())
{
{
- game_pause = true;
- st_pause_ticks_start();
+ if(game_pause)
+ {
+ game_pause = false;
+ st_pause_ticks_stop();
+ }
+ else
+ {
+ game_pause = true;
+ st_pause_ticks_start();
+ }
}
}
- }
- break;
- case SDLK_TAB:
- if(debug_mode)
- {
- tux.size = !tux.size;
- if(tux.size == BIG)
+ break;
+ case SDLK_TAB:
+ if(debug_mode)
{
{
- tux.base.height = 64;
+ tux.size = !tux.size;
+ if(tux.size == BIG)
+ {
+ tux.base.height = 64;
+ }
+ else
+ tux.base.height = 32;
}
}
+ break;
+ case SDLK_END:
+ if(debug_mode)
+ player_status.distros += 50;
+ break;
+ case SDLK_DELETE:
+ if(debug_mode)
+ tux.got_coffee = 1;
+ break;
+ case SDLK_INSERT:
+ if(debug_mode)
+ tux.invincible_timer.start(TUX_INVINCIBLE_TIME);
+ break;
+ case SDLK_l:
+ if(debug_mode)
+ --player_status.lives;
+ break;
+ case SDLK_s:
+ if(debug_mode)
+ player_status.score += 1000;
+ case SDLK_f:
+ if(debug_fps)
+ debug_fps = false;
else
else
- tux.base.height = 32;
+ debug_fps = true;
+ break;
+ default:
+ break;
}
}
- break;
- case SDLK_END:
- if(debug_mode)
- player_status.distros += 50;
- break;
- case SDLK_DELETE:
- if(debug_mode)
- tux.got_coffee = 1;
- break;
- case SDLK_INSERT:
- if(debug_mode)
- tux.invincible_timer.start(TUX_INVINCIBLE_TIME);
- break;
- case SDLK_l:
- if(debug_mode)
- --player_status.lives;
- break;
- case SDLK_s:
- if(debug_mode)
- player_status.score += 1000;
- case SDLK_f:
- if(debug_fps)
- debug_fps = false;
- else
- debug_fps = true;
- break;
- default:
- break;
}
}
- }
- break;
+ break;
- case SDL_JOYAXISMOTION:
- switch(event.jaxis.axis)
- {
- case JOY_X:
- if (event.jaxis.value < -JOYSTICK_DEAD_ZONE)
- {
- tux.input.left = DOWN;
- tux.input.right = UP;
- }
- else if (event.jaxis.value > JOYSTICK_DEAD_ZONE)
- {
- tux.input.left = UP;
- tux.input.right = DOWN;
- }
- else
+ case SDL_JOYAXISMOTION:
+ switch(event.jaxis.axis)
{
{
- tux.input.left = DOWN;
- tux.input.right = DOWN;
+ case JOY_X:
+ if (event.jaxis.value < -JOYSTICK_DEAD_ZONE)
+ {
+ tux.input.left = DOWN;
+ tux.input.right = UP;
+ }
+ else if (event.jaxis.value > JOYSTICK_DEAD_ZONE)
+ {
+ tux.input.left = UP;
+ tux.input.right = DOWN;
+ }
+ else
+ {
+ tux.input.left = DOWN;
+ tux.input.right = DOWN;
+ }
+ break;
+ case JOY_Y:
+ if (event.jaxis.value > JOYSTICK_DEAD_ZONE)
+ tux.input.down = DOWN;
+ else if (event.jaxis.value < -JOYSTICK_DEAD_ZONE)
+ tux.input.down = UP;
+ else
+ tux.input.down = UP;
+
+ break;
+ default:
+ break;
}
break;
}
break;
- case JOY_Y:
- if (event.jaxis.value > JOYSTICK_DEAD_ZONE)
- tux.input.down = DOWN;
- else if (event.jaxis.value < -JOYSTICK_DEAD_ZONE)
- tux.input.down = UP;
- else
- tux.input.down = UP;
-
- break;
- default:
+ case SDL_JOYBUTTONDOWN:
+ if (event.jbutton.button == JOY_A)
+ tux.input.up = DOWN;
+ else if (event.jbutton.button == JOY_B)
+ tux.input.fire = DOWN;
+ else if (event.jbutton.button == JOY_START)
+ on_escape_press();
+ break;
+ case SDL_JOYBUTTONUP:
+ if (event.jbutton.button == JOY_A)
+ tux.input.up = UP;
+ else if (event.jbutton.button == JOY_B)
+ tux.input.fire = UP;
break;
break;
- }
- break;
- case SDL_JOYBUTTONDOWN:
- if (event.jbutton.button == JOY_A)
- tux.input.up = DOWN;
- else if (event.jbutton.button == JOY_B)
- tux.input.fire = DOWN;
- else if (event.jbutton.button == JOY_START)
- on_escape_press();
- break;
- case SDL_JOYBUTTONUP:
- if (event.jbutton.button == JOY_A)
- tux.input.up = UP;
- else if (event.jbutton.button == JOY_B)
- tux.input.fire = UP;
- break;
-
- default:
- break;
-
- } /* switch */
+ default:
+ break;
+ } /* switch */
+ }
} /* while */
}
} /* while */
}
@@
-331,14
+325,6
@@
GameSession::check_end_conditions()
{ // No more lives!?
if(st_gl_mode != ST_GL_TEST)
drawendscreen();
{ // No more lives!?
if(st_gl_mode != ST_GL_TEST)
drawendscreen();
-
- if(st_gl_mode != ST_GL_TEST)
- {
- // FIXME: highscore soving doesn't make sense in its
- // current form
- //if (player_status.score > hs_score)
- //save_hs(player_status.score);
- }
exit_status = GAME_OVER;
}
exit_status = GAME_OVER;
}
@@
-381,7
+367,8
@@
GameSession::draw()
if(Menu::current())
{
if(Menu::current())
{
- menu_process_current();
+ Menu::current()->action();
+ Menu::current()->draw();
mouse_cursor->draw();
}
mouse_cursor->draw();
}
@@
-571,13
+558,7
@@
GameSession::drawstatus()
white_text->draw("SCORE", 0, 0, 1);
gold_text->draw(str, 96, 0, 1);
white_text->draw("SCORE", 0, 0, 1);
gold_text->draw(str, 96, 0, 1);
- if(st_gl_mode != ST_GL_TEST)
- {
- sprintf(str, "%d", hs_score);
- white_text->draw("HIGH", 0, 20, 1);
- gold_text->draw(str, 96, 20, 1);
- }
- else
+ if(st_gl_mode == ST_GL_TEST)
{
white_text->draw("Press ESC To Return",0,20,1);
}
{
white_text->draw("Press ESC To Return",0,20,1);
}