summaryrefslogtreecommitdiff
path: root/apps/plugins/sokoban.c
diff options
context:
space:
mode:
authorSebastian Leonhardt <sebastian.leonhardt@web.de>2015-07-20 01:50:26 +0200
committerGerrit Rockbox <gerrit@rockbox.org>2015-11-15 23:46:39 +0100
commita507bb283782ee3adb1fc9ba0c6f094108ef558c (patch)
treeacae6cf04f8e34172375061b6fbdc11b6ffb84cb /apps/plugins/sokoban.c
parenta8758c953d50fb020b245d5739c41de113638b49 (diff)
downloadrockbox-a507bb283782ee3adb1fc9ba0c6f094108ef558c.tar.gz
rockbox-a507bb283782ee3adb1fc9ba0c6f094108ef558c.zip
YH8xx,YH9xx: Keymap improvement
The main "innovation" in this patch are two "virtual buttons" for the record switch on YH92x targets. When the switch state changes, a single BUTTON_REC_SW_ON or .._OFF button event will be generated. Thus keymap code can react on switching, but not on the actual state of the switch. Wherever sensible, the following user scheme is applied: - use PLAY as confirm button - use REW button or Long REW to exit - use REC (YH820) or FFWD (YH92X) as modifier key for button combos Change-Id: Ic8d1db9cc6869daed8dda98990dfdf7f6fd5d5a1
Diffstat (limited to 'apps/plugins/sokoban.c')
-rw-r--r--apps/plugins/sokoban.c43
1 files changed, 38 insertions, 5 deletions
diff --git a/apps/plugins/sokoban.c b/apps/plugins/sokoban.c
index 70bc57e218..76eb6288cd 100644
--- a/apps/plugins/sokoban.c
+++ b/apps/plugins/sokoban.c
@@ -474,19 +474,34 @@
474#define SOKOBAN_MENU BUTTON_POWER 474#define SOKOBAN_MENU BUTTON_POWER
475#define SOKOBAN_MENU_NAME "[POWER]" 475#define SOKOBAN_MENU_NAME "[POWER]"
476 476
477#elif (CONFIG_KEYPAD == SAMSUNG_YH820_PAD) || \ 477#elif CONFIG_KEYPAD == SAMSUNG_YH820_PAD
478 (CONFIG_KEYPAD == SAMSUNG_YH920_PAD)
479#define SOKOBAN_LEFT BUTTON_LEFT 478#define SOKOBAN_LEFT BUTTON_LEFT
480#define SOKOBAN_RIGHT BUTTON_RIGHT 479#define SOKOBAN_RIGHT BUTTON_RIGHT
481#define SOKOBAN_UP BUTTON_UP 480#define SOKOBAN_UP BUTTON_UP
482#define SOKOBAN_DOWN BUTTON_DOWN 481#define SOKOBAN_DOWN BUTTON_DOWN
483#define SOKOBAN_MENU BUTTON_REC 482#define SOKOBAN_MENU BUTTON_PLAY
483#define SOKOBAN_UNDO BUTTON_REW
484#define SOKOBAN_REDO BUTTON_FFWD
485#define SOKOBAN_LEVEL_DOWN (BUTTON_REC | BUTTON_DOWN)
486#define SOKOBAN_LEVEL_REPEAT (BUTTON_REC | BUTTON_RIGHT)
487#define SOKOBAN_LEVEL_UP (BUTTON_REC | BUTTON_UP)
488#define SOKOBAN_QUIT_REPLAY BUTTON_REW
489#define SOKOBAN_PAUSE BUTTON_PLAY
490#define BUTTON_SAVE BUTTON_PLAY
491#define BUTTON_SAVE_NAME "PLAY"
492
493#elif CONFIG_KEYPAD == SAMSUNG_YH920_PAD
494#define SOKOBAN_LEFT BUTTON_LEFT
495#define SOKOBAN_RIGHT BUTTON_RIGHT
496#define SOKOBAN_UP BUTTON_UP
497#define SOKOBAN_DOWN BUTTON_DOWN
498#define SOKOBAN_MENU BUTTON_PLAY
484#define SOKOBAN_UNDO BUTTON_REW 499#define SOKOBAN_UNDO BUTTON_REW
485#define SOKOBAN_UNDO_PRE (BUTTON_REW | BUTTON_LEFT)
486#define SOKOBAN_REDO BUTTON_FFWD 500#define SOKOBAN_REDO BUTTON_FFWD
487#define SOKOBAN_LEVEL_DOWN (BUTTON_PLAY | BUTTON_DOWN) 501#define SOKOBAN_LEVEL_DOWN (BUTTON_PLAY | BUTTON_DOWN)
488#define SOKOBAN_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_RIGHT) 502#define SOKOBAN_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_RIGHT)
489#define SOKOBAN_LEVEL_UP (BUTTON_PLAY | BUTTON_UP) 503#define SOKOBAN_LEVEL_UP (BUTTON_PLAY | BUTTON_UP)
504#define SOKOBAN_QUIT_REPLAY BUTTON_REW
490#define SOKOBAN_PAUSE BUTTON_PLAY 505#define SOKOBAN_PAUSE BUTTON_PLAY
491#define BUTTON_SAVE BUTTON_PLAY 506#define BUTTON_SAVE BUTTON_PLAY
492#define BUTTON_SAVE_NAME "PLAY" 507#define BUTTON_SAVE_NAME "PLAY"
@@ -662,6 +677,10 @@
662#endif 677#endif
663#endif 678#endif
664 679
680#ifndef SOKOBAN_QUIT_REPLAY
681#define SOKOBAN_QUIT_REPLAY SOKOBAN_MENU
682#endif
683
665#define SOKOBAN_FONT FONT_SYSFIXED 684#define SOKOBAN_FONT FONT_SYSFIXED
666 685
667 686
@@ -1413,7 +1432,7 @@ static bool load(char *filename, bool silent)
1413 1432
1414 while ((button = rb->button_get(false)) || paused) { 1433 while ((button = rb->button_get(false)) || paused) {
1415 switch (button) { 1434 switch (button) {
1416 case SOKOBAN_MENU: 1435 case SOKOBAN_QUIT_REPLAY:
1417 /* Pretend the level is complete so we'll quit */ 1436 /* Pretend the level is complete so we'll quit */
1418 current_info.level.boxes_to_go = 0; 1437 current_info.level.boxes_to_go = 0;
1419 return true; 1438 return true;
@@ -1602,6 +1621,20 @@ static int sokoban_menu(void)
1602 rb->lcd_putsxy(3, 36, "[VOL-] Previous Level"); 1621 rb->lcd_putsxy(3, 36, "[VOL-] Previous Level");
1603 rb->lcd_putsxy(3, 46, "[NEXT+PREV] Restart Level"); 1622 rb->lcd_putsxy(3, 46, "[NEXT+PREV] Restart Level");
1604 rb->lcd_putsxy(3, 56, "[VOL+] Next Level"); 1623 rb->lcd_putsxy(3, 56, "[VOL+] Next Level");
1624#elif CONFIG_KEYPAD == SAMSUNG_YH920_PAD
1625 rb->lcd_putsxy(3, 6, "[PLAY] Menu");
1626 rb->lcd_putsxy(3, 16, "[REW] Undo");
1627 rb->lcd_putsxy(3, 26, "[FFWD] Redo");
1628 rb->lcd_putsxy(3, 36, "[PLAY+DOWN] Previous Level");
1629 rb->lcd_putsxy(3, 46, "[PLAY+RIGHT] Restart Level");
1630 rb->lcd_putsxy(3, 56, "[PLAY+UP] Next Level");
1631#elif CONFIG_KEYPAD == SAMSUNG_YH820_PAD
1632 rb->lcd_putsxy(3, 6, "[PLAY] Menu");
1633 rb->lcd_putsxy(3, 16, "[REW] Undo");
1634 rb->lcd_putsxy(3, 26, "[FFWD] Redo");
1635 rb->lcd_putsxy(3, 36, "[REC+DOWN] Prev. Lvl");
1636 rb->lcd_putsxy(3, 46, "[REC+RIGHT] Rest. Lvl");
1637 rb->lcd_putsxy(3, 56, "[REC+UP] Next Level");
1605#endif 1638#endif
1606 1639
1607#ifdef HAVE_TOUCHSCREEN 1640#ifdef HAVE_TOUCHSCREEN