summaryrefslogtreecommitdiff
path: root/apps/plugins/sudoku
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2006-04-02 00:09:33 +0000
committerDave Chapman <dave@dchapman.com>2006-04-02 00:09:33 +0000
commita698c3e43e84253e6df132ce506b0a2894ea5599 (patch)
treec81f2c2987734bebd35452a5b8219ba87b212e4f /apps/plugins/sudoku
parent3a3304fa31c081cfd41e125b814eab58f83422c0 (diff)
downloadrockbox-a698c3e43e84253e6df132ce506b0a2894ea5599.tar.gz
rockbox-a698c3e43e84253e6df132ce506b0a2894ea5599.zip
Change (and hopefully simplify) the iPod button mappings and correct some comments. iPod mappings are now: Clickwheel for cursor movement, next/prev to increment/decrement number under cursor, MENU to bring up the menu, and PLAY to add a number to the scratchpad.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9415 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/sudoku')
-rw-r--r--apps/plugins/sudoku/sudoku.c67
-rw-r--r--apps/plugins/sudoku/sudoku.h28
2 files changed, 79 insertions, 16 deletions
diff --git a/apps/plugins/sudoku/sudoku.c b/apps/plugins/sudoku/sudoku.c
index 9ca5376a58..bd171f1192 100644
--- a/apps/plugins/sudoku/sudoku.c
+++ b/apps/plugins/sudoku/sudoku.c
@@ -66,6 +66,10 @@ Example ".ss" file, and one with a saved state:
66 66
67PLUGIN_HEADER 67PLUGIN_HEADER
68 68
69/* here is a global api struct pointer. while not strictly necessary,
70 it's nice not to have to pass the api pointer in all function calls
71 in the plugin */
72
69struct plugin_api* rb; 73struct plugin_api* rb;
70 74
71/* The bitmaps */ 75/* The bitmaps */
@@ -887,7 +891,7 @@ bool sudoku_menu(struct sudoku_state_t* state)
887 result=rb->menu_show(m); 891 result=rb->menu_show(m);
888 892
889 switch (result) { 893 switch (result) {
890 case 0: /* Save state */ 894 case 0: /* Audio playback */
891 playback_control(rb); 895 playback_control(rb);
892 break; 896 break;
893 897
@@ -991,10 +995,12 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
991 button = rb->button_get(true); 995 button = rb->button_get(true);
992 996
993 switch(button){ 997 switch(button){
998#ifdef SUDOKU_BUTTON_QUIT
994 /* Exit game */ 999 /* Exit game */
995 case SUDOKU_BUTTON_QUIT: 1000 case SUDOKU_BUTTON_QUIT:
996 exit=1; 1001 exit=1;
997 break; 1002 break;
1003#endif
998 1004
999 /* Increment digit */ 1005 /* Increment digit */
1000#ifdef SUDOKU_BUTTON_ALTTOGGLE 1006#ifdef SUDOKU_BUTTON_ALTTOGGLE
@@ -1037,26 +1043,74 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
1037 update_cell(&state,state.y,state.x); 1043 update_cell(&state,state.y,state.x);
1038 break; 1044 break;
1039 1045
1046#ifdef SUDOKU_BUTTON_TOGGLEBACK
1047 case SUDOKU_BUTTON_TOGGLEBACK | BUTTON_REPEAT:
1048 /* Slow down the repeat speed to 1/3 second */
1049 if ((*rb->current_tick-ticks) < (HZ/3)) {
1050 break;
1051 }
1052
1053 case SUDOKU_BUTTON_TOGGLEBACK:
1054 /* Decrement digit */
1055 ticks=*rb->current_tick;
1056 if (state.editmode) {
1057 if (state.startboard[state.y][state.x]=='0') {
1058 state.startboard[state.y][state.x]='9';
1059 state.currentboard[state.y][state.x]='9';
1060 } else {
1061 state.startboard[state.y][state.x]--;
1062 state.currentboard[state.y][state.x]--;
1063 }
1064 } else {
1065 if (state.startboard[state.y][state.x]=='0') {
1066 if (state.currentboard[state.y][state.x]=='0') {
1067 state.currentboard[state.y][state.x]='9';
1068 } else {
1069 state.currentboard[state.y][state.x]--;
1070 }
1071 }
1072 }
1073 update_cell(&state,state.y,state.x);
1074 break;
1075#endif
1076
1040 /* move cursor left */ 1077 /* move cursor left */
1041 case BUTTON_LEFT: 1078 case SUDOKU_BUTTON_LEFT:
1042 case (BUTTON_LEFT | BUTTON_REPEAT): 1079 case (SUDOKU_BUTTON_LEFT | BUTTON_REPEAT):
1043 if (state.x==0) { 1080 if (state.x==0) {
1081#ifndef SUDOKU_BUTTON_UP
1082 if (state.y==0) {
1083 move_cursor(&state,8,8);
1084 } else {
1085 move_cursor(&state,8,state.y-1);
1086 }
1087#else
1044 move_cursor(&state,8,state.y); 1088 move_cursor(&state,8,state.y);
1089#endif
1045 } else { 1090 } else {
1046 move_cursor(&state,state.x-1,state.y); 1091 move_cursor(&state,state.x-1,state.y);
1047 } 1092 }
1048 break; 1093 break;
1049 1094
1050 /* move cursor right */ 1095 /* move cursor right */
1051 case BUTTON_RIGHT: 1096 case SUDOKU_BUTTON_RIGHT:
1052 case (BUTTON_RIGHT | BUTTON_REPEAT): 1097 case (SUDOKU_BUTTON_RIGHT | BUTTON_REPEAT):
1053 if (state.x==8) { 1098 if (state.x==8) {
1099#ifndef SUDOKU_BUTTON_DOWN
1100 if (state.y==8) {
1101 move_cursor(&state,0,0);
1102 } else {
1103 move_cursor(&state,0,state.y+1);
1104 }
1105#else
1054 move_cursor(&state,0,state.y); 1106 move_cursor(&state,0,state.y);
1107#endif
1055 } else { 1108 } else {
1056 move_cursor(&state,state.x+1,state.y); 1109 move_cursor(&state,state.x+1,state.y);
1057 } 1110 }
1058 break; 1111 break;
1059 1112
1113#ifdef SUDOKU_BUTTON_UP
1060 /* move cursor up */ 1114 /* move cursor up */
1061 case SUDOKU_BUTTON_UP: 1115 case SUDOKU_BUTTON_UP:
1062 case (SUDOKU_BUTTON_UP | BUTTON_REPEAT): 1116 case (SUDOKU_BUTTON_UP | BUTTON_REPEAT):
@@ -1066,7 +1120,9 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
1066 move_cursor(&state,state.x,state.y-1); 1120 move_cursor(&state,state.x,state.y-1);
1067 } 1121 }
1068 break; 1122 break;
1123#endif
1069 1124
1125#ifdef SUDOKU_BUTTON_DOWN
1070 /* move cursor down */ 1126 /* move cursor down */
1071 case SUDOKU_BUTTON_DOWN: 1127 case SUDOKU_BUTTON_DOWN:
1072 case (SUDOKU_BUTTON_DOWN | BUTTON_REPEAT): 1128 case (SUDOKU_BUTTON_DOWN | BUTTON_REPEAT):
@@ -1076,6 +1132,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
1076 move_cursor(&state,state.x,state.y+1); 1132 move_cursor(&state,state.x,state.y+1);
1077 } 1133 }
1078 break; 1134 break;
1135#endif
1079 1136
1080 case SUDOKU_BUTTON_MENU: 1137 case SUDOKU_BUTTON_MENU:
1081#ifdef SUDOKU_BUTTON_MENU_PRE 1138#ifdef SUDOKU_BUTTON_MENU_PRE
diff --git a/apps/plugins/sudoku/sudoku.h b/apps/plugins/sudoku/sudoku.h
index cdad581767..0985ff5710 100644
--- a/apps/plugins/sudoku/sudoku.h
+++ b/apps/plugins/sudoku/sudoku.h
@@ -22,11 +22,6 @@
22 22
23#include "plugin.h" 23#include "plugin.h"
24 24
25/* here is a global api struct pointer. while not strictly necessary,
26 it's nice not to have to pass the api pointer in all function calls
27 in the plugin */
28
29#define STATE_FILE PLUGIN_DIR "/sudoku.state"
30#define GAME_FILE PLUGIN_DIR "/sudoku.ss" 25#define GAME_FILE PLUGIN_DIR "/sudoku.ss"
31 26
32/* variable button definitions */ 27/* variable button definitions */
@@ -34,6 +29,8 @@
34#define SUDOKU_BUTTON_QUIT BUTTON_OFF 29#define SUDOKU_BUTTON_QUIT BUTTON_OFF
35#define SUDOKU_BUTTON_UP BUTTON_UP 30#define SUDOKU_BUTTON_UP BUTTON_UP
36#define SUDOKU_BUTTON_DOWN BUTTON_DOWN 31#define SUDOKU_BUTTON_DOWN BUTTON_DOWN
32#define SUDOKU_BUTTON_LEFT BUTTON_LEFT
33#define SUDOKU_BUTTON_RIGHT BUTTON_RIGHT
37#define SUDOKU_BUTTON_TOGGLE BUTTON_PLAY 34#define SUDOKU_BUTTON_TOGGLE BUTTON_PLAY
38#define SUDOKU_BUTTON_MENU BUTTON_F1 35#define SUDOKU_BUTTON_MENU BUTTON_F1
39#define SUDOKU_BUTTON_POSSIBLE BUTTON_F2 36#define SUDOKU_BUTTON_POSSIBLE BUTTON_F2
@@ -42,6 +39,8 @@
42#define SUDOKU_BUTTON_QUIT BUTTON_OFF 39#define SUDOKU_BUTTON_QUIT BUTTON_OFF
43#define SUDOKU_BUTTON_UP BUTTON_UP 40#define SUDOKU_BUTTON_UP BUTTON_UP
44#define SUDOKU_BUTTON_DOWN BUTTON_DOWN 41#define SUDOKU_BUTTON_DOWN BUTTON_DOWN
42#define SUDOKU_BUTTON_LEFT BUTTON_LEFT
43#define SUDOKU_BUTTON_RIGHT BUTTON_RIGHT
45#define SUDOKU_BUTTON_ALTTOGGLE (BUTTON_MENU | BUTTON_DOWN) 44#define SUDOKU_BUTTON_ALTTOGGLE (BUTTON_MENU | BUTTON_DOWN)
46#define SUDOKU_BUTTON_TOGGLE_PRE BUTTON_MENU 45#define SUDOKU_BUTTON_TOGGLE_PRE BUTTON_MENU
47#define SUDOKU_BUTTON_TOGGLE (BUTTON_MENU | BUTTON_REL) 46#define SUDOKU_BUTTON_TOGGLE (BUTTON_MENU | BUTTON_REL)
@@ -54,6 +53,8 @@
54#define SUDOKU_BUTTON_QUIT BUTTON_OFF 53#define SUDOKU_BUTTON_QUIT BUTTON_OFF
55#define SUDOKU_BUTTON_UP BUTTON_UP 54#define SUDOKU_BUTTON_UP BUTTON_UP
56#define SUDOKU_BUTTON_DOWN BUTTON_DOWN 55#define SUDOKU_BUTTON_DOWN BUTTON_DOWN
56#define SUDOKU_BUTTON_LEFT BUTTON_LEFT
57#define SUDOKU_BUTTON_RIGHT BUTTON_RIGHT
57#define SUDOKU_BUTTON_ALTTOGGLE BUTTON_ON 58#define SUDOKU_BUTTON_ALTTOGGLE BUTTON_ON
58#define SUDOKU_BUTTON_TOGGLE BUTTON_SELECT 59#define SUDOKU_BUTTON_TOGGLE BUTTON_SELECT
59#define SUDOKU_BUTTON_MENU BUTTON_MODE 60#define SUDOKU_BUTTON_MENU BUTTON_MODE
@@ -61,17 +62,20 @@
61 62
62#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ 63#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
63 (CONFIG_KEYPAD == IPOD_3G_PAD) 64 (CONFIG_KEYPAD == IPOD_3G_PAD)
64#define SUDOKU_BUTTON_QUIT (BUTTON_SELECT | BUTTON_MENU) 65#define SUDOKU_BUTTON_MENU BUTTON_MENU
65#define SUDOKU_BUTTON_UP BUTTON_SCROLL_BACK 66#define SUDOKU_BUTTON_LEFT BUTTON_SCROLL_BACK
66#define SUDOKU_BUTTON_DOWN BUTTON_SCROLL_FWD 67#define SUDOKU_BUTTON_RIGHT BUTTON_SCROLL_FWD
67#define SUDOKU_BUTTON_TOGGLE BUTTON_SELECT 68#define SUDOKU_BUTTON_ALTTOGGLE BUTTON_SELECT
68#define SUDOKU_BUTTON_MENU BUTTON_MENU 69#define SUDOKU_BUTTON_TOGGLE BUTTON_RIGHT
69#define SUDOKU_BUTTON_POSSIBLE (BUTTON_SELECT | BUTTON_LEFT) 70#define SUDOKU_BUTTON_TOGGLEBACK BUTTON_LEFT
71#define SUDOKU_BUTTON_POSSIBLE BUTTON_PLAY
70 72
71#elif (CONFIG_KEYPAD == IAUDIO_X5_PAD) 73#elif (CONFIG_KEYPAD == IAUDIO_X5_PAD)
72#define SUDOKU_BUTTON_QUIT BUTTON_POWER 74#define SUDOKU_BUTTON_QUIT BUTTON_POWER
73#define SUDOKU_BUTTON_UP BUTTON_UP 75#define SUDOKU_BUTTON_UP BUTTON_UP
74#define SUDOKU_BUTTON_DOWN BUTTON_DOWN 76#define SUDOKU_BUTTON_DOWN BUTTON_DOWN
77#define SUDOKU_BUTTON_LEFT BUTTON_LEFT
78#define SUDOKU_BUTTON_RIGHT BUTTON_RIGHT
75#define SUDOKU_BUTTON_TOGGLE BUTTON_SELECT 79#define SUDOKU_BUTTON_TOGGLE BUTTON_SELECT
76#define SUDOKU_BUTTON_MENU BUTTON_PLAY 80#define SUDOKU_BUTTON_MENU BUTTON_PLAY
77#define SUDOKU_BUTTON_POSSIBLE BUTTON_REC 81#define SUDOKU_BUTTON_POSSIBLE BUTTON_REC
@@ -80,6 +84,8 @@
80#define SUDOKU_BUTTON_QUIT BUTTON_A 84#define SUDOKU_BUTTON_QUIT BUTTON_A
81#define SUDOKU_BUTTON_UP BUTTON_UP 85#define SUDOKU_BUTTON_UP BUTTON_UP
82#define SUDOKU_BUTTON_DOWN BUTTON_DOWN 86#define SUDOKU_BUTTON_DOWN BUTTON_DOWN
87#define SUDOKU_BUTTON_LEFT BUTTON_LEFT
88#define SUDOKU_BUTTON_RIGHT BUTTON_RIGHT
83#define SUDOKU_BUTTON_TOGGLE BUTTON_SELECT 89#define SUDOKU_BUTTON_TOGGLE BUTTON_SELECT
84#define SUDOKU_BUTTON_MENU BUTTON_MENU 90#define SUDOKU_BUTTON_MENU BUTTON_MENU
85#define SUDOKU_BUTTON_POSSIBLE BUTTON_POWER 91#define SUDOKU_BUTTON_POSSIBLE BUTTON_POWER