diff options
Diffstat (limited to 'apps/plugins')
-rw-r--r-- | apps/plugins/sudoku/sudoku.c | 67 | ||||
-rw-r--r-- | apps/plugins/sudoku/sudoku.h | 28 |
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 | ||
67 | PLUGIN_HEADER | 67 | PLUGIN_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 | |||
69 | struct plugin_api* rb; | 73 | struct 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 |