forked from len0rd/rockbox
pegbox: Fix bug it restarts the level when user choosed "Resume Game" in the menu.
Simplify menu. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22091 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
95d043b26d
commit
d657c690a8
1 changed files with 123 additions and 146 deletions
|
@ -44,7 +44,7 @@ PLUGIN_HEADER
|
|||
#define PLAYER 7
|
||||
|
||||
#if CONFIG_KEYPAD == RECORDER_PAD
|
||||
#define PEGBOX_SAVE BUTTON_ON
|
||||
#define PEGBOX_SELECT BUTTON_ON
|
||||
#define PEGBOX_QUIT BUTTON_OFF
|
||||
#define PEGBOX_RESTART BUTTON_F2
|
||||
#define PEGBOX_LVL_UP BUTTON_F1
|
||||
|
@ -54,14 +54,14 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RIGHT
|
||||
#define PEGBOX_LEFT BUTTON_LEFT
|
||||
|
||||
#define SAVE_TEXT "ON"
|
||||
#define SELECT_TEXT "ON"
|
||||
#define QUIT_TEXT "OFF"
|
||||
#define RESTART_TEXT "F2"
|
||||
#define LVL_UP_TEXT "F1"
|
||||
#define LVL_DOWN_TEXT "F3"
|
||||
|
||||
#elif CONFIG_KEYPAD == ONDIO_PAD
|
||||
#define PEGBOX_SAVE BUTTON_OFF
|
||||
#define PEGBOX_SELECT BUTTON_OFF
|
||||
#define PEGBOX_QUIT (BUTTON_MENU | BUTTON_LEFT)
|
||||
#define PEGBOX_RESTART (BUTTON_MENU | BUTTON_RIGHT)
|
||||
#define PEGBOX_LVL_UP (BUTTON_MENU | BUTTON_UP)
|
||||
|
@ -71,7 +71,7 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RIGHT
|
||||
#define PEGBOX_LEFT BUTTON_LEFT
|
||||
|
||||
#define SAVE_TEXT "OFF"
|
||||
#define SELECT_TEXT "OFF"
|
||||
#define QUIT_TEXT "M+LEFT"
|
||||
#define RESTART_TEXT "M+RIGHT"
|
||||
#define LVL_UP_TEXT "M+UP"
|
||||
|
@ -79,7 +79,7 @@ PLUGIN_HEADER
|
|||
|
||||
#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
|
||||
(CONFIG_KEYPAD == IRIVER_H300_PAD)
|
||||
#define PEGBOX_SAVE BUTTON_SELECT
|
||||
#define PEGBOX_SELECT BUTTON_SELECT
|
||||
#define PEGBOX_QUIT BUTTON_OFF
|
||||
#define PEGBOX_RESTART BUTTON_ON
|
||||
#define PEGBOX_LVL_UP BUTTON_MODE
|
||||
|
@ -89,7 +89,7 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RIGHT
|
||||
#define PEGBOX_LEFT BUTTON_LEFT
|
||||
|
||||
#define SAVE_TEXT "NAVI"
|
||||
#define SELECT_TEXT "NAVI"
|
||||
#define QUIT_TEXT "OFF"
|
||||
#define RESTART_TEXT "ON"
|
||||
#define LVL_UP_TEXT "AB"
|
||||
|
@ -98,7 +98,7 @@ PLUGIN_HEADER
|
|||
#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
|
||||
(CONFIG_KEYPAD == IPOD_3G_PAD) || \
|
||||
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
|
||||
#define PEGBOX_SAVE (BUTTON_SELECT|BUTTON_RIGHT)
|
||||
#define PEGBOX_SELECT (BUTTON_SELECT|BUTTON_RIGHT)
|
||||
#define PEGBOX_QUIT (BUTTON_SELECT|BUTTON_PLAY)
|
||||
#define PEGBOX_RESTART (BUTTON_SELECT|BUTTON_LEFT)
|
||||
#define PEGBOX_LVL_UP (BUTTON_SELECT|BUTTON_MENU)
|
||||
|
@ -107,14 +107,14 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RIGHT
|
||||
#define PEGBOX_LEFT BUTTON_LEFT
|
||||
|
||||
#define SAVE_TEXT "SELECT+RIGHT"
|
||||
#define SELECT_TEXT "SELECT+RIGHT"
|
||||
#define QUIT_TEXT "SELECT+PLAY"
|
||||
#define RESTART_TEXT "SELECT+LEFT"
|
||||
#define LVL_UP_TEXT "SELECT+MENU"
|
||||
#define LVL_DOWN_TEXT "-"
|
||||
|
||||
#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
|
||||
#define PEGBOX_SAVE BUTTON_SELECT
|
||||
#define PEGBOX_SELECT BUTTON_SELECT
|
||||
#define PEGBOX_QUIT BUTTON_POWER
|
||||
#define PEGBOX_RESTART BUTTON_REC
|
||||
#define PEGBOX_LVL_UP BUTTON_PLAY
|
||||
|
@ -123,14 +123,14 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RIGHT
|
||||
#define PEGBOX_LEFT BUTTON_LEFT
|
||||
|
||||
#define SAVE_TEXT "SELECT"
|
||||
#define SELECT_TEXT "SELECT"
|
||||
#define QUIT_TEXT "OFF"
|
||||
#define RESTART_TEXT "REC"
|
||||
#define LVL_UP_TEXT "PLAY"
|
||||
#define LVL_DOWN_TEXT "-"
|
||||
|
||||
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
|
||||
#define PEGBOX_SAVE BUTTON_MODE
|
||||
#define PEGBOX_SELECT BUTTON_MODE
|
||||
#define PEGBOX_QUIT BUTTON_PLAY
|
||||
#define PEGBOX_RESTART (BUTTON_EQ|BUTTON_MODE)
|
||||
#define PEGBOX_LVL_UP (BUTTON_EQ|BUTTON_UP)
|
||||
|
@ -140,14 +140,14 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RIGHT
|
||||
#define PEGBOX_LEFT BUTTON_LEFT
|
||||
|
||||
#define SAVE_TEXT "MODE"
|
||||
#define SELECT_TEXT "MODE"
|
||||
#define QUIT_TEXT "PLAY"
|
||||
#define RESTART_TEXT "EQ+MODE"
|
||||
#define LVL_UP_TEXT "EQ+UP"
|
||||
#define LVL_DOWN_TEXT "EQ+DOWN"
|
||||
|
||||
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
|
||||
#define PEGBOX_SAVE BUTTON_PLAY
|
||||
#define PEGBOX_SELECT BUTTON_PLAY
|
||||
#define PEGBOX_QUIT BUTTON_POWER
|
||||
#define PEGBOX_RESTART (BUTTON_FF|BUTTON_REPEAT)
|
||||
#define PEGBOX_LVL_UP (BUTTON_FF|BUTTON_SCROLL_UP)
|
||||
|
@ -157,14 +157,14 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RIGHT
|
||||
#define PEGBOX_LEFT BUTTON_LEFT
|
||||
|
||||
#define SAVE_TEXT "PLAY"
|
||||
#define SELECT_TEXT "PLAY"
|
||||
#define QUIT_TEXT "OFF"
|
||||
#define RESTART_TEXT "LONG FF"
|
||||
#define LVL_UP_TEXT "FF+SCROLL_UP"
|
||||
#define LVL_DOWN_TEXT "FF+SCROLL_DOWN"
|
||||
|
||||
#elif CONFIG_KEYPAD == SANSA_E200_PAD
|
||||
#define PEGBOX_SAVE BUTTON_SELECT
|
||||
#define PEGBOX_SELECT BUTTON_SELECT
|
||||
#define PEGBOX_QUIT BUTTON_POWER
|
||||
#define PEGBOX_RESTART BUTTON_REC
|
||||
#define PEGBOX_LVL_UP BUTTON_SCROLL_BACK
|
||||
|
@ -174,14 +174,14 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RIGHT
|
||||
#define PEGBOX_LEFT BUTTON_LEFT
|
||||
|
||||
#define SAVE_TEXT "SELECT"
|
||||
#define SELECT_TEXT "SELECT"
|
||||
#define QUIT_TEXT "POWER"
|
||||
#define RESTART_TEXT "REC"
|
||||
#define LVL_UP_TEXT "SCROLL BACK"
|
||||
#define LVL_DOWN_TEXT "SCROLL FWD"
|
||||
|
||||
#elif CONFIG_KEYPAD == SANSA_FUZE_PAD
|
||||
#define PEGBOX_SAVE BUTTON_SELECT|BUTTON_REL
|
||||
#define PEGBOX_SELECT BUTTON_SELECT|BUTTON_REL
|
||||
#define PEGBOX_QUIT (BUTTON_HOME|BUTTON_REPEAT)
|
||||
#define PEGBOX_RESTART (BUTTON_SELECT|BUTTON_LEFT)
|
||||
#define PEGBOX_LVL_UP (BUTTON_SELECT|BUTTON_UP)
|
||||
|
@ -191,14 +191,14 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RIGHT
|
||||
#define PEGBOX_LEFT BUTTON_LEFT
|
||||
|
||||
#define SAVE_TEXT "SELECT"
|
||||
#define SELECT_TEXT "SELECT"
|
||||
#define QUIT_TEXT "HOME"
|
||||
#define RESTART_TEXT "SELECT & LEFT"
|
||||
#define LVL_UP_TEXT "SELECT & UP"
|
||||
#define LVL_DOWN_TEXT "SELECT & DOWN"
|
||||
|
||||
#elif CONFIG_KEYPAD == GIGABEAT_PAD
|
||||
#define PEGBOX_SAVE BUTTON_SELECT
|
||||
#define PEGBOX_SELECT BUTTON_SELECT
|
||||
#define PEGBOX_QUIT BUTTON_POWER
|
||||
#define PEGBOX_RESTART BUTTON_A
|
||||
#define PEGBOX_LVL_UP BUTTON_VOL_UP
|
||||
|
@ -208,14 +208,14 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RIGHT
|
||||
#define PEGBOX_LEFT BUTTON_LEFT
|
||||
|
||||
#define SAVE_TEXT "SELECT"
|
||||
#define SELECT_TEXT "SELECT"
|
||||
#define QUIT_TEXT "POWER"
|
||||
#define RESTART_TEXT "A"
|
||||
#define LVL_UP_TEXT "VOL+"
|
||||
#define LVL_DOWN_TEXT "VOL-"
|
||||
|
||||
#elif CONFIG_KEYPAD == GIGABEAT_S_PAD
|
||||
#define PEGBOX_SAVE BUTTON_SELECT
|
||||
#define PEGBOX_SELECT BUTTON_SELECT
|
||||
#define PEGBOX_QUIT BUTTON_BACK
|
||||
#define PEGBOX_RESTART BUTTON_MENU
|
||||
#define PEGBOX_LVL_UP BUTTON_VOL_UP
|
||||
|
@ -225,14 +225,14 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RIGHT
|
||||
#define PEGBOX_LEFT BUTTON_LEFT
|
||||
|
||||
#define SAVE_TEXT "SELECT"
|
||||
#define SELECT_TEXT "SELECT"
|
||||
#define QUIT_TEXT "BACK"
|
||||
#define RESTART_TEXT "MENU"
|
||||
#define LVL_UP_TEXT "VOL+"
|
||||
#define LVL_DOWN_TEXT "VOL-"
|
||||
|
||||
#elif CONFIG_KEYPAD == MROBE100_PAD
|
||||
#define PEGBOX_SAVE BUTTON_SELECT
|
||||
#define PEGBOX_SELECT BUTTON_SELECT
|
||||
#define PEGBOX_QUIT BUTTON_POWER
|
||||
#define PEGBOX_RESTART BUTTON_PLAY
|
||||
#define PEGBOX_LVL_UP BUTTON_MENU
|
||||
|
@ -242,14 +242,14 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RIGHT
|
||||
#define PEGBOX_LEFT BUTTON_LEFT
|
||||
|
||||
#define SAVE_TEXT "SELECT"
|
||||
#define SELECT_TEXT "SELECT"
|
||||
#define QUIT_TEXT "POWER"
|
||||
#define RESTART_TEXT "PLAY"
|
||||
#define LVL_UP_TEXT "MENU"
|
||||
#define LVL_DOWN_TEXT "DISPLAY"
|
||||
|
||||
#elif CONFIG_KEYPAD == SANSA_C200_PAD
|
||||
#define PEGBOX_SAVE BUTTON_SELECT
|
||||
#define PEGBOX_SELECT BUTTON_SELECT
|
||||
#define PEGBOX_QUIT BUTTON_POWER
|
||||
#define PEGBOX_RESTART BUTTON_REC
|
||||
#define PEGBOX_LVL_UP BUTTON_VOL_UP
|
||||
|
@ -259,14 +259,14 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RIGHT
|
||||
#define PEGBOX_LEFT BUTTON_LEFT
|
||||
|
||||
#define SAVE_TEXT "SELECT"
|
||||
#define SELECT_TEXT "SELECT"
|
||||
#define QUIT_TEXT "POWER"
|
||||
#define RESTART_TEXT "REC"
|
||||
#define LVL_UP_TEXT "VOL+"
|
||||
#define LVL_DOWN_TEXT "VOL-"
|
||||
|
||||
#elif CONFIG_KEYPAD == SANSA_CLIP_PAD
|
||||
#define PEGBOX_SAVE BUTTON_SELECT
|
||||
#define PEGBOX_SELECT BUTTON_SELECT
|
||||
#define PEGBOX_QUIT BUTTON_POWER
|
||||
#define PEGBOX_RESTART BUTTON_HOME
|
||||
#define PEGBOX_LVL_UP BUTTON_VOL_UP
|
||||
|
@ -276,14 +276,14 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RIGHT
|
||||
#define PEGBOX_LEFT BUTTON_LEFT
|
||||
|
||||
#define SAVE_TEXT "SELECT"
|
||||
#define SELECT_TEXT "SELECT"
|
||||
#define QUIT_TEXT "POWER"
|
||||
#define RESTART_TEXT "HOME"
|
||||
#define LVL_UP_TEXT "VOL+"
|
||||
#define LVL_DOWN_TEXT "VOL-"
|
||||
|
||||
#elif CONFIG_KEYPAD == SANSA_M200_PAD
|
||||
#define PEGBOX_SAVE (BUTTON_SELECT | BUTTON_REL)
|
||||
#define PEGBOX_SELECT (BUTTON_SELECT | BUTTON_REL)
|
||||
#define PEGBOX_QUIT BUTTON_POWER
|
||||
#define PEGBOX_RESTART (BUTTON_SELECT | BUTTON_UP)
|
||||
#define PEGBOX_LVL_UP BUTTON_VOL_UP
|
||||
|
@ -293,7 +293,7 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RIGHT
|
||||
#define PEGBOX_LEFT BUTTON_LEFT
|
||||
|
||||
#define SAVE_TEXT "SELECT"
|
||||
#define SELECT_TEXT "SELECT"
|
||||
#define QUIT_TEXT "POWER"
|
||||
#define RESTART_TEXT "SELECT+UP"
|
||||
#define LVL_UP_TEXT "VOL+"
|
||||
|
@ -301,7 +301,7 @@ PLUGIN_HEADER
|
|||
|
||||
|
||||
#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
|
||||
#define PEGBOX_SAVE BUTTON_RC_PLAY
|
||||
#define PEGBOX_SELECT BUTTON_RC_PLAY
|
||||
#define PEGBOX_QUIT BUTTON_RC_REC
|
||||
#define PEGBOX_RESTART BUTTON_RC_MODE
|
||||
#define PEGBOX_LVL_UP BUTTON_VOL_UP
|
||||
|
@ -311,7 +311,7 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RC_FF
|
||||
#define PEGBOX_LEFT BUTTON_RC_REW
|
||||
|
||||
#define SAVE_TEXT "REM. PLAY"
|
||||
#define SELECT_TEXT "REM. PLAY"
|
||||
#define QUIT_TEXT "REM. REC"
|
||||
#define RESTART_TEXT "REM. MODE"
|
||||
#define LVL_UP_TEXT "VOL+"
|
||||
|
@ -323,7 +323,7 @@ PLUGIN_HEADER
|
|||
#define QUIT_TEXT "POWER"
|
||||
|
||||
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
|
||||
#define PEGBOX_SAVE BUTTON_CUSTOM
|
||||
#define PEGBOX_SELECT BUTTON_CUSTOM
|
||||
#define PEGBOX_QUIT BUTTON_BACK
|
||||
#define PEGBOX_RESTART BUTTON_SELECT
|
||||
#define PEGBOX_LVL_UP BUTTON_PLAY
|
||||
|
@ -333,14 +333,14 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RIGHT
|
||||
#define PEGBOX_LEFT BUTTON_LEFT
|
||||
|
||||
#define SAVE_TEXT "CUSTOM"
|
||||
#define SELECT_TEXT "CUSTOM"
|
||||
#define QUIT_TEXT "BACK"
|
||||
#define RESTART_TEXT "MIDDLE"
|
||||
#define LVL_UP_TEXT "SELECT"
|
||||
#define LVL_DOWN_TEXT "MENU"
|
||||
|
||||
#elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD
|
||||
#define PEGBOX_SAVE BUTTON_VIEW
|
||||
#define PEGBOX_SELECT BUTTON_VIEW
|
||||
#define PEGBOX_QUIT BUTTON_POWER
|
||||
#define PEGBOX_RESTART BUTTON_MENU
|
||||
#define PEGBOX_LVL_UP BUTTON_VOL_UP
|
||||
|
@ -350,7 +350,7 @@ PLUGIN_HEADER
|
|||
#define PEGBOX_RIGHT BUTTON_RIGHT
|
||||
#define PEGBOX_LEFT BUTTON_LEFT
|
||||
|
||||
#define SAVE_TEXT "VIEW"
|
||||
#define SELECT_TEXT "VIEW"
|
||||
#define QUIT_TEXT "POWER"
|
||||
#define RESTART_TEXT "MENU"
|
||||
#define LVL_UP_TEXT "VOL+"
|
||||
|
@ -369,8 +369,8 @@ PLUGIN_HEADER
|
|||
#ifndef PEGBOX_QUIT
|
||||
#define PEGBOX_QUIT BUTTON_TOPLEFT
|
||||
#endif
|
||||
#ifndef PEGBOX_SAVE
|
||||
#define PEGBOX_SAVE BUTTON_CENTER
|
||||
#ifndef PEGBOX_SELECT
|
||||
#define PEGBOX_SELECT BUTTON_CENTER
|
||||
#endif
|
||||
#ifndef PEGBOX_RESTART
|
||||
#define PEGBOX_RESTART BUTTON_TOPRIGHT
|
||||
|
@ -393,8 +393,8 @@ PLUGIN_HEADER
|
|||
#ifndef PEGBOX_LEFT
|
||||
#define PEGBOX_LEFT BUTTON_MIDLEFT
|
||||
#endif
|
||||
#ifndef SAVE_TEXT
|
||||
#define SAVE_TEXT "CENTER"
|
||||
#ifndef SELECT_TEXT
|
||||
#define SELECT_TEXT "CENTER"
|
||||
#endif
|
||||
#ifndef QUIT_TEXT
|
||||
#define QUIT_TEXT "TOPLEFT"
|
||||
|
@ -724,16 +724,11 @@ static void pegbox_draw_board(struct game_context* pb)
|
|||
|
||||
type = pb->playboard[r][c];
|
||||
|
||||
switch(type) {
|
||||
case SPACE:
|
||||
break;
|
||||
|
||||
default:
|
||||
rb->lcd_bitmap_part(pegbox_pieces, 0, (type-1)*PIECE_HEIGHT,
|
||||
PIECE_WIDTH, c * PIECE_WIDTH + BOARD_X,
|
||||
r * PIECE_HEIGHT + BOARD_Y, PIECE_WIDTH,
|
||||
PIECE_HEIGHT);
|
||||
break;
|
||||
if(type != SPACE) {
|
||||
rb->lcd_bitmap_part(pegbox_pieces, 0, (type-1)*PIECE_HEIGHT,
|
||||
PIECE_WIDTH, c * PIECE_WIDTH + BOARD_X,
|
||||
r * PIECE_HEIGHT + BOARD_Y, PIECE_WIDTH,
|
||||
PIECE_HEIGHT);
|
||||
}
|
||||
|
||||
if(pb->playboard[r][c] == PLAYER) {
|
||||
|
@ -818,7 +813,7 @@ static void pegbox_new_piece(struct game_context* pb, unsigned int x_loc,
|
|||
else if(ret.action == TS_ACTION_CLICK
|
||||
&& (unsigned)ret.to.x == y_loc
|
||||
&& (unsigned)ret.to.y == x_loc)
|
||||
button = PEGBOX_SAVE;
|
||||
button = PEGBOX_SELECT;
|
||||
}
|
||||
#endif
|
||||
switch(button){
|
||||
|
@ -840,8 +835,9 @@ static void pegbox_new_piece(struct game_context* pb, unsigned int x_loc,
|
|||
else
|
||||
pb->playboard[x_loc][y_loc] = CIRCLE;
|
||||
break;
|
||||
case PEGBOX_SAVE:
|
||||
case PEGBOX_SELECT:
|
||||
exit=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -853,19 +849,20 @@ static void pegbox_move_player(struct game_context* pb, signed int x_dir,
|
|||
signed int y_dir)
|
||||
{
|
||||
unsigned int type1, type2;
|
||||
signed int r,c;
|
||||
signed int r1,c1,r2,c2;
|
||||
|
||||
r = pb->player_row+y_dir;
|
||||
c = pb->player_col+x_dir;
|
||||
r1 = pb->player_row+y_dir;
|
||||
c1 = pb->player_col+x_dir;
|
||||
r2 = pb->player_row+y_dir*2;
|
||||
c2 = pb->player_col+x_dir*2;
|
||||
|
||||
type1 = pb->playboard[r][c];
|
||||
type2 = pb->playboard[r+y_dir][c+x_dir];
|
||||
type1 = pb->playboard[r1][c1];
|
||||
type2 = pb->playboard[r2][c2];
|
||||
|
||||
if (r == ROWS || c == COLS || r < 0 || c < 0 || type1 == WALL)
|
||||
if (r1 == ROWS || c1 == COLS || r1 < 0 || c1 < 0 || type1 == WALL)
|
||||
return;
|
||||
else if(type1 != SPACE) {
|
||||
if (type2 == WALL || r+y_dir == ROWS || c+x_dir == COLS ||
|
||||
r+y_dir < 0 || c+x_dir < 0)
|
||||
if (r2 == ROWS || c2 == COLS || r2 < 0 || c2 < 0 || type2 == WALL)
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -880,25 +877,25 @@ static void pegbox_move_player(struct game_context* pb, signed int x_dir,
|
|||
pegbox_load_level(pb);
|
||||
}
|
||||
else if (type1 == SPACE)
|
||||
pb->playboard[r][c] = PLAYER;
|
||||
pb->playboard[r1][c1] = PLAYER;
|
||||
else {
|
||||
pb->playboard[r][c] = PLAYER;
|
||||
pb->playboard[r1][c1] = PLAYER;
|
||||
if(type1 == type2) {
|
||||
if (type1 == TRIANGLE)
|
||||
pb->playboard[r+y_dir][c+x_dir] = WALL;
|
||||
pb->playboard[r2][c2] = WALL;
|
||||
else if (type1 == CROSS) {
|
||||
pb->playboard[r][c] = SPACE;
|
||||
pegbox_new_piece(pb, r+y_dir, c+x_dir);
|
||||
pb->playboard[r][c] = PLAYER;
|
||||
pb->playboard[r1][c1] = SPACE;
|
||||
pegbox_new_piece(pb, r2, c2);
|
||||
pb->playboard[r1][c1] = PLAYER;
|
||||
}
|
||||
else
|
||||
pb->playboard[r+y_dir][c+x_dir] = SPACE;
|
||||
pb->playboard[r2][c2] = SPACE;
|
||||
}
|
||||
else if (type2 == SPACE)
|
||||
pb->playboard[r+y_dir][c+x_dir] = type1;
|
||||
pb->playboard[r2][c2] = type1;
|
||||
else if (type2 == HOLE) {
|
||||
if (type1 == SQUARE)
|
||||
pb->playboard[r+y_dir][c+x_dir] = SPACE;
|
||||
pb->playboard[r2][c2] = SPACE;
|
||||
}
|
||||
else {
|
||||
rb->splash(HZ*2, "Illegal Move!");
|
||||
|
@ -927,7 +924,7 @@ static bool pegbox_help(void)
|
|||
RESTART_TEXT, "to", "restart", "level", "",
|
||||
LVL_UP_TEXT, "to", "go", "up", "a", "level", "",
|
||||
LVL_DOWN_TEXT, "to", "go", "down", "a", "level", "",
|
||||
SAVE_TEXT, "to", "choose", "peg", "",
|
||||
SELECT_TEXT, "to", "choose", "peg", "",
|
||||
QUIT_TEXT, "to", "quit"
|
||||
};
|
||||
static struct style_text formation[]={
|
||||
|
@ -954,82 +951,60 @@ static bool pegbox_help(void)
|
|||
/***********************************************************************
|
||||
* pegbox_menu() is the game menu
|
||||
************************************************************************/
|
||||
static bool _ingame;
|
||||
static int pegbox_menu_cb(int action, const struct menu_item_ex *this_item)
|
||||
{
|
||||
int i = (intptr_t)this_item;
|
||||
if( action == ACTION_REQUEST_MENUITEM )
|
||||
{
|
||||
if((!_ingame && (i==0 || i==1)) || ( _ingame && i==2 ))
|
||||
return ACTION_EXIT_MENUITEM;
|
||||
}
|
||||
return action;
|
||||
}
|
||||
|
||||
static unsigned int pegbox_menu(struct game_context* pb, bool ingame)
|
||||
{
|
||||
int selected = 0;
|
||||
int last_level = pb->level;
|
||||
|
||||
MENUITEM_STRINGLIST (main_menu, "Pegbox Menu", pegbox_menu_cb,
|
||||
"Resume Game", "Restart Level", "Start Game",
|
||||
"Select Level", "Help",
|
||||
"Playback Control", "Quit");
|
||||
_ingame = ingame;
|
||||
rb->button_clear_queue();
|
||||
int choice = 0;
|
||||
|
||||
if (ingame) {
|
||||
MENUITEM_STRINGLIST (main_menu, "Pegbox Menu", NULL,
|
||||
"Resume Game",
|
||||
"Restart Level",
|
||||
"Select Level",
|
||||
"Help",
|
||||
"Playback Control",
|
||||
"Quit");
|
||||
|
||||
while (true) {
|
||||
switch (rb->do_menu(&main_menu, &choice, NULL, false)) {
|
||||
case 0:
|
||||
pegbox_draw_board(pb);
|
||||
return 0;
|
||||
case 1:
|
||||
pegbox_load_level(pb);
|
||||
pegbox_draw_board(pb);
|
||||
return 0;
|
||||
case 2:
|
||||
rb->set_int("Select Level", "", UNIT_INT,
|
||||
&pb->level, NULL, 1, 1,
|
||||
pb->highlevel, NULL);
|
||||
break;
|
||||
case 3:
|
||||
if (pegbox_help()==PLUGIN_USB_CONNECTED)
|
||||
return 1;
|
||||
break;
|
||||
case 4:
|
||||
playback_control(NULL);
|
||||
break;
|
||||
case 5:
|
||||
while (true) {
|
||||
switch (rb->do_menu(&main_menu, &selected, NULL, false)) {
|
||||
case 0:
|
||||
pb->level = last_level;
|
||||
pegbox_draw_board(pb);
|
||||
return 0;
|
||||
case 1:
|
||||
case 2:
|
||||
pegbox_load_level(pb);
|
||||
pegbox_draw_board(pb);
|
||||
return 0;
|
||||
case 3:
|
||||
if(rb->set_int("Select Level", "", UNIT_INT, &pb->level,
|
||||
NULL, 1, 1, pb->highlevel, NULL))
|
||||
return 1;
|
||||
case MENU_ATTACHED_USB:
|
||||
break;
|
||||
case 4:
|
||||
if (pegbox_help())
|
||||
return 1;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
MENUITEM_STRINGLIST (main_menu, "Pegbox Menu", NULL,
|
||||
"Start Game",
|
||||
"Select Level",
|
||||
"Help",
|
||||
"Playback Control",
|
||||
"Quit");
|
||||
|
||||
while (true) {
|
||||
switch (rb->do_menu(&main_menu, &choice, NULL, false)) {
|
||||
case 0:
|
||||
pegbox_load_level(pb);
|
||||
pegbox_draw_board(pb);
|
||||
return 0;
|
||||
case 1:
|
||||
rb->set_int("Select Level", "", UNIT_INT,
|
||||
&pb->level, NULL, 1, 1,
|
||||
pb->highlevel, NULL);
|
||||
break;
|
||||
case 2:
|
||||
if (pegbox_help()==PLUGIN_USB_CONNECTED)
|
||||
return 1;
|
||||
break;
|
||||
case 3:
|
||||
playback_control(NULL);
|
||||
break;
|
||||
case 4:
|
||||
break;
|
||||
case 5:
|
||||
if (playback_control(NULL))
|
||||
return 1;
|
||||
case MENU_ATTACHED_USB:
|
||||
return 1;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
return 1;
|
||||
case MENU_ATTACHED_USB:
|
||||
return 1;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1087,6 +1062,8 @@ static int pegbox_main(struct game_context* pb)
|
|||
if (pegbox_menu(pb, true)==1) {
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
|
||||
#ifdef PEGBOX_RESTART
|
||||
case PEGBOX_RESTART:
|
||||
pegbox_load_level(pb);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue