diff options
Diffstat (limited to 'apps/plugins/sudoku.c')
-rw-r--r-- | apps/plugins/sudoku.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/apps/plugins/sudoku.c b/apps/plugins/sudoku.c index e6fdece7ef..a44c39aa45 100644 --- a/apps/plugins/sudoku.c +++ b/apps/plugins/sudoku.c | |||
@@ -69,12 +69,15 @@ Example ".ss" file, and one with a saved state: | |||
69 | #if CONFIG_KEYPAD == RECORDER_PAD | 69 | #if CONFIG_KEYPAD == RECORDER_PAD |
70 | #define SUDOKU_BUTTON_QUIT BUTTON_OFF | 70 | #define SUDOKU_BUTTON_QUIT BUTTON_OFF |
71 | #define SUDOKU_BUTTON_TOGGLE BUTTON_PLAY | 71 | #define SUDOKU_BUTTON_TOGGLE BUTTON_PLAY |
72 | #define SUDOKU_BUTTON_MENU BUTTON_F3 | 72 | #define SUDOKU_BUTTON_MENU BUTTON_F1 |
73 | 73 | ||
74 | #elif CONFIG_KEYPAD == ONDIO_PAD | 74 | #elif CONFIG_KEYPAD == ONDIO_PAD |
75 | #define SUDOKU_BUTTON_QUIT BUTTON_OFF | 75 | #define SUDOKU_BUTTON_QUIT BUTTON_OFF |
76 | #define SUDOKU_BUTTON_TOGGLE BUTTON_MENU | 76 | #define SUDOKU_BUTTON_ALTTOGGLE (BUTTON_MENU | BUTTON_DOWN) |
77 | #define SUDOKU_BUTTON_MENU (BUTTON_MENU | BUTTON_OFF) | 77 | #define SUDOKU_BUTTON_TOGGLE_PRE BUTTON_MENU |
78 | #define SUDOKU_BUTTON_TOGGLE (BUTTON_MENU | BUTTON_REL) | ||
79 | #define SUDOKU_BUTTON_MENU_PRE BUTTON_MENU | ||
80 | #define SUDOKU_BUTTON_MENU (BUTTON_MENU | BUTTON_REPEAT) | ||
78 | 81 | ||
79 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | 82 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
80 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | 83 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
@@ -1058,6 +1061,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
1058 | { | 1061 | { |
1059 | bool exit; | 1062 | bool exit; |
1060 | int button; | 1063 | int button; |
1064 | int lastbutton = BUTTON_NONE; | ||
1061 | long ticks; | 1065 | long ticks; |
1062 | struct sudoku_state_t state; | 1066 | struct sudoku_state_t state; |
1063 | 1067 | ||
@@ -1103,6 +1107,11 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
1103 | case SUDOKU_BUTTON_ALTTOGGLE: | 1107 | case SUDOKU_BUTTON_ALTTOGGLE: |
1104 | #endif | 1108 | #endif |
1105 | case SUDOKU_BUTTON_TOGGLE: | 1109 | case SUDOKU_BUTTON_TOGGLE: |
1110 | #ifdef SUDOKU_BUTTON_TOGGLE_PRE | ||
1111 | if ((button == SUDOKU_BUTTON_TOGGLE) | ||
1112 | && (lastbutton != SUDOKU_BUTTON_TOGGLE_PRE)) | ||
1113 | break; | ||
1114 | #endif | ||
1106 | /* Increment digit */ | 1115 | /* Increment digit */ |
1107 | ticks=*rb->current_tick; | 1116 | ticks=*rb->current_tick; |
1108 | if (state.startboard[state.y][state.x]=='0') { | 1117 | if (state.startboard[state.y][state.x]=='0') { |
@@ -1158,6 +1167,10 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
1158 | break; | 1167 | break; |
1159 | 1168 | ||
1160 | case SUDOKU_BUTTON_MENU: | 1169 | case SUDOKU_BUTTON_MENU: |
1170 | #ifdef SUDOKU_BUTTON_MENU_PRE | ||
1171 | if (lastbutton != SUDOKU_BUTTON_MENU_PRE) | ||
1172 | break; | ||
1173 | #endif | ||
1161 | /* Don't let the user leave a game in a bad state */ | 1174 | /* Don't let the user leave a game in a bad state */ |
1162 | if (check_status(&state)) { | 1175 | if (check_status(&state)) { |
1163 | rb->splash(HZ*2, true, "Illegal move!"); | 1176 | rb->splash(HZ*2, true, "Illegal move!"); |
@@ -1177,6 +1190,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
1177 | } | 1190 | } |
1178 | break; | 1191 | break; |
1179 | } | 1192 | } |
1193 | if (button != BUTTON_NONE) | ||
1194 | lastbutton = button; | ||
1180 | 1195 | ||
1181 | display_board(&state); | 1196 | display_board(&state); |
1182 | } | 1197 | } |