mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2024-11-05 18:59:41 +01:00
Buttonify map screen
This commit is contained in:
parent
ac0079077d
commit
d88b4591d2
4 changed files with 294 additions and 52 deletions
|
@ -1,3 +1,5 @@
|
|||
#include <Input.h>
|
||||
|
||||
#include <tinyxml2.h>
|
||||
#include <vector>
|
||||
|
||||
|
@ -3178,8 +3180,6 @@ void gameinput(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void mapmenuactionpress(bool version2_2);
|
||||
|
||||
void mapinput(void)
|
||||
{
|
||||
const bool version2_2 = GlitchrunnerMode_less_than_or_equal(Glitchrunner2_2);
|
||||
|
@ -3299,8 +3299,8 @@ void mapinput(void)
|
|||
|| (game.menupage >= 20 && game.menupage <= 21)
|
||||
|| (game.menupage >= 30 && game.menupage <= 32))
|
||||
{
|
||||
if (key.isDown(KEYBOARD_ENTER) || key.isDown(game.controllerButton_map)) game.press_map = true;
|
||||
if ((key.isDown(27) || touch::button_tapped(TOUCH_BUTTON_CANCEL)) && !game.mapheld)
|
||||
if (key.isDown(KEYBOARD_ENTER) || key.isDown(game.controllerButton_map) || touch::button_tapped(TOUCH_BUTTON_MAP_BACK)) game.press_map = true;
|
||||
if (key.isDown(27) && !game.mapheld)
|
||||
{
|
||||
touch::remove_dynamic_buttons();
|
||||
game.mapheld = true;
|
||||
|
@ -3393,7 +3393,7 @@ void mapinput(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void mapmenuactionpress(const bool version2_2)
|
||||
void mapmenuactionpress(const bool version2_2)
|
||||
{
|
||||
switch (game.menupage)
|
||||
{
|
||||
|
@ -3556,7 +3556,13 @@ void teleporterinput(void)
|
|||
if (!game.press_action && !game.press_left && !game.press_right && !game.press_interact) game.jumpheld = false;
|
||||
if (!game.press_map) game.mapheld = false;
|
||||
|
||||
if (key.isDown(27) || touch::button_tapped(TOUCH_BUTTON_CANCEL))
|
||||
if (touch::button_tapped(TOUCH_BUTTON_MAP_BACK))
|
||||
{
|
||||
// Close teleporter menu
|
||||
graphics.resumegamemode = true;
|
||||
music.playef(Sound_VIRIDIAN);
|
||||
}
|
||||
else if (key.isDown(27))
|
||||
{
|
||||
if (!map.custommode || map.custommodeforreal)
|
||||
{
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#define INPUT_H
|
||||
|
||||
void menuactionpress(void);
|
||||
void mapmenuactionpress(const bool version2_2);
|
||||
|
||||
void titleinput(void);
|
||||
|
||||
|
|
|
@ -3196,14 +3196,17 @@ void maprender(void)
|
|||
}
|
||||
else if (obj.flags[67] && !map.custommode)
|
||||
{
|
||||
char buffer[SCREEN_WIDTH_CHARS + 1];
|
||||
vformat_buf(
|
||||
buffer, sizeof(buffer),
|
||||
loc::gettext("Press {button} to warp to the ship."),
|
||||
"button:but",
|
||||
vformat_button(ActionSet_InGame, Action_InGame_ACTION)
|
||||
);
|
||||
font::print_wrap(PR_CEN, -1, 105, buffer, 196, 196, 255 - help.glow);
|
||||
if (!key.using_touch)
|
||||
{
|
||||
char buffer[SCREEN_WIDTH_CHARS + 1];
|
||||
vformat_buf(
|
||||
buffer, sizeof(buffer),
|
||||
loc::gettext("Press {button} to warp to the ship."),
|
||||
"button:but",
|
||||
vformat_button(ActionSet_InGame, Action_InGame_ACTION)
|
||||
);
|
||||
font::print_wrap(PR_CEN, -1, 105, buffer, 196, 196, 255 - help.glow);
|
||||
}
|
||||
}
|
||||
else if(map.custommode){
|
||||
LevelMetaData& meta = cl.ListOfMetaData[game.playcustomlevel];
|
||||
|
@ -3352,7 +3355,7 @@ void maprender(void)
|
|||
|
||||
/* We are not in a special case, so draw the save screen now... */
|
||||
|
||||
if (!map.custommode)
|
||||
if (!map.custommode && ((!game.gamesaved && key.using_touch) || !key.using_touch))
|
||||
{
|
||||
/* FIXME: The text here should be automatically "balance-wrapped" instead of hardcoding the width.
|
||||
* In fact, maybe print_wrap should balance-wrap by default. */
|
||||
|
@ -3362,21 +3365,24 @@ void maprender(void)
|
|||
if (!game.gamesaved)
|
||||
{
|
||||
char buffer[SCREEN_WIDTH_CHARS + 1];
|
||||
vformat_buf(
|
||||
buffer, sizeof(buffer),
|
||||
loc::gettext("[Press {button} to save your game]"),
|
||||
"button:but",
|
||||
vformat_button(ActionSet_InGame, Action_InGame_ACTION)
|
||||
);
|
||||
if (!key.using_touch)
|
||||
{
|
||||
vformat_buf(
|
||||
buffer, sizeof(buffer),
|
||||
loc::gettext("[Press {button} to save your game]"),
|
||||
"button:but",
|
||||
vformat_button(ActionSet_InGame, Action_InGame_ACTION)
|
||||
);
|
||||
|
||||
font::print(PR_CEN, -1, 80, buffer, 255 - help.glow*2, 255 - help.glow*2, 255 - help.glow);
|
||||
font::print(PR_CEN, -1, 80, buffer, 255 - help.glow * 2, 255 - help.glow * 2, 255 - help.glow);
|
||||
}
|
||||
|
||||
if (map.custommode || !game.last_quicksave.exists)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
font::print(PR_CEN, -1, FLIP(100, 8), loc::gettext("Last Save:"), 164 - help.glow/4, 164 - help.glow/4, 164);
|
||||
font::print(PR_CEN, -1, FLIP((key.using_touch ? 40 : 100), 8), loc::gettext("Last Save:"), 164 - help.glow / 4, 164 - help.glow / 4, 164);
|
||||
|
||||
struct Game::Summary* last = &game.last_quicksave;
|
||||
vformat_buf(
|
||||
|
@ -3387,7 +3393,7 @@ void maprender(void)
|
|||
game.giventimestring(last->hours, last->minutes, last->seconds).c_str()
|
||||
);
|
||||
|
||||
font::print(PR_CEN, -1, FLIP(112, 8), buffer, 164 - help.glow/4, 164 - help.glow/4, 164);
|
||||
font::print(PR_CEN, -1, FLIP((key.using_touch ? 52 : 112), 8), buffer, 164 - help.glow/4, 164 - help.glow/4, 164);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -3452,8 +3458,11 @@ void maprender(void)
|
|||
font::print_wrap(PR_CEN, -1, 142, loc::gettext("Do you want to quit? You will lose any unsaved progress."), 196, 196, 255 - help.glow, 12);
|
||||
}
|
||||
|
||||
font::print(PR_RTL_XFLIP, 80-selection_offset, 88, loc::gettext("[ NO, KEEP PLAYING ]"), 196, 196, 255 - help.glow);
|
||||
font::print(PR_RTL_XFLIP, 80 + 32, 76, loc::gettext("yes, quit to menu"), 96, 96, 96);
|
||||
if (!key.using_touch)
|
||||
{
|
||||
font::print(PR_RTL_XFLIP, 80 - selection_offset, 88, loc::gettext("[ NO, KEEP PLAYING ]"), 196, 196, 255 - help.glow);
|
||||
font::print(PR_RTL_XFLIP, 80 + 32, 76, loc::gettext("yes, quit to menu"), 96, 96, 96);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -3467,8 +3476,11 @@ void maprender(void)
|
|||
font::print_wrap(PR_CEN, -1, 76, loc::gettext("Do you want to quit? You will lose any unsaved progress."), 196, 196, 255 - help.glow, 12);
|
||||
}
|
||||
|
||||
font::print(PR_RTL_XFLIP, 80-selection_offset, 130, loc::gettext("[ NO, KEEP PLAYING ]"), 196, 196, 255 - help.glow);
|
||||
font::print(PR_RTL_XFLIP, 80 + 32, 142, loc::gettext("yes, quit to menu"), 96, 96, 96);
|
||||
if (!key.using_touch)
|
||||
{
|
||||
font::print(PR_RTL_XFLIP, 80 - selection_offset, 130, loc::gettext("[ NO, KEEP PLAYING ]"), 196, 196, 255 - help.glow);
|
||||
font::print(PR_RTL_XFLIP, 80 + 32, 142, loc::gettext("yes, quit to menu"), 96, 96, 96);
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
@ -3486,8 +3498,11 @@ void maprender(void)
|
|||
font::print_wrap(PR_CEN, -1, 142, loc::gettext("Do you want to quit? You will lose any unsaved progress."), 196, 196, 255 - help.glow, 12);
|
||||
}
|
||||
|
||||
font::print(PR_RTL_XFLIP, 80, 88, loc::gettext("no, keep playing"), 96,96,96);
|
||||
font::print(PR_RTL_XFLIP, 80+32-selection_offset, 76, loc::gettext("[ YES, QUIT TO MENU ]"), 196, 196, 255 - help.glow);
|
||||
if (!key.using_touch)
|
||||
{
|
||||
font::print(PR_RTL_XFLIP, 80, 88, loc::gettext("no, keep playing"), 96, 96, 96);
|
||||
font::print(PR_RTL_XFLIP, 80 + 32 - selection_offset, 76, loc::gettext("[ YES, QUIT TO MENU ]"), 196, 196, 255 - help.glow);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -3500,8 +3515,11 @@ void maprender(void)
|
|||
font::print_wrap(PR_CEN, -1, 76, loc::gettext("Do you want to quit? You will lose any unsaved progress."), 196, 196, 255 - help.glow, 12);
|
||||
}
|
||||
|
||||
font::print(PR_RTL_XFLIP, 80, 130, loc::gettext("no, keep playing"), 96,96,96);
|
||||
font::print(PR_RTL_XFLIP, 80+32-selection_offset, 142, loc::gettext("[ YES, QUIT TO MENU ]"), 196, 196, 255 - help.glow);
|
||||
if (!key.using_touch)
|
||||
{
|
||||
font::print(PR_RTL_XFLIP, 80, 130, loc::gettext("no, keep playing"), 96, 96, 96);
|
||||
font::print(PR_RTL_XFLIP, 80 + 32 - selection_offset, 142, loc::gettext("[ YES, QUIT TO MENU ]"), 196, 196, 255 - help.glow);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
|
@ -3510,14 +3528,20 @@ void maprender(void)
|
|||
if (graphics.flipmode)
|
||||
{
|
||||
font::print_wrap(PR_CEN, -1, 88, loc::gettext("Do you want to return to the secret laboratory?"), 196, 196, 255 - help.glow, 12);
|
||||
font::print(PR_RTL_XFLIP, 80-selection_offset, 142, loc::gettext("[ NO, KEEP PLAYING ]"), 196, 196, 255 - help.glow);
|
||||
font::print(PR_RTL_XFLIP, 80 + 32, 130, loc::gettext("yes, return"), 96, 96, 96);
|
||||
if (!key.using_touch)
|
||||
{
|
||||
font::print(PR_RTL_XFLIP, 80 - selection_offset, 142, loc::gettext("[ NO, KEEP PLAYING ]"), 196, 196, 255 - help.glow);
|
||||
font::print(PR_RTL_XFLIP, 80 + 32, 130, loc::gettext("yes, return"), 96, 96, 96);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
font::print_wrap(PR_CEN, -1, 76, loc::gettext("Do you want to return to the secret laboratory?"), 196, 196, 255 - help.glow, 12);
|
||||
font::print(PR_RTL_XFLIP, 80-selection_offset, 130, loc::gettext("[ NO, KEEP PLAYING ]"), 196, 196, 255 - help.glow);
|
||||
font::print(PR_RTL_XFLIP, 80 + 32, 142, loc::gettext("yes, return"), 96, 96, 96);
|
||||
if (!key.using_touch)
|
||||
{
|
||||
font::print(PR_RTL_XFLIP, 80 - selection_offset, 130, loc::gettext("[ NO, KEEP PLAYING ]"), 196, 196, 255 - help.glow);
|
||||
font::print(PR_RTL_XFLIP, 80 + 32, 142, loc::gettext("yes, return"), 96, 96, 96);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -3527,18 +3551,26 @@ void maprender(void)
|
|||
if (graphics.flipmode)
|
||||
{
|
||||
font::print_wrap(PR_CEN, -1, 88, loc::gettext("Do you want to return to the secret laboratory?"), 196, 196, 255 - help.glow, 12);
|
||||
font::print(PR_RTL_XFLIP, 80, 142, loc::gettext("no, keep playing"), 96, 96, 96);
|
||||
font::print(PR_RTL_XFLIP, 80 + 32-selection_offset, 130, loc::gettext("[ YES, RETURN ]"), 196, 196, 255 - help.glow);
|
||||
if (!key.using_touch)
|
||||
{
|
||||
font::print(PR_RTL_XFLIP, 80, 142, loc::gettext("no, keep playing"), 96, 96, 96);
|
||||
font::print(PR_RTL_XFLIP, 80 + 32 - selection_offset, 130, loc::gettext("[ YES, RETURN ]"), 196, 196, 255 - help.glow);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
font::print_wrap(PR_CEN, -1, 76, loc::gettext("Do you want to return to the secret laboratory?"), 196, 196, 255 - help.glow, 12);
|
||||
font::print(PR_RTL_XFLIP, 80, 130, loc::gettext("no, keep playing"), 96, 96, 96);
|
||||
font::print(PR_RTL_XFLIP, 80 + 32-selection_offset, 142, loc::gettext("[ YES, RETURN ]"), 196, 196, 255 - help.glow);
|
||||
if (!key.using_touch)
|
||||
{
|
||||
font::print(PR_RTL_XFLIP, 80, 130, loc::gettext("no, keep playing"), 96, 96, 96);
|
||||
font::print(PR_RTL_XFLIP, 80 + 32 - selection_offset, 142, loc::gettext("[ YES, RETURN ]"), 196, 196, 255 - help.glow);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
touch::render_buttons();
|
||||
|
||||
graphics.set_render_target(graphics.gameTexture);
|
||||
|
||||
if (graphics.resumegamemode || graphics.menuoffset > 0 || graphics.oldmenuoffset > 0)
|
||||
|
|
|
@ -90,6 +90,8 @@ namespace touch
|
|||
buttons[i].type = TOUCH_BUTTON_TYPE_NONE;
|
||||
buttons[i].id = -1;
|
||||
buttons[i].disabled = false;
|
||||
buttons[i].checked = false;
|
||||
buttons[i].flags = 0;
|
||||
}
|
||||
|
||||
refresh_all_buttons();
|
||||
|
@ -198,6 +200,52 @@ namespace touch
|
|||
game.currentmenuoption = button->id;
|
||||
menuactionpress();
|
||||
break;
|
||||
case TOUCH_BUTTON_TYPE_MAP:
|
||||
switch (button->id)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
game.menupage = button->id;
|
||||
music.playef(Sound_VIRIDIAN);
|
||||
break;
|
||||
case 4:
|
||||
game.menupage = 1;
|
||||
mapmenuactionpress(version2_2);
|
||||
break;
|
||||
case 5:
|
||||
game.menupage = 3;
|
||||
mapmenuactionpress(version2_2);
|
||||
break;
|
||||
case 6:
|
||||
game.menupage = 3;
|
||||
mapmenuactionpress(version2_2);
|
||||
|
||||
graphics.fademode = FADE_START_FADEOUT;
|
||||
music.fadeout();
|
||||
map.nexttowercolour();
|
||||
if (!version2_2)
|
||||
{
|
||||
game.fadetomenu = true;
|
||||
game.fadetomenudelay = 19;
|
||||
}
|
||||
|
||||
break;
|
||||
case 7:
|
||||
music.playef(Sound_VIRIDIAN);
|
||||
game.menupage = 10;
|
||||
break;
|
||||
case 8:
|
||||
music.playef(Sound_VIRIDIAN);
|
||||
game.menupage = 3;
|
||||
break;
|
||||
case 9:
|
||||
game.menupage = 11;
|
||||
mapmenuactionpress(version2_2);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case TOUCH_BUTTON_TYPE_NONE:
|
||||
case TOUCH_BUTTON_TYPE_MENU_SLIDER:
|
||||
default:
|
||||
|
@ -206,6 +254,114 @@ namespace touch
|
|||
refresh_buttons();
|
||||
}
|
||||
|
||||
|
||||
static void setup_map_buttons(void)
|
||||
{
|
||||
buttons[TOUCH_BUTTON_MAP_MAP].x = 16;
|
||||
buttons[TOUCH_BUTTON_MAP_MAP].y = 211;
|
||||
buttons[TOUCH_BUTTON_MAP_MAP].width = 56;
|
||||
buttons[TOUCH_BUTTON_MAP_MAP].height = 26;
|
||||
buttons[TOUCH_BUTTON_MAP_MAP].text = loc::gettext("MAP");
|
||||
buttons[TOUCH_BUTTON_MAP_MAP].id = 0;
|
||||
buttons[TOUCH_BUTTON_MAP_MAP].type = TOUCH_BUTTON_TYPE_MAP;
|
||||
buttons[TOUCH_BUTTON_MAP_MAP].ui = false;
|
||||
|
||||
const char* tab_name;
|
||||
if (game.insecretlab)
|
||||
{
|
||||
tab_name = loc::gettext("GRAV");
|
||||
}
|
||||
else if (obj.flags[67] && !map.custommode)
|
||||
{
|
||||
tab_name = loc::gettext("SHIP");
|
||||
}
|
||||
else
|
||||
{
|
||||
tab_name = loc::gettext("CREW");
|
||||
}
|
||||
|
||||
buttons[TOUCH_BUTTON_MAP_CREW].x = 92;
|
||||
buttons[TOUCH_BUTTON_MAP_CREW].y = 211;
|
||||
buttons[TOUCH_BUTTON_MAP_CREW].width = 56;
|
||||
buttons[TOUCH_BUTTON_MAP_CREW].height = 26;
|
||||
buttons[TOUCH_BUTTON_MAP_CREW].text = tab_name;
|
||||
buttons[TOUCH_BUTTON_MAP_CREW].id = 1;
|
||||
buttons[TOUCH_BUTTON_MAP_CREW].type = TOUCH_BUTTON_TYPE_MAP;
|
||||
buttons[TOUCH_BUTTON_MAP_CREW].ui = false;
|
||||
|
||||
buttons[TOUCH_BUTTON_MAP_STATS].x = 168;
|
||||
buttons[TOUCH_BUTTON_MAP_STATS].y = 211;
|
||||
buttons[TOUCH_BUTTON_MAP_STATS].width = 56;
|
||||
buttons[TOUCH_BUTTON_MAP_STATS].height = 26;
|
||||
buttons[TOUCH_BUTTON_MAP_STATS].text = loc::gettext("STATS");
|
||||
buttons[TOUCH_BUTTON_MAP_STATS].id = 2;
|
||||
buttons[TOUCH_BUTTON_MAP_STATS].type = TOUCH_BUTTON_TYPE_MAP;
|
||||
buttons[TOUCH_BUTTON_MAP_STATS].ui = false;
|
||||
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT].x = 244;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT].y = 211;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT].width = 56;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT].height = 26;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT].text = loc::gettext("QUIT");
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT].id = 3;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT].type = TOUCH_BUTTON_TYPE_MAP;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT].ui = false;
|
||||
|
||||
buttons[TOUCH_BUTTON_MAP_SHIP_WARP].x = 80;
|
||||
buttons[TOUCH_BUTTON_MAP_SHIP_WARP].y = 120 - 16;
|
||||
buttons[TOUCH_BUTTON_MAP_SHIP_WARP].width = 160;
|
||||
buttons[TOUCH_BUTTON_MAP_SHIP_WARP].height = 30;
|
||||
buttons[TOUCH_BUTTON_MAP_SHIP_WARP].text = loc::gettext("warp to ship");
|
||||
buttons[TOUCH_BUTTON_MAP_SHIP_WARP].id = 4;
|
||||
buttons[TOUCH_BUTTON_MAP_SHIP_WARP].type = TOUCH_BUTTON_TYPE_MAP;
|
||||
buttons[TOUCH_BUTTON_MAP_SHIP_WARP].ui = false;
|
||||
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVE].x = 80;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVE].y = 96 + 8 - 16 - 16;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVE].width = 160;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVE].height = 26;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVE].text = loc::gettext("save");
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVE].id = 5;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVE].type = TOUCH_BUTTON_TYPE_MAP;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVE].ui = false;
|
||||
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVEEXIT].x = 80;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVEEXIT].y = 96 + 32 + 8 - 16 - 16;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVEEXIT].width = 160;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVEEXIT].height = 26;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVEEXIT].text = loc::gettext("save and quit");
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVEEXIT].id = 6;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVEEXIT].type = TOUCH_BUTTON_TYPE_MAP;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVEEXIT].ui = false;
|
||||
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_EXIT].x = 80;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_EXIT].y = 96 + 64 + 8 - 16 - 16;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_EXIT].width = 160;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_EXIT].height = 26;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_EXIT].text = loc::gettext("quit");
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_EXIT].id = 7;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_EXIT].type = TOUCH_BUTTON_TYPE_MAP;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_EXIT].ui = false;
|
||||
|
||||
buttons[TOUCH_BUTTON_QUIT_NO].x = 80;
|
||||
buttons[TOUCH_BUTTON_QUIT_NO].y = 96 + 16;
|
||||
buttons[TOUCH_BUTTON_QUIT_NO].width = 160;
|
||||
buttons[TOUCH_BUTTON_QUIT_NO].height = 26;
|
||||
buttons[TOUCH_BUTTON_QUIT_NO].text = loc::gettext("no, keep playing");
|
||||
buttons[TOUCH_BUTTON_QUIT_NO].id = 8;
|
||||
buttons[TOUCH_BUTTON_QUIT_NO].type = TOUCH_BUTTON_TYPE_MAP;
|
||||
buttons[TOUCH_BUTTON_QUIT_NO].ui = false;
|
||||
|
||||
buttons[TOUCH_BUTTON_QUIT_YES].x = 80;
|
||||
buttons[TOUCH_BUTTON_QUIT_YES].y = 96 + 32 + 16;
|
||||
buttons[TOUCH_BUTTON_QUIT_YES].width = 160;
|
||||
buttons[TOUCH_BUTTON_QUIT_YES].height = 26;
|
||||
buttons[TOUCH_BUTTON_QUIT_YES].text = loc::gettext("yes, quit to menu");
|
||||
buttons[TOUCH_BUTTON_QUIT_YES].id = 9;
|
||||
buttons[TOUCH_BUTTON_QUIT_YES].type = TOUCH_BUTTON_TYPE_MAP;
|
||||
buttons[TOUCH_BUTTON_QUIT_YES].ui = false;
|
||||
}
|
||||
|
||||
void refresh_buttons(void)
|
||||
{
|
||||
int width;
|
||||
|
@ -244,6 +400,14 @@ namespace touch
|
|||
buttons[TOUCH_BUTTON_CONFIRM].height = 40 * scale;
|
||||
buttons[TOUCH_BUTTON_CONFIRM].image = graphics.grphx.im_button_right;
|
||||
|
||||
buttons[TOUCH_BUTTON_MAP_BACK].x = width - ((double)(240 - (int) graphics.lerp(graphics.oldmenuoffset, graphics.menuoffset)) / 240.0) * (60 * scale);
|
||||
buttons[TOUCH_BUTTON_MAP_BACK].y = 0;
|
||||
buttons[TOUCH_BUTTON_MAP_BACK].width = 60 * scale;
|
||||
buttons[TOUCH_BUTTON_MAP_BACK].height = 26 * scale;
|
||||
buttons[TOUCH_BUTTON_MAP_BACK].text = loc::gettext("BACK");
|
||||
|
||||
setup_map_buttons();
|
||||
|
||||
// First, reset all buttons
|
||||
for (int i = 0; i < NUM_TOUCH_BUTTONS; i++)
|
||||
{
|
||||
|
@ -276,15 +440,60 @@ namespace touch
|
|||
{
|
||||
buttons[TOUCH_BUTTON_LEFT].active = true;
|
||||
buttons[TOUCH_BUTTON_RIGHT].active = true;
|
||||
buttons[TOUCH_BUTTON_CANCEL].active = true;
|
||||
buttons[TOUCH_BUTTON_CONFIRM].active = true;
|
||||
|
||||
buttons[TOUCH_BUTTON_MAP_BACK].active = true;
|
||||
}
|
||||
break;
|
||||
case MAPMODE:
|
||||
buttons[TOUCH_BUTTON_LEFT].active = true;
|
||||
buttons[TOUCH_BUTTON_RIGHT].active = true;
|
||||
buttons[TOUCH_BUTTON_CANCEL].active = true;
|
||||
buttons[TOUCH_BUTTON_CONFIRM].active = true;
|
||||
buttons[TOUCH_BUTTON_MAP_BACK].active = true;
|
||||
if (game.menupage >= 0 && game.menupage < 4)
|
||||
{
|
||||
buttons[TOUCH_BUTTON_MAP_MAP].active = true;
|
||||
buttons[TOUCH_BUTTON_MAP_CREW].active = true;
|
||||
buttons[TOUCH_BUTTON_MAP_STATS].active = true;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT].active = true;
|
||||
}
|
||||
|
||||
if (graphics.menuoffset > 0)
|
||||
{
|
||||
buttons[TOUCH_BUTTON_MAP_BACK].down = true;
|
||||
}
|
||||
|
||||
switch (game.menupage)
|
||||
{
|
||||
case 0:
|
||||
case 2:
|
||||
break;
|
||||
case 1:
|
||||
if (obj.flags[67] && !map.custommode)
|
||||
{
|
||||
buttons[TOUCH_BUTTON_MAP_SHIP_WARP].active = true;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (!game.gamesaved && !game.gamesavefailed && !game.inspecial())
|
||||
{
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVE].active = true;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_SAVEEXIT].active = true;
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_EXIT].y = 96 + 64 + 8 - 16 - 16;
|
||||
}
|
||||
else
|
||||
{
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_EXIT].y = 96 + 32 + 8 - 16 + 48;
|
||||
}
|
||||
buttons[TOUCH_BUTTON_MAP_QUIT_EXIT].active = true;
|
||||
break;
|
||||
case 10:
|
||||
case 11:
|
||||
buttons[TOUCH_BUTTON_QUIT_NO].active = true;
|
||||
buttons[TOUCH_BUTTON_QUIT_YES].active = true;
|
||||
break;
|
||||
default:
|
||||
buttons[TOUCH_BUTTON_LEFT].active = true;
|
||||
buttons[TOUCH_BUTTON_RIGHT].active = true;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case GAMECOMPLETE:
|
||||
case GAMECOMPLETE2:
|
||||
|
@ -414,7 +623,7 @@ namespace touch
|
|||
}
|
||||
else
|
||||
{
|
||||
font::print(PR_CEN | PR_CJK_LOW | font_scale | button->flags, button->x + (button->width / 2) + offset * scale, button->y + ((button->height - height) / 2 + offset) * scale, button->text, 196, 196, 255 - help.glow);
|
||||
font::print(PR_CEN | PR_CJK_LOW | font_scale | button->flags, button->x + (button->width / 2) + offset * scale, button->y + ((button->height - height) / 2 + offset * scale), button->text, 196, 196, 255 - help.glow);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -460,12 +669,6 @@ namespace touch
|
|||
|
||||
void reset(void)
|
||||
{
|
||||
for (int i = 0; i < NUM_TOUCH_BUTTONS; i++)
|
||||
{
|
||||
buttons[i].down = false;
|
||||
buttons[i].fingerId = -1;
|
||||
}
|
||||
|
||||
for (int i = 0; i < fingers.size(); i++)
|
||||
{
|
||||
fingers[i].pressed = false;
|
||||
|
|
Loading…
Reference in a new issue