projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed handling passthrough option for clickable global animations
[rocksndiamonds.git]
/
src
/
events.c
diff --git
a/src/events.c
b/src/events.c
index 2120931852677da9e9a8e70cd4692aa341a77b18..22cfdcd12ebadba2d7084591f3d6ec9bac91ab12 100644
(file)
--- a/
src/events.c
+++ b/
src/events.c
@@
-649,12
+649,7
@@
void HandleWindowEvent(WindowEvent *event)
int x, y;
if (game_status == GAME_MODE_SETUP)
int x, y;
if (game_status == GAME_MODE_SETUP)
- {
- // save active virtual buttons (in case of just configuring them)
- for (x = 0; x < MAX_GRID_XSIZE; x++)
- for (y = 0; y < MAX_GRID_YSIZE; y++)
- setup.touch.grid_button[nr][x][y] = overlay.grid_button[x][y];
- }
+ RedrawSetupScreenAfterScreenRotation(nr);
nr = GRID_ACTIVE_NR();
nr = GRID_ACTIVE_NR();
@@
-687,6
+682,7
@@
void HandleFingerEvent_VirtualButtons(FingerEvent *event)
int x = event->x * overlay.grid_xsize;
int y = event->y * overlay.grid_ysize;
int grid_button = overlay.grid_button[x][y];
int x = event->x * overlay.grid_xsize;
int y = event->y * overlay.grid_ysize;
int grid_button = overlay.grid_button[x][y];
+ int grid_button_action = GET_ACTION_FROM_GRID_BUTTON(grid_button);
Key key = (grid_button == CHAR_GRID_BUTTON_LEFT ? setup.input[0].key.left :
grid_button == CHAR_GRID_BUTTON_RIGHT ? setup.input[0].key.right :
grid_button == CHAR_GRID_BUTTON_UP ? setup.input[0].key.up :
Key key = (grid_button == CHAR_GRID_BUTTON_LEFT ? setup.input[0].key.left :
grid_button == CHAR_GRID_BUTTON_RIGHT ? setup.input[0].key.right :
grid_button == CHAR_GRID_BUTTON_UP ? setup.input[0].key.up :
@@
-730,6
+726,11
@@
void HandleFingerEvent_VirtualButtons(FingerEvent *event)
Error(ERR_DEBUG, "::: key '%s' was '%s' [fingerId: %lld]",
getKeyNameFromKey(key), key_status_name, event->fingerId);
Error(ERR_DEBUG, "::: key '%s' was '%s' [fingerId: %lld]",
getKeyNameFromKey(key), key_status_name, event->fingerId);
+ if (key_status == KEY_PRESSED)
+ overlay.grid_button_action |= grid_button_action;
+ else
+ overlay.grid_button_action &= ~grid_button_action;
+
// check if we already know this touch event's finger id
for (i = 0; i < NUM_TOUCH_FINGERS; i++)
{
// check if we already know this touch event's finger id
for (i = 0; i < NUM_TOUCH_FINGERS; i++)
{
@@
-1674,6
+1675,11
@@
static void HandleKeysSpecial(Key key)
{
InsertSolutionTape();
}
{
InsertSolutionTape();
}
+ else if (is_string_suffix(cheat_input, ":play-solution-tape") ||
+ is_string_suffix(cheat_input, ":pst"))
+ {
+ PlaySolutionTape();
+ }
else if (is_string_suffix(cheat_input, ":reload-graphics") ||
is_string_suffix(cheat_input, ":rg"))
{
else if (is_string_suffix(cheat_input, ":reload-graphics") ||
is_string_suffix(cheat_input, ":rg"))
{
@@
-1754,6
+1760,14
@@
static void HandleKeysSpecial(Key key)
DumpBrush_Small();
}
}
DumpBrush_Small();
}
}
+
+ /* special key shortcuts for all game modes */
+ if (is_string_suffix(cheat_input, ":dump-gadget-ids") ||
+ is_string_suffix(cheat_input, ":dgi") ||
+ is_string_suffix(cheat_input, ":DGI"))
+ {
+ DumpGadgetIdentifiers();
+ }
}
void HandleKeysDebug(Key key)
}
void HandleKeysDebug(Key key)
@@
-2417,24
+2431,38
@@
void HandleJoystick()
void HandleSpecialGameControllerButtons(Event *event)
{
#if defined(TARGET_SDL2)
void HandleSpecialGameControllerButtons(Event *event)
{
#if defined(TARGET_SDL2)
+ int key_status;
+ Key key;
+
switch (event->type)
{
case SDL_CONTROLLERBUTTONDOWN:
switch (event->type)
{
case SDL_CONTROLLERBUTTONDOWN:
- if (event->cbutton.button == SDL_CONTROLLER_BUTTON_START)
- HandleKey(KSYM_space, KEY_PRESSED);
- else if (event->cbutton.button == SDL_CONTROLLER_BUTTON_BACK)
- HandleKey(KSYM_Escape, KEY_PRESSED);
-
+ key_status = KEY_PRESSED;
break;
case SDL_CONTROLLERBUTTONUP:
break;
case SDL_CONTROLLERBUTTONUP:
- if (event->cbutton.button == SDL_CONTROLLER_BUTTON_START)
- HandleKey(KSYM_space, KEY_RELEASED);
- else if (event->cbutton.button == SDL_CONTROLLER_BUTTON_BACK)
- HandleKey(KSYM_Escape, KEY_RELEASED);
+ key_status = KEY_RELEASED;
+ break;
+ default:
+ return;
+ }
+
+ switch (event->cbutton.button)
+ {
+ case SDL_CONTROLLER_BUTTON_START:
+ key = KSYM_space;
+ break;
+
+ case SDL_CONTROLLER_BUTTON_BACK:
+ key = KSYM_Escape;
break;
break;
+
+ default:
+ return;
}
}
+
+ HandleKey(key, key_status);
#endif
}
#endif
}