1
0
Fork 0
forked from len0rd/rockbox

Plugin rework 2: (all) Compile-time keyboard configuration, for Ondio adaption. (all) Now using the default event handler, standard placement is now in switch() default case. (minesweeper,pong,snake,snake2) added USB handling. (mandelbrot,mosaique) Fixed return value. (minesweeper) fast moving with button repeat. (oscillograph) Fixed cleanup in USB case.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5304 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jens Arnold 2004-10-18 21:45:00 +00:00
parent d24766675d
commit e35a658ded
11 changed files with 543 additions and 163 deletions

View file

@ -33,6 +33,17 @@ dir is the current direction of the snake - 0=up, 1=right, 2=down, 3=left;
#include "plugin.h"
#ifdef HAVE_LCD_BITMAP
/* variable button definitions */
#if CONFIG_KEYPAD == RECORDER_PAD
#define SNAKE_QUIT BUTTON_OFF
#define SNAKE_PLAYPAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == ONDIO_PAD
#define SNAKE_QUIT BUTTON_OFF
#define SNAKE_PLAYPAUSE BUTTON_MENU
#endif
static int board[28][16],snakelength;
static unsigned int score,hiscore=0;
static short dir,frames,apple,level=1,dead=0;
@ -156,26 +167,39 @@ void redraw (void)
}
void game_pause (void) {
int button;
rb->lcd_clear_display();
rb->lcd_putsxy(3,12,"Game Paused");
#if CONFIG_KEYPAD == RECORDER_PAD
rb->lcd_putsxy(3,22,"[Play] to resume");
#elif CONFIG_KEYPAD == ONDIO_PAD
rb->lcd_putsxy(3,22,"[Menu] to resume");
#endif
rb->lcd_putsxy(3,32,"[Off] to quit");
rb->lcd_update();
while (1) {
switch (rb->button_get(true)) {
case BUTTON_OFF:
button=rb->button_get(true);
switch (button) {
case SNAKE_QUIT:
dead=1;
return;
case BUTTON_PLAY:
case SNAKE_PLAYPAUSE:
redraw();
rb->sleep(HZ/2);
return;
default:
if (rb->default_event_handler(button)==SYS_USB_CONNECTED) {
dead=2;
return;
}
break;
}
}
}
void game (void) {
int button;
short x,y;
while (1) {
frame();
@ -198,7 +222,8 @@ void game (void) {
rb->sleep(HZ/level);
switch (rb->button_get(false)) {
button=rb->button_get(false);
switch (button) {
case BUTTON_UP:
if (dir!=2) dir=0;
break;
@ -211,17 +236,24 @@ void game (void) {
case BUTTON_LEFT:
if (dir!=1) dir=3;
break;
case BUTTON_OFF:
case SNAKE_QUIT:
dead=1;
return;
case BUTTON_PLAY:
case SNAKE_PLAYPAUSE:
game_pause();
break;
}
default:
if (rb->default_event_handler(button)==SYS_USB_CONNECTED) {
dead=2;
return;
}
break;
}
}
}
void game_init(void) {
int button;
short x,y;
char plevel[10],phscore[20];
@ -244,12 +276,17 @@ void game_init(void) {
rb->lcd_puts(0,0, plevel);
rb->lcd_puts(0,1, "(1-slow, 9-fast)");
rb->lcd_puts(0,2, "OFF - quit");
#if CONFIG_KEYPAD == RECORDER_PAD
rb->lcd_puts(0,3, "PLAY - start/pause");
#elif CONFIG_KEYPAD == ONDIO_PAD
rb->lcd_puts(0,3, "MENU - start/pause");
#endif
rb->lcd_puts(0,4, phscore);
rb->lcd_update();
while (1) {
switch (rb->button_get(true)) {
while (1) {
button=rb->button_get(true);
switch (button) {
case BUTTON_RIGHT:
case BUTTON_UP:
if (level<9)
@ -260,13 +297,19 @@ void game_init(void) {
if (level>1)
level--;
break;
case BUTTON_OFF:
case SNAKE_QUIT:
dead=1;
return;
break;
case BUTTON_PLAY:
case SNAKE_PLAYPAUSE:
return;
break;
default:
if (rb->default_event_handler(button)==SYS_USB_CONNECTED) {
dead=2;
return;
}
break;
}
rb->snprintf(plevel,sizeof(plevel),"Level - %d",level);
rb->lcd_puts(0,0, plevel);
@ -283,8 +326,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
game_init();
rb->lcd_clear_display();
game();
return false;
game();
return (dead==1)?PLUGIN_OK:PLUGIN_USB_CONNECTED;
}
#endif