summaryrefslogtreecommitdiff
path: root/apps/recorder/sokoban.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/recorder/sokoban.c')
-rw-r--r--apps/recorder/sokoban.c31
1 files changed, 22 insertions, 9 deletions
diff --git a/apps/recorder/sokoban.c b/apps/recorder/sokoban.c
index bec556054a..3e5d447ae9 100644
--- a/apps/recorder/sokoban.c
+++ b/apps/recorder/sokoban.c
@@ -27,6 +27,7 @@
27#include "button.h" 27#include "button.h"
28#include "kernel.h" 28#include "kernel.h"
29#include "menu.h" 29#include "menu.h"
30#include "screens.h"
30 31
31#ifdef SIMULATOR 32#ifdef SIMULATOR
32#include <stdio.h> 33#include <stdio.h>
@@ -37,6 +38,10 @@
37#define SOKOBAN_TITLE_FONT 2 38#define SOKOBAN_TITLE_FONT 2
38#define NUM_LEVELS sizeof(levels)/320 39#define NUM_LEVELS sizeof(levels)/320
39 40
41static void load_level(int);
42static void update_screen(void);
43static bool sokoban_loop(void);
44
40static char board[16][20]; 45static char board[16][20];
41static int current_level=0; 46static int current_level=0;
42static int moves=0; 47static int moves=0;
@@ -1766,7 +1771,7 @@ static const char levels[][320] = {
1766}; 1771};
1767 1772
1768 1773
1769void load_level (int level_to_load) { 1774static void load_level (int level_to_load) {
1770 int a = 0; 1775 int a = 0;
1771 int b = 0; 1776 int b = 0;
1772 int c = 0; 1777 int c = 0;
@@ -1790,7 +1795,7 @@ void load_level (int level_to_load) {
1790 return; 1795 return;
1791} 1796}
1792 1797
1793void update_screen(void) { 1798static void update_screen(void) {
1794 int b = 0; 1799 int b = 0;
1795 int c = 0; 1800 int c = 0;
1796 char s[25]; 1801 char s[25];
@@ -1855,7 +1860,8 @@ void update_screen(void) {
1855 1860
1856 1861
1857 1862
1858void sokoban_loop(void) { 1863static bool sokoban_loop(void)
1864{
1859 int ii = 0; 1865 int ii = 0;
1860 moves = 0; 1866 moves = 0;
1861 current_level = 0; 1867 current_level = 0;
@@ -1868,7 +1874,7 @@ void sokoban_loop(void) {
1868 1874
1869 case BUTTON_OFF: 1875 case BUTTON_OFF:
1870 /* get out of here */ 1876 /* get out of here */
1871 return; 1877 return false;
1872 1878
1873 case BUTTON_F3: 1879 case BUTTON_F3:
1874 /* increase level */ 1880 /* increase level */
@@ -2170,6 +2176,10 @@ void sokoban_loop(void) {
2170 row++; 2176 row++;
2171 break; 2177 break;
2172 2178
2179 case SYS_USB_CONNECTED:
2180 usb_screen();
2181 return true;
2182
2173 default: 2183 default:
2174 idle = true; 2184 idle = true;
2175 break; 2185 break;
@@ -2192,20 +2202,23 @@ void sokoban_loop(void) {
2192 lcd_invertrect(0,0,111,63); 2202 lcd_invertrect(0,0,111,63);
2193 lcd_update(); 2203 lcd_update();
2194 if ( button_get(false) ) 2204 if ( button_get(false) )
2195 return; 2205 return false;
2196 } 2206 }
2197 return; 2207 return false;
2198 } 2208 }
2199 load_level(current_level); 2209 load_level(current_level);
2200 lcd_clear_display(); 2210 lcd_clear_display();
2201 update_screen(); 2211 update_screen();
2202 } 2212 }
2203 } 2213 }
2214
2215 return false;
2204} 2216}
2205 2217
2206 2218
2207Menu sokoban(void) 2219bool sokoban(void)
2208{ 2220{
2221 bool result;
2209 int w, h; 2222 int w, h;
2210 int len = strlen(SOKOBAN_TITLE); 2223 int len = strlen(SOKOBAN_TITLE);
2211 2224
@@ -2240,9 +2253,9 @@ Menu sokoban(void)
2240 lcd_update(); 2253 lcd_update();
2241 sleep(HZ*2); 2254 sleep(HZ*2);
2242 lcd_clear_display(); 2255 lcd_clear_display();
2243 sokoban_loop(); 2256 result = sokoban_loop();
2244 2257
2245 return MENU_OK; 2258 return result;
2246} 2259}
2247 2260
2248#endif 2261#endif