1
0
Fork 0
forked from len0rd/rockbox

Invadrox: Add support for both touchscreen and buttons control of the game.

- Add buttons support for Cowon D2
- Introduce some mighty #ifdef hell :-(


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23941 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Tomer Shalev 2009-12-12 10:07:37 +00:00
parent 703468f0a6
commit be7170c89c

View file

@ -157,6 +157,9 @@ PLUGIN_HEADER
#elif CONFIG_KEYPAD == COWOND2_PAD #elif CONFIG_KEYPAD == COWOND2_PAD
#define QUIT BUTTON_POWER #define QUIT BUTTON_POWER
#define LEFT BUTTON_MINUS
#define RIGHT BUTTON_PLUS
#define FIRE BUTTON_MENU
#elif CONFIG_KEYPAD == IAUDIO67_PAD #elif CONFIG_KEYPAD == IAUDIO67_PAD
@ -197,18 +200,32 @@ CONFIG_KEYPAD == MROBE500_PAD
#endif #endif
#ifdef HAVE_TOUCHSCREEN #ifdef HAVE_TOUCHSCREEN
#ifndef QUIT
#define QUIT BUTTON_TOPLEFT #define TOUCHSCREEN_QUIT BUTTON_TOPLEFT
#define TOUCHSCREEN_LEFT (BUTTON_MIDLEFT | BUTTON_BOTTOMLEFT)
#define TOUCHSCREEN_RIGHT (BUTTON_MIDRIGHT | BUTTON_BOTTOMRIGHT)
#define TOUCHSCREEN_FIRE (BUTTON_CENTER | BUTTON_BOTTOMMIDDLE)
#ifdef RC_QUIT
#define ACTION_QUIT (QUIT | TOUCHSCREEN_QUIT | RC_QUIT)
#else
#define ACTION_QUIT (QUIT | TOUCHSCREEN_QUIT)
#endif #endif
#ifndef LEFT #define ACTION_LEFT (LEFT | TOUCHSCREEN_LEFT)
#define LEFT BUTTON_MIDLEFT #define ACTION_RIGHT (RIGHT | TOUCHSCREEN_RIGHT)
#endif #define ACTION_FIRE (FIRE | TOUCHSCREEN_FIRE)
#ifndef RIGHT
#define RIGHT BUTTON_MIDRIGHT #else
#endif
#ifndef FIRE #ifdef RC_QUIT
#define FIRE BUTTON_CENTER #define ACTION_QUIT (QUIT | RC_QUIT)
#else
#define ACTION_QUIT QUIT
#endif #endif
#define ACTION_LEFT LEFT
#define ACTION_RIGHT RIGHT
#define ACTION_FIRE FIRE
#endif #endif
#ifndef UNUSED #ifndef UNUSED
@ -1650,17 +1667,17 @@ inline bool handle_buttons(void)
pressed = newbuttonstate & ~oldbuttonstate; pressed = newbuttonstate & ~oldbuttonstate;
oldbuttonstate = newbuttonstate; oldbuttonstate = newbuttonstate;
if (pressed) { if (pressed) {
if (pressed & LEFT) { if (pressed & ACTION_LEFT) {
if (ship_acc > -1) { if (ship_acc > -1) {
ship_acc--; ship_acc--;
} }
} }
if (pressed & RIGHT) { if (pressed & ACTION_RIGHT) {
if (ship_acc < 1) { if (ship_acc < 1) {
ship_acc++; ship_acc++;
} }
} }
if (pressed & FIRE) { if (pressed & ACTION_FIRE) {
if (fire == S_IDLE) { if (fire == S_IDLE) {
/* Fire shot */ /* Fire shot */
fire_x = ship_x + SHIP_WIDTH / 2; fire_x = ship_x + SHIP_WIDTH / 2;
@ -1669,24 +1686,18 @@ inline bool handle_buttons(void)
/* TODO: play fire sound */ /* TODO: play fire sound */
} }
} }
#ifdef RC_QUIT if (pressed & ACTION_QUIT) {
if (pressed & RC_QUIT) {
rb->splash(HZ * 1, "Quit");
return true;
}
#endif
if (pressed & QUIT) {
rb->splash(HZ * 1, "Quit"); rb->splash(HZ * 1, "Quit");
return true; return true;
} }
} }
if (released) { if (released) {
if ((released & LEFT)) { if ((released & ACTION_LEFT)) {
if (ship_acc < 1) { if (ship_acc < 1) {
ship_acc++; ship_acc++;
} }
} }
if ((released & RIGHT)) { if ((released & ACTION_RIGHT)) {
if (ship_acc > -1) { if (ship_acc > -1) {
ship_acc--; ship_acc--;
} }