projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20070131-1-src
[rocksndiamonds.git]
/
src
/
events.c
diff --git
a/src/events.c
b/src/events.c
index 4bb6192d9d023b1c502628a65d08ab6348b0f76c..7ea4356bc8920f6afaa51f0c7bdc397ad4a64b93 100644
(file)
--- a/
src/events.c
+++ b/
src/events.c
@@
-1,7
+1,7
@@
/***********************************************************
* Rocks'n'Diamonds -- McDuffin Strikes Back! *
*----------------------------------------------------------*
/***********************************************************
* Rocks'n'Diamonds -- McDuffin Strikes Back! *
*----------------------------------------------------------*
-* (c) 1995-200
2
Artsoft Entertainment *
+* (c) 1995-200
6
Artsoft Entertainment *
* Holger Schemel *
* Detmolder Strasse 189 *
* 33604 Bielefeld *
* Holger Schemel *
* Detmolder Strasse 189 *
* 33604 Bielefeld *
@@
-24,6
+24,9
@@
#include "network.h"
#include "network.h"
+#define DEBUG_EVENTS 0
+
+
static boolean cursor_inside_playfield = FALSE;
static boolean playfield_cursor_set = FALSE;
static unsigned long playfield_cursor_delay = 0;
static boolean cursor_inside_playfield = FALSE;
static boolean playfield_cursor_set = FALSE;
static unsigned long playfield_cursor_delay = 0;
@@
-124,7
+127,7
@@
void EventLoop(void)
while (NextValidEvent(&event))
{
while (NextValidEvent(&event))
{
- switch(event.type)
+ switch
(event.type)
{
case EVENT_BUTTONPRESS:
case EVENT_BUTTONRELEASE:
{
case EVENT_BUTTONPRESS:
case EVENT_BUTTONRELEASE:
@@
-191,7
+194,7
@@
void EventLoop(void)
void HandleOtherEvents(Event *event)
{
void HandleOtherEvents(Event *event)
{
- switch(event->type)
+ switch
(event->type)
{
case EVENT_EXPOSE:
HandleExposeEvent((ExposeEvent *) event);
{
case EVENT_EXPOSE:
HandleExposeEvent((ExposeEvent *) event);
@@
-235,14
+238,18
@@
void ClearEventQueue()
NextEvent(&event);
NextEvent(&event);
- switch(event.type)
+ switch
(event.type)
{
case EVENT_BUTTONRELEASE:
button_status = MB_RELEASED;
break;
case EVENT_KEYRELEASE:
{
case EVENT_BUTTONRELEASE:
button_status = MB_RELEASED;
break;
case EVENT_KEYRELEASE:
+#if 1
+ ClearPlayerAction();
+#else
key_joystick_mapping = 0;
key_joystick_mapping = 0;
+#endif
break;
default:
break;
default:
@@
-274,7
+281,7
@@
void SleepWhileUnmapped()
NextEvent(&event);
NextEvent(&event);
- switch(event.type)
+ switch
(event.type)
{
case EVENT_BUTTONRELEASE:
button_status = MB_RELEASED;
{
case EVENT_BUTTONRELEASE:
button_status = MB_RELEASED;
@@
-315,7
+322,7
@@
void HandleExposeEvent(ExposeEvent *event)
void HandleButtonEvent(ButtonEvent *event)
{
void HandleButtonEvent(ButtonEvent *event)
{
-#if
0
+#if
DEBUG_EVENTS
printf("::: BUTTON EVENT: button %d %s\n", event->button,
event->type == EVENT_BUTTONPRESS ? "pressed" : "released");
#endif
printf("::: BUTTON EVENT: button %d %s\n", event->button,
event->type == EVENT_BUTTONPRESS ? "pressed" : "released");
#endif
@@
-350,7
+357,7
@@
void HandleKeyEvent(KeyEvent *event)
Key key = GetEventKey(event, with_modifiers);
Key keymod = (with_modifiers ? GetEventKey(event, FALSE) : key);
Key key = GetEventKey(event, with_modifiers);
Key keymod = (with_modifiers ? GetEventKey(event, FALSE) : key);
-#if
0
+#if
DEBUG_EVENTS
printf("::: KEY EVENT: %d %s\n", GetEventKey(event, TRUE),
event->type == EVENT_KEYPRESS ? "pressed" : "released");
#endif
printf("::: KEY EVENT: %d %s\n", GetEventKey(event, TRUE),
event->type == EVENT_KEYPRESS ? "pressed" : "released");
#endif
@@
-512,7
+519,7
@@
static void HandleKeysSpecial(Key key)
cheat_input[cheat_input_len++] = letter;
cheat_input[cheat_input_len] = '\0';
cheat_input[cheat_input_len++] = letter;
cheat_input[cheat_input_len] = '\0';
-#if
0
+#if
DEBUG_EVENTS
printf("::: '%s' [%d]\n", cheat_input, cheat_input_len);
#endif
printf("::: '%s' [%d]\n", cheat_input, cheat_input_len);
#endif
@@
-660,8
+667,18
@@
void HandleKey(Key key, int key_status)
element_dropped[pnr] = FALSE;
}
}
element_dropped[pnr] = FALSE;
}
}
+#if 1
+ else if (tape.recording && tape.pausing)
+ {
+ /* prevent key release events from un-pausing a paused game */
+ if (key_status == KEY_PRESSED &&
+ (key_action & KEY_ACTION))
+ TapeTogglePause(TAPE_TOGGLE_MANUAL);
+ }
+#else
else if (tape.recording && tape.pausing && (key_action & KEY_ACTION))
TapeTogglePause(TAPE_TOGGLE_MANUAL);
else if (tape.recording && tape.pausing && (key_action & KEY_ACTION))
TapeTogglePause(TAPE_TOGGLE_MANUAL);
+#endif
}
}
else
}
}
else
@@
-687,22
+704,29
@@
void HandleKey(Key key, int key_status)
if (key_status == KEY_RELEASED)
return;
if (key_status == KEY_RELEASED)
return;
- if (
key == KSYM_Return && GetKeyModState() & KMOD_Alt
&&
- video.fullscreen_available)
+ if (
(key == KSYM_Return || key == KSYM_KP_Enter)
&&
+
(GetKeyModState() & KMOD_Alt) &&
video.fullscreen_available)
{
setup.fullscreen = !setup.fullscreen;
ToggleFullscreenIfNeeded();
{
setup.fullscreen = !setup.fullscreen;
ToggleFullscreenIfNeeded();
+ if (game_status == GAME_MODE_SETUP)
+ RedrawSetupScreenAfterFullscreenToggle();
+
return;
}
return;
}
+#if 1
+ if (game_status == GAME_MODE_PLAYING &&
+ local_player->LevelSolved_GameEnd &&
+ (key == KSYM_Return || key == setup.shortcut.toggle_pause))
+#else
if (game_status == GAME_MODE_PLAYING && AllPlayersGone &&
(key == KSYM_Return || key == setup.shortcut.toggle_pause))
if (game_status == GAME_MODE_PLAYING && AllPlayersGone &&
(key == KSYM_Return || key == setup.shortcut.toggle_pause))
+#endif
{
{
- CloseDoor(DOOR_CLOSE_1);
- game_status = GAME_MODE_MAIN;
- DrawMainMenu();
+ GameEnd();
return;
}
return;
}
@@
-757,7
+781,7
@@
void HandleKey(Key key, int key_status)
key = KSYM_UNDEFINED;
}
key = KSYM_UNDEFINED;
}
- switch(game_status)
+ switch
(game_status)
{
case GAME_MODE_PSEUDO_TYPENAME:
HandleTypeName(0, key);
{
case GAME_MODE_PSEUDO_TYPENAME:
HandleTypeName(0, key);
@@
-768,54
+792,58
@@
void HandleKey(Key key, int key_status)
case GAME_MODE_LEVELS:
case GAME_MODE_SETUP:
case GAME_MODE_INFO:
case GAME_MODE_LEVELS:
case GAME_MODE_SETUP:
case GAME_MODE_INFO:
- switch(key)
+ case GAME_MODE_SCORES:
+ switch (key)
{
{
-#if 1
case KSYM_space:
case KSYM_space:
-#else
- /* !!! only use "space" key to start game from main menu !!! */
- case KSYM_space:
-#endif
case KSYM_Return:
if (game_status == GAME_MODE_TITLE)
case KSYM_Return:
if (game_status == GAME_MODE_TITLE)
- HandleTitleScreen(0,
0, 0,
0, MB_MENU_CHOICE);
+ HandleTitleScreen(0,
0, 0,
0, MB_MENU_CHOICE);
else if (game_status == GAME_MODE_MAIN)
else if (game_status == GAME_MODE_MAIN)
- HandleMainMenu(0,
0, 0,
0, MB_MENU_CHOICE);
+ HandleMainMenu(0,
0, 0,
0, MB_MENU_CHOICE);
else if (game_status == GAME_MODE_LEVELS)
else if (game_status == GAME_MODE_LEVELS)
- HandleChooseLevel(0,
0, 0,
0, MB_MENU_CHOICE);
+ HandleChooseLevel(0,
0, 0,
0, MB_MENU_CHOICE);
else if (game_status == GAME_MODE_SETUP)
else if (game_status == GAME_MODE_SETUP)
- HandleSetupScreen(0,
0, 0,
0, MB_MENU_CHOICE);
+ HandleSetupScreen(0,
0, 0,
0, MB_MENU_CHOICE);
else if (game_status == GAME_MODE_INFO)
else if (game_status == GAME_MODE_INFO)
- HandleInfoScreen(0,0, 0,0, MB_MENU_CHOICE);
+ HandleInfoScreen(0, 0, 0, 0, MB_MENU_CHOICE);
+ else if (game_status == GAME_MODE_SCORES)
+ HandleHallOfFame(0, 0, 0, 0, MB_MENU_CHOICE);
break;
case KSYM_Escape:
if (game_status == GAME_MODE_TITLE)
break;
case KSYM_Escape:
if (game_status == GAME_MODE_TITLE)
- HandleTitleScreen(0,
0, 0,
0, MB_MENU_LEAVE);
+ HandleTitleScreen(0,
0, 0,
0, MB_MENU_LEAVE);
else if (game_status == GAME_MODE_LEVELS)
else if (game_status == GAME_MODE_LEVELS)
- HandleChooseLevel(0,
0, 0,
0, MB_MENU_LEAVE);
+ HandleChooseLevel(0,
0, 0,
0, MB_MENU_LEAVE);
else if (game_status == GAME_MODE_SETUP)
else if (game_status == GAME_MODE_SETUP)
- HandleSetupScreen(0,
0, 0,
0, MB_MENU_LEAVE);
+ HandleSetupScreen(0,
0, 0,
0, MB_MENU_LEAVE);
else if (game_status == GAME_MODE_INFO)
else if (game_status == GAME_MODE_INFO)
- HandleInfoScreen(0,0, 0,0, MB_MENU_LEAVE);
+ HandleInfoScreen(0, 0, 0, 0, MB_MENU_LEAVE);
+ else if (game_status == GAME_MODE_SCORES)
+ HandleHallOfFame(0, 0, 0, 0, MB_MENU_LEAVE);
break;
case KSYM_Page_Up:
if (game_status == GAME_MODE_LEVELS)
break;
case KSYM_Page_Up:
if (game_status == GAME_MODE_LEVELS)
- HandleChooseLevel(0,0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
+ HandleChooseLevel(0,
0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
else if (game_status == GAME_MODE_SETUP)
else if (game_status == GAME_MODE_SETUP)
- HandleSetupScreen(0,0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
+ HandleSetupScreen(0,
0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
else if (game_status == GAME_MODE_INFO)
else if (game_status == GAME_MODE_INFO)
- HandleInfoScreen(0,0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
+ HandleInfoScreen(0, 0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
+ else if (game_status == GAME_MODE_SCORES)
+ HandleHallOfFame(0, 0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
break;
case KSYM_Page_Down:
if (game_status == GAME_MODE_LEVELS)
break;
case KSYM_Page_Down:
if (game_status == GAME_MODE_LEVELS)
- HandleChooseLevel(0,0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
+ HandleChooseLevel(0,
0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
else if (game_status == GAME_MODE_SETUP)
else if (game_status == GAME_MODE_SETUP)
- HandleSetupScreen(0,0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
+ HandleSetupScreen(0,
0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
else if (game_status == GAME_MODE_INFO)
else if (game_status == GAME_MODE_INFO)
- HandleInfoScreen(0,0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
+ HandleInfoScreen(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
+ else if (game_status == GAME_MODE_SCORES)
+ HandleHallOfFame(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
break;
#ifdef DEBUG
break;
#ifdef DEBUG
@@
-829,29
+857,6
@@
void HandleKey(Key key, int key_status)
}
break;
}
break;
- case GAME_MODE_SCORES:
- switch(key)
- {
- case KSYM_space:
- case KSYM_Return:
- case KSYM_Escape:
- game_status = GAME_MODE_MAIN;
- DrawMainMenu();
- break;
-
- case KSYM_Page_Up:
- HandleHallOfFame(0,0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
- break;
-
- case KSYM_Page_Down:
- HandleHallOfFame(0,0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
- break;
-
- default:
- break;
- }
- break;
-
case GAME_MODE_EDITOR:
if (!anyTextGadgetActiveOrJustFinished || key == KSYM_Escape)
HandleLevelEditorKeyInput(key);
case GAME_MODE_EDITOR:
if (!anyTextGadgetActiveOrJustFinished || key == KSYM_Escape)
HandleLevelEditorKeyInput(key);
@@
-859,7
+864,7
@@
void HandleKey(Key key, int key_status)
case GAME_MODE_PLAYING:
{
case GAME_MODE_PLAYING:
{
- switch(key)
+ switch
(key)
{
case KSYM_Escape:
RequestQuitGame(setup.ask_on_escape);
{
case KSYM_Escape:
RequestQuitGame(setup.ask_on_escape);
@@
-1024,7
+1029,7
@@
void HandleJoystick()
int dx = (left ? -1 : right ? 1 : 0);
int dy = (up ? -1 : down ? 1 : 0);
int dx = (left ? -1 : right ? 1 : 0);
int dy = (up ? -1 : down ? 1 : 0);
- switch(game_status)
+ switch
(game_status)
{
case GAME_MODE_TITLE:
case GAME_MODE_MAIN:
{
case GAME_MODE_TITLE:
case GAME_MODE_MAIN:
@@
-1039,20
+1044,20
@@
void HandleJoystick()
newbutton = dx = dy = 0;
if (game_status == GAME_MODE_TITLE)
newbutton = dx = dy = 0;
if (game_status == GAME_MODE_TITLE)
- HandleTitleScreen(0,0,dx,dy,newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
+ HandleTitleScreen(0,0,dx,dy,
newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
else if (game_status == GAME_MODE_MAIN)
else if (game_status == GAME_MODE_MAIN)
- HandleMainMenu(0,0,dx,dy,newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
+ HandleMainMenu(0,0,dx,dy,
newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
else if (game_status == GAME_MODE_LEVELS)
else if (game_status == GAME_MODE_LEVELS)
- HandleChooseLevel(0,0,dx,dy,newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
+ HandleChooseLevel(0,0,dx,dy,
newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
else if (game_status == GAME_MODE_SETUP)
else if (game_status == GAME_MODE_SETUP)
- HandleSetupScreen(0,0,dx,dy,newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
+ HandleSetupScreen(0,0,dx,dy,
newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
else if (game_status == GAME_MODE_INFO)
else if (game_status == GAME_MODE_INFO)
- HandleInfoScreen(0,0,dx,dy,newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
+ HandleInfoScreen(0,0,dx,dy,
newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
break;
}
case GAME_MODE_SCORES:
break;
}
case GAME_MODE_SCORES:
- HandleHallOfFame(0,
0, dx,
dy, !newbutton);
+ HandleHallOfFame(0,
0, dx,
dy, !newbutton);
break;
case GAME_MODE_EDITOR:
break;
case GAME_MODE_EDITOR:
@@
-1063,11
+1068,14
@@
void HandleJoystick()
if (tape.playing || keyboard)
newbutton = ((joy & JOY_BUTTON) != 0);
if (tape.playing || keyboard)
newbutton = ((joy & JOY_BUTTON) != 0);
+#if 1
+ if (local_player->LevelSolved_GameEnd && newbutton)
+#else
if (AllPlayersGone && newbutton)
if (AllPlayersGone && newbutton)
+#endif
{
{
- CloseDoor(DOOR_CLOSE_1);
- game_status = GAME_MODE_MAIN;
- DrawMainMenu();
+ GameEnd();
+
return;
}
return;
}