projects
/
rocksndiamonds.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
eb201ff
)
added generic support for handling user events
author
Holger Schemel
<info@artsoft.org>
Thu, 21 Mar 2019 08:17:57 +0000
(09:17 +0100)
committer
Holger Schemel
<info@artsoft.org>
Thu, 21 Mar 2019 08:20:09 +0000
(09:20 +0100)
src/events.c
patch
|
blob
|
history
src/events.h
patch
|
blob
|
history
src/libgame/sdl.h
patch
|
blob
|
history
src/libgame/system.c
patch
|
blob
|
history
src/libgame/system.h
patch
|
blob
|
history
diff --git
a/src/events.c
b/src/events.c
index 05c4f2a019ff7ce1cbf7b3a9981a2184fe7303ab..9966905b6286a496ee0a97868b2990105d6dc98a 100644
(file)
--- a/
src/events.c
+++ b/
src/events.c
@@
-218,6
+218,10
@@
static void HandleEvents(void)
HandleKeyEvent((KeyEvent *) &event);
break;
HandleKeyEvent((KeyEvent *) &event);
break;
+ case EVENT_USER:
+ HandleUserEvent((UserEvent *) &event);
+ break;
+
default:
HandleOtherEvents(&event);
break;
default:
HandleOtherEvents(&event);
break;
@@
-1599,6
+1603,15
@@
void HandleDropEvent(Event *event)
SDL_free(event->drop.file);
}
SDL_free(event->drop.file);
}
+void HandleUserEvent(UserEvent *event)
+{
+ switch (event->code)
+ {
+ default:
+ break;
+ }
+}
+
void HandleButton(int mx, int my, int button, int button_nr)
{
static int old_mx = 0, old_my = 0;
void HandleButton(int mx, int my, int button, int button_nr)
{
static int old_mx = 0, old_my = 0;
diff --git
a/src/events.h
b/src/events.h
index 1294689fe413128d32eb20d69840261f993aaed8..ef61b60590ee784ae7213a896aea98b7f51d3d4a 100644
(file)
--- a/
src/events.h
+++ b/
src/events.h
@@
-32,6
+32,7
@@
void HandlePauseResumeEvent(PauseResumeEvent *);
boolean HandleKeysDebug(Key, int);
void HandleKeyEvent(KeyEvent *);
void HandleDropEvent(Event *);
boolean HandleKeysDebug(Key, int);
void HandleKeyEvent(KeyEvent *);
void HandleDropEvent(Event *);
+void HandleUserEvent(UserEvent *);
void HandleToonAnimations(void);
void HandleToonAnimations(void);
diff --git
a/src/libgame/sdl.h
b/src/libgame/sdl.h
index 627617d245594db15017f4ae75d14e92dac3fdf8..e4b2b68418c8cafbf4156e9d2be5d85380718016 100644
(file)
--- a/
src/libgame/sdl.h
+++ b/
src/libgame/sdl.h
@@
-88,6
+88,21
@@
struct MouseCursorInfo
byte mask[CURSOR_MAX_WIDTH * CURSOR_MAX_HEIGHT / 8];
};
byte mask[CURSOR_MAX_WIDTH * CURSOR_MAX_HEIGHT / 8];
};
+struct UserEventInfo
+{
+ // same as in "struct SDL_UserEvent"
+ Uint32 type;
+ Uint32 timestamp;
+ Uint32 windowID;
+ Sint32 code;
+
+ // changed to use integer values instead of void pointers
+ Uint32 value1;
+ Uint32 value2;
+};
+
+typedef struct UserEventInfo UserEvent;
+
// SDL symbol definitions
// SDL symbol definitions
@@
-106,6
+121,7
@@
struct MouseCursorInfo
#define EVENT_TEXTINPUT SDL_TEXTINPUT
#define EVENT_KEYPRESS SDL_KEYDOWN
#define EVENT_KEYRELEASE SDL_KEYUP
#define EVENT_TEXTINPUT SDL_TEXTINPUT
#define EVENT_KEYPRESS SDL_KEYDOWN
#define EVENT_KEYRELEASE SDL_KEYUP
+#define EVENT_USER SDL_USEREVENT
#define EVENT_QUIT SDL_QUIT
#define KSYM_UNDEFINED SDLK_UNKNOWN
#define EVENT_QUIT SDL_QUIT
#define KSYM_UNDEFINED SDLK_UNKNOWN
diff --git
a/src/libgame/system.c
b/src/libgame/system.c
index fc1e0c69110c72a49170dafc92b5db92fa1e9e38..15e86a4afbc7084012132acac0f133577914085f 100644
(file)
--- a/
src/libgame/system.c
+++ b/
src/libgame/system.c
@@
-1733,6
+1733,20
@@
void StopTextInput(void)
#endif
}
#endif
}
+void PushUserEvent(int code, int value1, int value2)
+{
+ UserEvent event;
+
+ SDL_memset(&event, 0, sizeof(event));
+
+ event.type = EVENT_USER;
+ event.code = code;
+ event.value1 = value1;
+ event.value2 = value2;
+
+ SDL_PushEvent((SDL_Event *)&event);
+}
+
// ============================================================================
// joystick functions
// ============================================================================
// joystick functions
diff --git
a/src/libgame/system.h
b/src/libgame/system.h
index 68e5a33e31d6b1923cd4f85b9febacd106ed363b..cf49d86f8a935ef24ab42728517e29206bbc57b3 100644
(file)
--- a/
src/libgame/system.h
+++ b/
src/libgame/system.h
@@
-1854,6
+1854,7
@@
KeyMod GetKeyModState(void);
KeyMod GetKeyModStateFromEvents(void);
void StartTextInput(int, int, int, int);
void StopTextInput(void);
KeyMod GetKeyModStateFromEvents(void);
void StartTextInput(int, int, int, int);
void StopTextInput(void);
+void PushUserEvent(int, int, int);
void InitJoysticks(void);
boolean ReadJoystick(int, int *, int *, boolean *, boolean *);
void InitJoysticks(void);
boolean ReadJoystick(int, int *, int *, boolean *, boolean *);