projects
/
supertux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
moved the zeekling into base
[supertux.git]
/
src
/
gui
/
menu.cpp
diff --git
a/src/gui/menu.cpp
b/src/gui/menu.cpp
index
88fffd5
..
d70b16a
100644
(file)
--- a/
src/gui/menu.cpp
+++ b/
src/gui/menu.cpp
@@
-29,24
+29,21
@@
#include <cassert>
#include <stdexcept>
#include <cassert>
#include <stdexcept>
-#include "app/globals.h"
#include "menu.h"
#include "video/screen.h"
#include "video/drawing_context.h"
#include "menu.h"
#include "video/screen.h"
#include "video/drawing_context.h"
-#include "app/setup.h"
-#include "app/gettext.h"
+#include "gettext.h"
#include "math/vector.h"
#include "main.h"
#include "math/vector.h"
#include "main.h"
+#include "resources.h"
#include "control/joystickkeyboardcontroller.h"
static const int MENU_REPEAT_INITIAL = 400;
static const int MENU_REPEAT_RATE = 200;
#include "control/joystickkeyboardcontroller.h"
static const int MENU_REPEAT_INITIAL = 400;
static const int MENU_REPEAT_RATE = 200;
-static const int FLICK_CURSOR_TIME
=
500;
+static const int FLICK_CURSOR_TIME
=
500;
extern SDL_Surface* screen;
extern SDL_Surface* screen;
-using namespace SuperTux;
-
Surface* checkbox;
Surface* checkbox_checked;
Surface* back;
Surface* checkbox;
Surface* checkbox_checked;
Surface* back;
@@
-128,7
+125,7
@@
Menu::push_current(Menu* pmenu)
last_menus.push_back(current_);
current_ = pmenu;
last_menus.push_back(current_);
current_ = pmenu;
- current_->effect
.start(500
);
+ current_->effect
_ticks = SDL_GetTicks(
);
}
void
}
void
@@
-136,9
+133,10
@@
Menu::pop_current()
{
if (last_menus.size() >= 1) {
current_ = last_menus.back();
{
if (last_menus.size() >= 1) {
current_ = last_menus.back();
- current_->effect.start(500);
-
+ current_->effect_ticks = SDL_GetTicks();
last_menus.pop_back();
last_menus.pop_back();
+ } else {
+ current_ = 0;
}
}
}
}
@@
-148,7
+146,7
@@
Menu::set_current(Menu* menu)
last_menus.clear();
if (menu)
last_menus.clear();
if (menu)
- menu->effect
.start(500
);
+ menu->effect
_ticks = SDL_GetTicks(
);
current_ = menu;
// just to be sure...
current_ = menu;
// just to be sure...
@@
-161,9
+159,6
@@
MenuItem::MenuItem(MenuItemKind _kind, int _id)
toggled = false;
selected = false;
target_menu = 0;
toggled = false;
selected = false;
target_menu = 0;
- input_flickering = false;
- input_flickering_timer.init(true);
- input_flickering_timer.start(FLICK_CURSOR_TIME);
}
void
}
void
@@
-180,19
+175,11
@@
MenuItem::change_input(const std::string& text_)
std::string MenuItem::get_input_with_symbol(bool active_item)
{
std::string MenuItem::get_input_with_symbol(bool active_item)
{
- if(!active_item)
+ if(!active_item)
{
input_flickering = true;
input_flickering = true;
- else
- {
- if(input_flickering_timer.get_left() < 0)
- {
- if(input_flickering)
- input_flickering = false;
- else
- input_flickering = true;
- input_flickering_timer.start(FLICK_CURSOR_TIME);
- }
- }
+ } else {
+ input_flickering = (SDL_GetTicks() / FLICK_CURSOR_TIME) % 2;
+ }
char str[1024];
if(input_flickering)
char str[1024];
if(input_flickering)
@@
-223,9
+210,6
@@
Menu::Menu()
pos_y = SCREEN_HEIGHT/2;
arrange_left = 0;
active_item = -1;
pos_y = SCREEN_HEIGHT/2;
arrange_left = 0;
active_item = -1;
- effect.init(false);
-
- repeat_timer.init(true);
}
void Menu::set_pos(int x, int y, float rw, float rh)
}
void Menu::set_pos(int x, int y, float rw, float rh)
@@
-334,21
+318,24
@@
void
Menu::action()
{
/** check main input controller... */
Menu::action()
{
/** check main input controller... */
+ Uint32 ticks = SDL_GetTicks();
if(main_controller->pressed(Controller::UP)) {
menuaction = MENU_ACTION_UP;
if(main_controller->pressed(Controller::UP)) {
menuaction = MENU_ACTION_UP;
-
repeat_timer.start(MENU_REPEAT_INITIAL)
;
+
menu_repeat_ticks = ticks + MENU_REPEAT_INITIAL
;
}
}
- if(main_controller->hold(Controller::UP) && !repeat_timer.check()) {
+ if(main_controller->hold(Controller::UP) &&
+ menu_repeat_ticks != 0 && ticks > menu_repeat_ticks) {
menuaction = MENU_ACTION_UP;
menuaction = MENU_ACTION_UP;
-
repeat_timer.start(MENU_REPEAT_RATE)
;
+
menu_repeat_ticks = ticks + MENU_REPEAT_RATE
;
}
if(main_controller->pressed(Controller::DOWN)) {
menuaction = MENU_ACTION_DOWN;
}
if(main_controller->pressed(Controller::DOWN)) {
menuaction = MENU_ACTION_DOWN;
-
repeat_timer.start(MENU_REPEAT_INITIAL)
;
+
menu_repeat_ticks = ticks + MENU_REPEAT_INITIAL
;
}
}
- if(main_controller->hold(Controller::DOWN) && !repeat_timer.check()) {
+ if(main_controller->hold(Controller::DOWN) &&
+ menu_repeat_ticks != 0 && ticks > menu_repeat_ticks) {
menuaction = MENU_ACTION_DOWN;
menuaction = MENU_ACTION_DOWN;
-
repeat_timer.start(MENU_REPEAT_RATE)
;
+
menu_repeat_ticks = ticks + MENU_REPEAT_RATE
;
}
if(main_controller->pressed(Controller::JUMP)
|| main_controller->pressed(Controller::ACTION)
}
if(main_controller->pressed(Controller::JUMP)
|| main_controller->pressed(Controller::ACTION)
@@
-505,13
+492,13
@@
Menu::draw_item(DrawingContext& context, int index)
MenuItem& pitem = *(items[index]);
int effect_offset = 0;
MenuItem& pitem = *(items[index]);
int effect_offset = 0;
- {
- i
nt effect_time = 0;
-
- if(effect.check())
-
effect_time = effect.get_left(
) / 4;
-
- effect_offset = (index % 2) ? effect_time : -effect_time;
+
if(effect_ticks != 0)
{
+ i
f(SDL_GetTicks() - effect_ticks > 500) {
+ effect_ticks = 0;
+ } else {
+
Uint32 effect_time = (500 - (SDL_GetTicks() - effect_ticks)
) / 4;
+ effect_offset = (index % 2) ? effect_time : -effect_time;
+ }
}
Font* text_font = default_font;
}
Font* text_font = default_font;
@@
-762,7
+749,7
@@
Menu::is_toggled(int id) const
void
Menu::event(const SDL_Event& event)
{
void
Menu::event(const SDL_Event& event)
{
- if(effect
.started()
)
+ if(effect
_ticks != 0
)
return;
switch(event.type) {
return;
switch(event.type) {
@@
-818,12
+805,11
@@
Menu::event(const SDL_Event& event)
void
Menu::set_active_item(int id)
{
void
Menu::set_active_item(int id)
{
-
for(in
t i = 0; i < items.size(); ++i) {
-
MenuItem* item = items[i];
-
if(item->id == id) {
-
active_item = i;
-
break;
-
}
-
}
+
for(size_
t i = 0; i < items.size(); ++i) {
+ MenuItem* item = items[i];
+ if(item->id == id) {
+ active_item = i;
+ break;
+ }
+ }
}
}
-