Make all windows except game and editor use EVENT_KEY_COMMAND, returning 1 if handled; pass NULL instead of userdata for the PCX filename, for newmenu_do1

This commit is contained in:
kreatordxx 2010-03-26 14:05:40 +00:00
parent 69e3954d20
commit 574bc21e06
8 changed files with 325 additions and 287 deletions

View file

@ -3,6 +3,7 @@ D1X-Rebirth Changelog
20100326
--------
main/endlevel.c, main/gameseq.c, main/mission.c, main/mission.h, main/titles.c, main/titles.h: In Endlevel sequence, re-align big explosion to draw in front of exit model, relative to viewer; Re-organized tex files for Briefings and Endings and created more general code to play them; Re-aligned Dravis' head
main/automap.c, main/gamecntl.c, main/kconfig.c, main/net_ipx.c, main/net_udp.c, main/newmenu.c, main/scores.c: Make all windows except game and editor use EVENT_KEY_COMMAND, returning 1 if handled; pass NULL instead of userdata for the PCX filename, for newmenu_do1
20100324
--------

View file

@ -354,10 +354,78 @@ extern int set_segment_depths(int start_seg, ubyte *segbuf);
#define MAP_BACKGROUND_FILENAME "MAP.PCX"
int automap_key_command(window *wind, d_event *event, automap *am)
{
int c = ((d_event_keycommand *)event)->keycode;
switch (c)
{
#ifndef NDEBUG
case KEY_BACKSP: Int3(); return 1;
#endif
case KEY_PRINT_SCREEN: {
gr_set_current_canvas(NULL);
save_screen_shot(1);
return 1;
}
case KEY_ESC:
if (am->leave_mode==0)
{
window_close(wind);
return 1;
}
return 1;
case KEY_ALTED+KEY_F: // Alt+F shows full map, if cheats enabled
if (Cheats_enabled)
{
uint t;
t = Players[Player_num].flags;
Players[Player_num].flags |= PLAYER_FLAGS_MAP_ALL_CHEAT;
automap_build_edge_list(am);
Players[Player_num].flags=t;
}
return 1;
#ifndef NDEBUG
case KEY_DEBUGGED+KEY_F: {
int i;
for (i=0; i<=Highest_segment_index; i++ )
Automap_visited[i] = 1;
automap_build_edge_list(am);
am->max_segments_away = set_segment_depths(Objects[Players[Player_num].objnum].segnum, Automap_visited);
am->segment_limit = am->max_segments_away;
adjust_segment_limit(am, am->segment_limit);
}
return 1;
#endif
case KEY_F9:
if (am->segment_limit > 1) {
am->segment_limit--;
adjust_segment_limit(am, am->segment_limit);
}
return 1;
case KEY_F10:
if (am->segment_limit < am->max_segments_away) {
am->segment_limit++;
adjust_segment_limit(am, am->segment_limit);
}
return 1;
case KEY_ALTED+KEY_ENTER:
case KEY_ALTED+KEY_PADENTER:
gr_toggle_fullscreen();
return 1;
}
return 0;
}
int automap_idle(window *wind, d_event *event, automap *am)
{
vms_matrix tempm;
int c;
if (!am->pause_game) {
ConsoleObject->mtype.phys_info.flags |= am->old_wiggle; // Restore wiggle
@ -386,69 +454,6 @@ int automap_idle(window *wind, d_event *event, automap *am)
//see if redbook song needs to be restarted
RBACheckFinishedHook();
while( (c=key_inkey()) ) {
switch( c ) {
#ifndef NDEBUG
case KEY_BACKSP: Int3(); break;
#endif
case KEY_PRINT_SCREEN: {
gr_set_current_canvas(NULL);
save_screen_shot(1);
break;
}
case KEY_ESC:
if (am->leave_mode==0)
{
window_close(wind);
return 1;
}
break;
case KEY_ALTED+KEY_F: // Alt+F shows full map, if cheats enabled
if (Cheats_enabled)
{
uint t;
t = Players[Player_num].flags;
Players[Player_num].flags |= PLAYER_FLAGS_MAP_ALL_CHEAT;
automap_build_edge_list(am);
Players[Player_num].flags=t;
}
break;
#ifndef NDEBUG
case KEY_DEBUGGED+KEY_F: {
int i;
for (i=0; i<=Highest_segment_index; i++ )
Automap_visited[i] = 1;
automap_build_edge_list(am);
am->max_segments_away = set_segment_depths(Objects[Players[Player_num].objnum].segnum, Automap_visited);
am->segment_limit = am->max_segments_away;
adjust_segment_limit(am, am->segment_limit);
}
break;
#endif
case KEY_F9:
if (am->segment_limit > 1) {
am->segment_limit--;
adjust_segment_limit(am, am->segment_limit);
}
break;
case KEY_F10:
if (am->segment_limit < am->max_segments_away) {
am->segment_limit++;
adjust_segment_limit(am, am->segment_limit);
}
break;
case KEY_ALTED+KEY_ENTER:
case KEY_ALTED+KEY_PADENTER:
gr_toggle_fullscreen();
break;
}
}
if ( Controls.fire_primary_down_count ) {
// Reset orientation
am->viewDist = ZOOM_DEFAULT;
@ -516,6 +521,9 @@ int automap_handler(window *wind, d_event *event, automap *am)
game_flush_inputs();
break;
case EVENT_KEY_COMMAND:
return automap_key_command(wind, event, am);
case EVENT_IDLE:
return automap_idle(wind, event, am);
break;

View file

@ -234,33 +234,34 @@ int pause_handler(window *wind, d_event *event, char *msg)
game_flush_inputs();
break;
case EVENT_IDLE:
timer_delay2(50);
case EVENT_KEY_COMMAND:
key = ((d_event_keycommand *)event)->keycode;
key = key_inkey();
switch (key) {
switch (key)
{
case 0:
break;
case KEY_ESC:
//Function_mode = FMODE_MENU; // Don't like this, just press escape twice (kreatordxx)
window_close(wind);
break;
return 1;
case KEY_F1:
show_help();
break;
return 1;
case KEY_PAUSE:
window_close(wind);
break;
return 1;
case KEY_ALTED+KEY_ENTER:
case KEY_ALTED+KEY_PADENTER:
gr_toggle_fullscreen();
break;
return 1;
default:
return 0;
break;
}
return 0;
break;
case EVENT_IDLE:
timer_delay2(50);
break;
case EVENT_WINDOW_DRAW:
@ -273,15 +274,13 @@ int pause_handler(window *wind, d_event *event, char *msg)
ext_music_resume();
digi_resume_midi(); // sound pausing handled by game_handler
d_free(msg);
return 0; // continue closing
break;
default:
return 0;
break;
}
return 1;
return 0;
}
int do_game_pause()

View file

@ -623,54 +623,26 @@ int kconfig_mouse(window *wind, d_event *event, kc_menu *menu)
return rval;
}
int kconfig_idle(window *wind, kc_menu *menu)
int kconfig_key_command(window *wind, d_event *event, kc_menu *menu)
{
int i,k;
if (menu->changing)
timer_delay(f0_1/10);
else
timer_delay2(50);
k = ((d_event_keycommand *)event)->keycode;
//see if redbook song needs to be restarted
RBACheckFinishedHook();
k = key_inkey();
if (menu->changing)
{
if (k == KEY_ESC)
menu->changing = 0;
else
switch( menu->items[menu->citem].type )
{
case BT_KEY: kc_change_key( menu, &menu->items[menu->citem] ); break;
case BT_MOUSE_AXIS: kc_change_mouseaxis( menu, &menu->items[menu->citem] ); break;
case BT_JOY_BUTTON: kc_change_joybutton( menu, &menu->items[menu->citem] ); break;
case BT_JOY_AXIS: kc_change_joyaxis( menu, &menu->items[menu->citem] ); break;
}
if (!menu->changing)
{
game_flush_inputs();
return 1;
}
}
switch( k )
switch (k)
{
case KEY_BACKSP:
Int3();
break;
return 1;
#ifdef macintosh
case KEY_COMMAND+KEY_SHIFTED+KEY_3:
#endif
case KEY_PRINT_SCREEN:
save_screen_shot(0);
break;
return 1;
case KEY_CTRLED+KEY_D:
menu->items[menu->citem].value = 255;
break;
return 1;
case KEY_CTRLED+KEY_R:
if ( menu->items==kc_keyboard )
for (i=0; i<NUM_KEY_CONTROLS; i++ )
@ -687,47 +659,49 @@ int kconfig_idle(window *wind, kc_menu *menu)
if ( menu->items==kc_d1x )
for(i=0;i<NUM_D1X_CONTROLS;i++)
menu->items[i].value=DefaultKeySettingsD1X[i];
break;
return 1;
case KEY_DELETE:
menu->items[menu->citem].value=255;
break;
return 1;
case KEY_UP:
case KEY_PAD8:
#ifdef TABLE_CREATION
if (menu->items[menu->citem].u==-1) menu->items[menu->citem].u=find_next_item_up( menu->items,menu->nitems, menu->citem);
#endif
menu->citem = menu->items[menu->citem].u;
break;
return 1;
case KEY_DOWN:
case KEY_PAD2:
#ifdef TABLE_CREATION
if (menu->items[menu->citem].d==-1) menu->items[menu->citem].d=find_next_item_down( menu->items,menu->nitems, menu->citem);
#endif
menu->citem = menu->items[menu->citem].d;
break;
return 1;
case KEY_LEFT:
case KEY_PAD4:
#ifdef TABLE_CREATION
if (menu->items[menu->citem].l==-1) menu->items[menu->citem].l=find_next_item_left( menu->items,menu->nitems, menu->citem);
#endif
menu->citem = menu->items[menu->citem].l;
break;
return 1;
case KEY_RIGHT:
case KEY_PAD6:
#ifdef TABLE_CREATION
if (menu->items[menu->citem].r==-1) menu->items[menu->citem].r=find_next_item_right( menu->items,menu->nitems, menu->citem);
#endif
menu->citem = menu->items[menu->citem].r;
break;
return 1;
case KEY_ENTER:
case KEY_PADENTER:
kconfig_start_changing(menu);
break;
return 1;
case -2:
case KEY_ESC:
window_close(wind);
if (menu->changing)
menu->changing = 0;
else
window_close(wind);
return 1;
break;
#ifdef TABLE_CREATION
case KEY_F12: {
FILE * fp;
@ -806,13 +780,12 @@ int kconfig_idle(window *wind, kc_menu *menu)
fclose(fp);
}
break;
return 1;
#endif
case 0: // some other event
break;
default:
return 0;
break;
}
@ -849,9 +822,33 @@ int kconfig_handler(window *wind, d_event *event, kc_menu *menu)
menu->mouse_state = (event->type == EVENT_MOUSE_BUTTON_DOWN);
return kconfig_mouse(wind, event, menu);
case EVENT_KEY_COMMAND:
return kconfig_key_command(wind, event, menu);
case EVENT_IDLE:
kconfig_mouse(wind, event, menu);
return kconfig_idle(wind, menu);
if (menu->changing)
timer_delay(f0_1/10);
else
timer_delay2(50);
//see if redbook song needs to be restarted
RBACheckFinishedHook();
if (menu->changing)
{
switch( menu->items[menu->citem].type )
{
case BT_KEY: kc_change_key( menu, &menu->items[menu->citem] ); break;
case BT_MOUSE_AXIS: kc_change_mouseaxis( menu, &menu->items[menu->citem] ); break;
case BT_JOY_BUTTON: kc_change_joybutton( menu, &menu->items[menu->citem] ); break;
case BT_JOY_AXIS: kc_change_joyaxis( menu, &menu->items[menu->citem] ); break;
}
if (!menu->changing)
game_flush_inputs();
}
break;
case EVENT_WINDOW_DRAW:

View file

@ -3948,24 +3948,26 @@ static int show_game_rules_handler(window *wind, d_event *event, netgame_info *n
game_flush_inputs();
break;
case EVENT_KEY_COMMAND:
k = ((d_event_keycommand *)event)->keycode;
switch (k)
{
case KEY_PRINT_SCREEN:
save_screen_shot(0); k = 0;
return 1;
case KEY_ENTER:
case KEY_SPACEBAR:
case KEY_ESC:
window_close(wind);
return 1;
}
break;
case EVENT_IDLE:
timer_delay2(50);
//see if redbook song needs to be restarted
RBACheckFinishedHook();
k = key_inkey();
switch( k ) {
case KEY_PRINT_SCREEN:
save_screen_shot(0); k = 0;
break;
case KEY_ENTER:
case KEY_SPACEBAR:
case KEY_ESC:
window_close(wind);
break;
}
return 0;
break;
case EVENT_WINDOW_DRAW:
@ -4024,16 +4026,11 @@ static int show_game_rules_handler(window *wind, d_event *event, netgame_info *n
gr_set_current_canvas(NULL);
break;
case EVENT_WINDOW_CLOSE:
return 0; // continue closing
break;
default:
return 0;
break;
}
return 1;
return 0;
}
void net_ipx_show_game_rules(netgame_info *netgame)

View file

@ -312,160 +312,199 @@ int udp_receive_packet(int socknum, ubyte *text, int len, struct _sockaddr *send
/* General UDP functions - END */
// Connect to a game host and get full info. Eventually we join!
void net_udp_game_connect(struct _sockaddr HostAddr)
typedef struct manual_join
{
fix start_time = 0, time = 0, last_time = 0;
struct _sockaddr host_addr;
int connecting;
fix start_time, last_time;
char addrbuf[128];
char portbuf[6];
} manual_join;
N_players = 0;
change_playernum_to(1);
start_time = timer_get_fixed_seconds();
memcpy((struct _sockaddr *)&Netgame.players[0].protocol.udp.addr, (struct _sockaddr *)&HostAddr, sizeof(struct _sockaddr));
// Connect to a game host and get full info. Eventually we join!
int net_udp_game_connect(manual_join *mj)
{
fix time = 0;
// Get full game info so we can show it.
while (Netgame.protocol.udp.valid != 1)
{
time = timer_get_fixed_seconds();
// Cancel this with ESC
if (key_inkey()==KEY_ESC)
return;
// Timeout after 10 seconds
if (timer_get_fixed_seconds() >= start_time + (F1_0*10) || timer_get_fixed_seconds() < start_time)
{
nm_messagebox(TXT_ERROR,1,TXT_OK,"No response by host.\n\nPossible reasons:\n* No game on this IP (anymore)\n* Port of Host not open\n or different\n* Host uses a game version\n I do not understand");
return;
}
if (Netgame.protocol.udp.valid == -1)
{
nm_messagebox(TXT_ERROR,1,TXT_OK,"Version mismatch! Cannot join Game.\nHost game version: %i.%i.%i\nYour game version: %s",Netgame.protocol.udp.program_iver[0],Netgame.protocol.udp.program_iver[1],Netgame.protocol.udp.program_iver[2],VERSION);
return;
}
if (time >= last_time + F1_0)
{
net_udp_request_game_info(HostAddr, 0);
last_time = time;
}
timer_delay2(5);
net_udp_listen();
time = timer_get_fixed_seconds();
// Timeout after 10 seconds
if (timer_get_fixed_seconds() >= mj->start_time + (F1_0*10) || timer_get_fixed_seconds() < mj->start_time)
{
nm_messagebox(TXT_ERROR,1,TXT_OK,"No response by host.\n\nPossible reasons:\n* No game on this IP (anymore)\n* Port of Host not open\n or different\n* Host uses a game version\n I do not understand");
mj->connecting = 0;
return 0;
}
if (!net_udp_show_game_info()) // show info menu and check if we join
return;
Netgame.protocol.udp.valid = 0;
start_time = timer_get_fixed_seconds();
// Get full game info again as it could have changed since we entered the info menu.
while (Netgame.protocol.udp.valid != 1)
if (Netgame.protocol.udp.valid == -1)
{
time = timer_get_fixed_seconds();
nm_messagebox(TXT_ERROR,1,TXT_OK,"Version mismatch! Cannot join Game.\nHost game version: %i.%i.%i\nYour game version: %s",Netgame.protocol.udp.program_iver[0],Netgame.protocol.udp.program_iver[1],Netgame.protocol.udp.program_iver[2],VERSION);
mj->connecting = 0;
return 0;
}
if (time >= mj->last_time + F1_0)
{
net_udp_request_game_info(mj->host_addr, 0);
mj->last_time = time;
}
timer_delay2(5);
net_udp_listen();
// Cancel this with ESC
if (key_inkey()==KEY_ESC)
return;
if (Netgame.protocol.udp.valid != 1)
return 0; // still trying to connect
// Timeout after 10 seconds
if (timer_get_fixed_seconds() >= start_time + (F1_0*10) || timer_get_fixed_seconds() < start_time)
if (mj->connecting == 1)
{
if (!net_udp_show_game_info()) // show info menu and check if we join
{
nm_messagebox(TXT_ERROR,1,TXT_OK,"No response by host.\n\nPossible reasons:\n* No game on this IP (anymore)\n* Port of Host not open\n or different\n* Host uses a game version\n I do not understand");
return;
mj->connecting = 0;
return 0;
}
if (time >= last_time + F1_0)
else
{
net_udp_request_game_info(HostAddr, 0);
last_time = time;
// Get full game info again as it could have changed since we entered the info menu.
mj->connecting = 2;
Netgame.protocol.udp.valid = 0;
mj->start_time = timer_get_fixed_seconds();
return 0;
}
timer_delay2(5);
net_udp_listen();
}
net_udp_do_join_game();
if (net_udp_do_join_game())
{
mj->connecting = 0;
return 1; // Success!
}
return 0;
}
static char *connecting_txt = "Connecting...";
static char *blank = "";
static int manual_join_game_handler(newmenu *menu, d_event *event, manual_join *mj)
{
newmenu_item *items = newmenu_get_items(menu);
switch (event->type)
{
case EVENT_KEY_COMMAND:
if (mj->connecting && ((d_event_keycommand *)event)->keycode == KEY_ESC)
{
mj->connecting = 0;
items[6].text = blank;
return 1;
}
break;
case EVENT_IDLE:
if (mj->connecting)
{
if (net_udp_game_connect(mj))
return -2; // Success! (Keep this menu in future)
else if (!mj->connecting)
items[6].text = blank;
}
break;
case EVENT_NEWMENU_SELECTED:
{
int sockres = -1;
if ((atoi(UDP_MyPort)) < 0 ||(atoi(UDP_MyPort)) > 65535)
{
snprintf (UDP_MyPort, sizeof(UDP_MyPort), "%d", UDP_PORT_DEFAULT);
nm_messagebox(TXT_ERROR, 1, TXT_OK, "Illegal port");
return 1;
}
sockres = udp_open_socket(0, atoi(UDP_MyPort));
if (sockres != 0)
{
return 1;
}
// Resolve address
if (udp_dns_filladdr(mj->addrbuf, atoi(mj->portbuf), &mj->host_addr) < 0)
{
nm_messagebox(TXT_ERROR, 1, TXT_OK, "Could not resolve Address!");
return 1;
}
else
{
N_players = 0;
change_playernum_to(1);
mj->start_time = timer_get_fixed_seconds();
mj->last_time = 0;
memcpy((struct _sockaddr *)&Netgame.players[0].protocol.udp.addr, (struct _sockaddr *)&mj->host_addr, sizeof(struct _sockaddr));
mj->connecting = 1;
items[6].text = connecting_txt;
return 1;
}
break;
}
case EVENT_WINDOW_CLOSE:
d_free(mj);
break;
default:
break;
}
return 0;
}
void net_udp_manual_join_game()
{
struct _sockaddr HostAddr;
newmenu_item m[6];
int choice = 0, nitems = 0;
int old_game_mode;
char addrbuf[128]="";
char portbuf[6]="";
manual_join *mj;
newmenu_item m[7];
int nitems = 0;
// FIXME: Keep IP window to go back to
MALLOC(mj, manual_join, 1);
if (!mj)
return;
mj->connecting = 0;
mj->addrbuf[0] = '\0';
mj->portbuf[0] = '\0';
// FIXME: Keep manual join window to go back to
//setjmp(LeaveGame);
net_udp_init();
memset(&addrbuf,'\0', sizeof(char)*128);
snprintf(addrbuf, sizeof(char)*(strlen(GameArg.MplUdpHostAddr)+1), "%s", GameArg.MplUdpHostAddr);
memset(&mj->addrbuf,'\0', sizeof(char)*128);
snprintf(mj->addrbuf, sizeof(char)*(strlen(GameArg.MplUdpHostAddr)+1), "%s", GameArg.MplUdpHostAddr);
if (GameArg.MplUdpHostPort != 0)
snprintf(portbuf, sizeof(portbuf), "%d", GameArg.MplUdpHostPort);
snprintf(mj->portbuf, sizeof(mj->portbuf), "%d", GameArg.MplUdpHostPort);
else
snprintf(portbuf, sizeof(portbuf), "%d", UDP_PORT_DEFAULT);
snprintf(mj->portbuf, sizeof(mj->portbuf), "%d", UDP_PORT_DEFAULT);
if (GameArg.MplUdpMyPort != 0)
snprintf (UDP_MyPort, sizeof(UDP_MyPort), "%d", GameArg.MplUdpMyPort);
else
snprintf (UDP_MyPort, sizeof(UDP_MyPort), "%d", UDP_PORT_DEFAULT);
do {
old_game_mode = Game_mode;
nitems = 0;
m[nitems].type = NM_TYPE_TEXT; m[nitems].text="GAME ADDRESS OR HOSTNAME:"; nitems++;
m[nitems].type = NM_TYPE_INPUT; m[nitems].text=addrbuf; m[nitems].text_len=128; nitems++;
m[nitems].type = NM_TYPE_TEXT; m[nitems].text="GAME PORT:"; nitems++;
m[nitems].type = NM_TYPE_INPUT; m[nitems].text=portbuf; m[nitems].text_len=5; nitems++;
m[nitems].type = NM_TYPE_TEXT; m[nitems].text="MY PORT:"; nitems++;
m[nitems].type = NM_TYPE_INPUT; m[nitems].text=UDP_MyPort; m[nitems].text_len=5; nitems++;
nitems = 0;
m[nitems].type = NM_TYPE_TEXT; m[nitems].text="GAME ADDRESS OR HOSTNAME:"; nitems++;
m[nitems].type = NM_TYPE_INPUT; m[nitems].text=mj->addrbuf; m[nitems].text_len=128; nitems++;
m[nitems].type = NM_TYPE_TEXT; m[nitems].text="GAME PORT:"; nitems++;
m[nitems].type = NM_TYPE_INPUT; m[nitems].text=mj->portbuf; m[nitems].text_len=5; nitems++;
m[nitems].type = NM_TYPE_TEXT; m[nitems].text="MY PORT:"; nitems++;
m[nitems].type = NM_TYPE_INPUT; m[nitems].text=UDP_MyPort; m[nitems].text_len=5; nitems++;
m[nitems].type = NM_TYPE_TEXT; m[nitems].text=blank; nitems++; // for connecting_txt
choice = newmenu_do1( NULL, "ENTER GAME ADDRESS", nitems, m, NULL, NULL, choice );
if ( choice > -1 )
{
int sockres = -1;
if ((atoi(UDP_MyPort)) < 0 ||(atoi(UDP_MyPort)) > 65535)
{
snprintf (UDP_MyPort, sizeof(UDP_MyPort), "%d", UDP_PORT_DEFAULT);
nm_messagebox(TXT_ERROR, 1, TXT_OK, "Illegal port");
choice = 0;
continue;
}
sockres = udp_open_socket(0, atoi(UDP_MyPort));
if (sockres != 0)
{
choice = 0;
continue;
}
// Resolve address
if (udp_dns_filladdr(addrbuf, atoi(portbuf), &HostAddr) < 0)
{
nm_messagebox(TXT_ERROR, 1, TXT_OK, "Could not resolve Address!");
choice = 0;
continue;
}
else
{
net_udp_game_connect(HostAddr);
}
}
if (old_game_mode != Game_mode)
{
break; // leave menu
}
} while( choice > -1 );
newmenu_do1( NULL, "ENTER GAME ADDRESS", nitems, m, (int (*)(newmenu *, d_event *, void *))manual_join_game_handler, mj, 0 );
}
void net_udp_send_sequence_packet(UDP_sequence_packet seq, struct _sockaddr recv_addr)
@ -4252,24 +4291,26 @@ static int show_game_rules_handler(window *wind, d_event *event, netgame_info *n
game_flush_inputs();
break;
case EVENT_KEY_COMMAND:
k = ((d_event_keycommand *)event)->keycode;
switch (k)
{
case KEY_PRINT_SCREEN:
save_screen_shot(0); k = 0;
return 1;
case KEY_ENTER:
case KEY_SPACEBAR:
case KEY_ESC:
window_close(wind);
return 1;
}
break;
case EVENT_IDLE:
timer_delay2(50);
//see if redbook song needs to be restarted
RBACheckFinishedHook();
k = key_inkey();
switch( k ) {
case KEY_PRINT_SCREEN:
save_screen_shot(0); k = 0;
break;
case KEY_ENTER:
case KEY_SPACEBAR:
case KEY_ESC:
window_close(wind);
break;
}
return 0;
break;
case EVENT_WINDOW_DRAW:
@ -4328,16 +4369,11 @@ static int show_game_rules_handler(window *wind, d_event *event, netgame_info *n
gr_set_current_canvas(NULL);
break;
case EVENT_WINDOW_CLOSE:
return 0; // continue closing
break;
default:
return 0;
break;
}
return 1;
return 0;
}
void net_udp_show_game_rules(netgame_info *netgame)

View file

@ -512,7 +512,7 @@ int newmenu_dotiny( char * title, char * subtitle, int nitems, newmenu_item * it
int newmenu_do1( char * title, char * subtitle, int nitems, newmenu_item * item, int (*subfunction)(newmenu *menu, d_event *event, void *userdata), void *userdata, int citem )
{
return newmenu_do3( title, subtitle, nitems, item, subfunction, userdata, citem, userdata, -1, -1 );
return newmenu_do3( title, subtitle, nitems, item, subfunction, userdata, citem, NULL, -1, -1 );
}

View file

@ -343,15 +343,15 @@ int scores_handler(window *wind, d_event *event, scores_menu *menu)
window_close(wind); // then remove the old one
}
}
break;
case KEY_BACKSP: Int3(); k = 0; break;
case KEY_PRINT_SCREEN: save_screen_shot(0); k = 0; break;
return 1;
case KEY_BACKSP: Int3(); k = 0; return 1;
case KEY_PRINT_SCREEN: save_screen_shot(0); k = 0; return 1;
case KEY_ENTER:
case KEY_SPACEBAR:
case KEY_ESC:
window_close(wind);
break;
return 1;
}
break;