diff --git a/dxx-changelog.txt b/dxx-changelog.txt index 2efaa50e1..93eda26cb 100755 --- a/dxx-changelog.txt +++ b/dxx-changelog.txt @@ -1,5 +1,9 @@ D2X-Rebirth Changelog +20070112 +-------- +main/kmatrix.c: fixed canvas stuff to show summary correctly in OGL, added new strings for CTF and HOARD, code cleanup + 20070110 -------- main/kconfig.c, main/newmenu.c: joystick axes can be reassigned; higher offset for axes moving detection; correction for menus that are bigger than screen diff --git a/main/kmatrix.c b/main/kmatrix.c index 88bfaa3ce..fbcf62695 100755 --- a/main/kmatrix.c +++ b/main/kmatrix.c @@ -55,7 +55,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #include "network.h" #define CENTERING_OFFSET(x) ((300 - (70 + (x)*25 ))/2) -#define CENTERSCREEN (MenuHires?320:160) +#define CENTERSCREEN (SWIDTH/2) int kmatrix_kills_changed = 0; char ConditionLetters[]={' ','P','E','D','E','E','V','W'}; @@ -69,419 +69,390 @@ void kmatrix_reactor (char *message); void kmatrix_phallic (); void kmatrix_redraw_coop(); -#define LHX(x) ((x)*(MenuHires?2:1)) -#define LHY(y) ((y)*(MenuHires?2.4:1)) +#define LHX(x) ((x)*(MenuHires?2*((double)SWIDTH/640):((double)SWIDTH/320))) +#define LHY(y) ((y)*(MenuHires?2.4*((double)SHEIGHT/480):((double)SHEIGHT/200))) void kmatrix_draw_item( int i, int *sorted ) { - int j, x, y; - char temp[10]; + int j, x, y; + char temp[10]; - y = LHY(50+i*9); + y = LHY(50+i*9); - // Print player name. + // Print player name. - gr_printf( LHX(CENTERING_OFFSET(N_players)), y, "%s", Players[sorted[i]].callsign ); + gr_printf( LHX(CENTERING_OFFSET(N_players)), y, "%s", Players[sorted[i]].callsign ); - if (!((Game_mode & GM_MODEM) || (Game_mode & GM_SERIAL))) - gr_printf (LHX(CENTERING_OFFSET(N_players)-15),y,"%c",ConditionLetters[Players[sorted[i]].connected]); - - for (j=0; jcv_font = SMALL_FONT; if (oldmessage[0]!=0) - { + { gr_set_fontcolor(gr_find_closest_color(0,0,0),-1); gr_get_string_size(oldmessage, &sw, &sh, &aw); - // gr_printf( CENTERSCREEN-(sw/2), LHY(55+72+12), oldmessage); - } + } + gr_set_fontcolor(gr_find_closest_color(0,32,63),-1); gr_get_string_size(message, &sw, &sh, &aw); gr_printf( CENTERSCREEN-(sw/2), LHY(55+72+12), message); - strcpy ((char *)&oldmessage,message); - } +} extern int PhallicLimit,PhallicMan; void kmatrix_phallic () - { +{ int sw, sh, aw; char message[80]; if (!(Game_mode & GM_HOARD)) - return; + return; if ((Game_mode & GM_MODEM) || (Game_mode & GM_SERIAL)) - return; - + return; + if (PhallicMan==-1) - strcpy (message,"There was no record set for this level."); + strcpy (message,"There was no record set for this level."); else - sprintf (message,"%s had the best record at %d points.",Players[PhallicMan].callsign,PhallicLimit); + sprintf (message,"%s had the best record at %d points.",Players[PhallicMan].callsign,PhallicLimit); grd_curcanv->cv_font = SMALL_FONT; gr_set_fontcolor(gr_find_closest_color(63,63,63),-1); gr_get_string_size(message, &sw, &sh, &aw); gr_printf( CENTERSCREEN-(sw/2), LHY(55+72+3), message); - } - +} void load_stars(void); -grs_canvas *StarBackCanvas; - - void kmatrix_redraw() { - int i, color; - int sorted[MAX_NUM_NET_PLAYERS]; - grs_canvas *tempcanvas; - - if (Game_mode & GM_MULTI_COOP) - { - kmatrix_redraw_coop(); - return; - } - - multi_sort_kill_list(); + int i, color; + int sorted[MAX_NUM_NET_PLAYERS]; - tempcanvas=gr_create_canvas( grd_curcanv->cv_bitmap.bm_w, grd_curcanv->cv_bitmap.bm_h ); + if (Game_mode & GM_MULTI_COOP) + { + kmatrix_redraw_coop(); + return; + } - gr_set_current_canvas (tempcanvas); + multi_sort_kill_list(); - gr_bitmap (0,0,&StarBackCanvas->cv_bitmap); + gr_set_current_canvas(NULL); - grd_curcanv->cv_font = MEDIUM3_FONT; + grd_curcanv->cv_font = MEDIUM3_FONT; - gr_string( 0x8000, LHY(10), TXT_KILL_MATRIX_TITLE ); + if (Game_mode & GM_CAPTURE) + gr_string( 0x8000, LHY(10), "CAPTURE THE FLAG SUMMARY"); + else if (Game_mode & GM_HOARD) + gr_string( 0x8000, LHY(10), "HOARD SUMMARY"); + else + gr_string( 0x8000, LHY(10), TXT_KILL_MATRIX_TITLE); - grd_curcanv->cv_font = SMALL_FONT; + grd_curcanv->cv_font = SMALL_FONT; - multi_get_kill_list(sorted); + multi_get_kill_list(sorted); - kmatrix_draw_names(sorted); + kmatrix_draw_names(sorted); - for (i=0; icv_bitmap); - - gr_palette_load(gr_palette); - gr_free_canvas (tempcanvas); + gr_update(); + gr_palette_load(gr_palette); + gr_update(); } void kmatrix_redraw_coop() { - int i, color; - int sorted[MAX_NUM_NET_PLAYERS]; - grs_canvas *tempcanvas; - - multi_sort_kill_list(); + int i, color; + int sorted[MAX_NUM_NET_PLAYERS]; - tempcanvas=gr_create_canvas( grd_curcanv->cv_bitmap.bm_w, grd_curcanv->cv_bitmap.bm_h ); - gr_set_current_canvas (tempcanvas); + multi_sort_kill_list(); - gr_bitmap (0,0,&StarBackCanvas->cv_bitmap); + gr_set_current_canvas(NULL); + grd_curcanv->cv_font = MEDIUM3_FONT; + gr_string( 0x8000, LHY(10), "COOPERATIVE SUMMARY"); - grd_curcanv->cv_font = MEDIUM3_FONT; - gr_string( 0x8000, LHY(10), "COOPERATIVE SUMMARY" ); + grd_curcanv->cv_font = SMALL_FONT; - grd_curcanv->cv_font = SMALL_FONT; + multi_get_kill_list(sorted); - multi_get_kill_list(sorted); + kmatrix_draw_coop_names(sorted); - kmatrix_draw_coop_names(sorted); + for (i=0; icv_bitmap); - - gr_palette_load(gr_palette); - gr_free_canvas (tempcanvas); + gr_update(); + gr_palette_load(gr_palette); + gr_update(); } -#define MAX_VIEW_TIME F1_0*15 -#define ENDLEVEL_IDLE_TIME F1_0*10 +#define MAX_VIEW_TIME F1_0*15 +#define ENDLEVEL_IDLE_TIME F1_0*10 fix StartAbortMenuTime; - #ifdef MACINTOSH extern void load_stars_palette(); #endif @@ -489,249 +460,240 @@ extern void load_stars_palette(); extern void network_endlevel_poll3( int nitems, struct newmenu_item * menus, int * key, int citem ); void kmatrix_view(int network) -{ - int i, k, done,choice; - fix entry_time = timer_get_approx_seconds(); - int key; - int oldstates[MAX_PLAYERS]; - int previous_seconds_left=-1; - int num_ready,num_escaped; +{ + int i, k, done,choice; + fix entry_time = timer_get_approx_seconds(); + int key; + int oldstates[MAX_PLAYERS]; + int previous_seconds_left=-1; + int num_ready,num_escaped; - network=Game_mode & GM_NETWORK; + network=Game_mode & GM_NETWORK; - for (i=0;icv_bitmap.bm_w, grd_curcanv->cv_bitmap.bm_h ); - gr_set_current_canvas(StarBackCanvas); - #ifdef MACINTOSH - if (virtual_memory_on) { - load_stars_palette(); // horrible hack to prevent too much paging when doing endlevel syncing - gr_clear_canvas( BM_XRGB(0, 0, 0) ); - } else - #endif // note link to above if/else pair - load_stars(); - - WaitingForOthers=0; - kmatrix_redraw(); + set_screen_mode( SCREEN_MENU ); - //@@gr_palette_fade_in( gr_palette,32, 0); - game_flush_inputs(); +#ifdef MACINTOSH + if (virtual_memory_on) { + load_stars_palette(); // horrible hack to prevent too much paging when doing endlevel syncing + gr_clear_canvas( BM_XRGB(0, 0, 0) ); + } else +#endif // note link to above if/else pair + load_stars(); - done = 0; + WaitingForOthers=0; + kmatrix_redraw(); - for (i=0;i0) - { - if (is_D2_OEM) - { - if (Current_level_num==8) - { - Players[Player_num].connected=0; - if (network) - network_send_endlevel_packet(); - gr_free_canvas (StarBackCanvas); - multi_leave_game(); - Kmatrix_nomovie_message=0; - longjmp(LeaveGame, 0); - return; - } - } - - Players[Player_num].connected=7; - if (network) - network_send_endlevel_packet(); - break; - } - for (i=0; i<3; i++ ) - if (mouse_button_down_count(i)>0) - { - if (is_D2_OEM) - { - if (Current_level_num==8) - { - Players[Player_num].connected=0; - if (network) - network_send_endlevel_packet(); - gr_free_canvas (StarBackCanvas); - multi_leave_game(); - Kmatrix_nomovie_message=0; - longjmp(LeaveGame, 0); - return; - } - } - Players[Player_num].connected=7; - if (network) - network_send_endlevel_packet(); - break; - } - - //see if redbook song needs to be restarted - songs_check_redbook_repeat(); - - k = key_inkey(); - switch( k ) { - case KEY_ENTER: - case KEY_SPACEBAR: - if ((Game_mode & GM_SERIAL) || (Game_mode & GM_MODEM)) - { - done=1; - break; - } - - if (is_D2_OEM) - { - if (Current_level_num==8) - { - Players[Player_num].connected=0; - if (network) - network_send_endlevel_packet(); - gr_free_canvas (StarBackCanvas); - multi_leave_game(); - Kmatrix_nomovie_message=0; - longjmp(LeaveGame, 0); - return; - } - } - - Players[Player_num].connected=7; - if (network) - network_send_endlevel_packet(); - break; - case KEY_ESC: - if (Game_mode & GM_NETWORK) - { - StartAbortMenuTime=timer_get_approx_seconds(); - choice=nm_messagebox1( NULL,network_endlevel_poll3, 2, TXT_YES, TXT_NO, TXT_ABORT_GAME ); - } - else - choice=nm_messagebox( NULL, 2, TXT_YES, TXT_NO, TXT_ABORT_GAME ); - if (choice==0) - { - Players[Player_num].connected=0; - if (network) - network_send_endlevel_packet(); - gr_free_canvas (StarBackCanvas); - multi_leave_game(); - Kmatrix_nomovie_message=0; - longjmp(LeaveGame, 0); - return; - } - else - kmatrix_kills_changed=1; - - break; - - case KEY_PRINT_SCREEN: - save_screen_shot(0); - break; - case KEY_BACKSP: - Int3(); - break; - default: - break; - } - if (timer_get_approx_seconds() >= (entry_time+MAX_VIEW_TIME) && Players[Player_num].connected!=7) - { - if (is_D2_OEM) - { - if (Current_level_num==8) - { - Players[Player_num].connected=0; - if (network) - network_send_endlevel_packet(); - gr_free_canvas (StarBackCanvas); - multi_leave_game(); - Kmatrix_nomovie_message=0; - longjmp(LeaveGame, 0); - return; - } - } - - if ((Game_mode & GM_SERIAL) || (Game_mode & GM_MODEM)) - { - done=1; - break; - } - Players[Player_num].connected=7; - if (network) - network_send_endlevel_packet(); - } - - if (network && (Game_mode & GM_NETWORK)) - { - network_endlevel_poll2(0, NULL, &key, 0); - - for (num_escaped=0,num_ready=0,i=0;i0) + { + if (is_D2_OEM) { - if (Players[i].connected && i!=Player_num) - { - // Check timeout for idle players - if (timer_get_approx_seconds() > LastPacketTime[i]+ENDLEVEL_IDLE_TIME) - { - mprintf((0, "idle timeout for player %d.\n", i)); - Players[i].connected = 0; - network_send_endlevel_sub(i); - } - } - - if (Players[i].connected!=oldstates[i]) - { - if (ConditionLetters[Players[i].connected]!=ConditionLetters[oldstates[i]]) - kmatrix_kills_changed=1; - oldstates[i]=Players[i].connected; - network_send_endlevel_packet(); - } - if (Players[i].connected==0 || Players[i].connected==7) - num_ready++; - - if (Players[i].connected!=1) - num_escaped++; + if (Current_level_num==8) + { + Players[Player_num].connected=0; + if (network) + network_send_endlevel_packet(); + multi_leave_game(); + Kmatrix_nomovie_message=0; + longjmp(LeaveGame, 0); + return; + } + } + Players[Player_num].connected=7; + if (network) + network_send_endlevel_packet(); + break; + } + for (i=0; i<3; i++ ) + if (mouse_button_down_count(i)>0) + { + if (is_D2_OEM) + { + if (Current_level_num==8) + { + Players[Player_num].connected=0; + if (network) + network_send_endlevel_packet(); + multi_leave_game(); + Kmatrix_nomovie_message=0; + longjmp(LeaveGame, 0); + return; + } + } + Players[Player_num].connected=7; + if (network) + network_send_endlevel_packet(); + break; } - if (num_ready>=N_players) - done=1; - if (num_escaped>=N_players) - Countdown_seconds_left=-1; + //see if redbook song needs to be restarted + songs_check_redbook_repeat(); - if (previous_seconds_left != Countdown_seconds_left) + k = key_inkey(); + switch( k ) { + case KEY_ENTER: + case KEY_SPACEBAR: + if ((Game_mode & GM_SERIAL) || (Game_mode & GM_MODEM)) + { + done=1; + break; + } + + if (is_D2_OEM) + { + if (Current_level_num==8) { - previous_seconds_left=Countdown_seconds_left; - kmatrix_kills_changed=1; - } + Players[Player_num].connected=0; + if (network) + network_send_endlevel_packet(); + multi_leave_game(); + Kmatrix_nomovie_message=0; + longjmp(LeaveGame, 0); + return; + } + } - if ( kmatrix_kills_changed ) + Players[Player_num].connected=7; + if (network) + network_send_endlevel_packet(); + break; + + case KEY_ESC: + if (Game_mode & GM_NETWORK) + { + StartAbortMenuTime=timer_get_approx_seconds(); + choice=nm_messagebox1( NULL,network_endlevel_poll3, 2, TXT_YES, TXT_NO, TXT_ABORT_GAME ); + } + else + choice=nm_messagebox( NULL, 2, TXT_YES, TXT_NO, TXT_ABORT_GAME ); + if (choice==0) + { + Players[Player_num].connected=0; + if (network) + network_send_endlevel_packet(); + multi_leave_game(); + Kmatrix_nomovie_message=0; + longjmp(LeaveGame, 0); + return; + } + else + kmatrix_kills_changed=1; + break; + + case KEY_PRINT_SCREEN: + save_screen_shot(0); + break; + + case KEY_BACKSP: + Int3(); + break; + + default: + break; + } + + if (timer_get_approx_seconds() >= (entry_time+MAX_VIEW_TIME) && Players[Player_num].connected!=7) + { + if (is_D2_OEM) + { + if (Current_level_num==8) + { + Players[Player_num].connected=0; + if (network) + network_send_endlevel_packet(); + multi_leave_game(); + Kmatrix_nomovie_message=0; + longjmp(LeaveGame, 0); + return; + } + } + + if ((Game_mode & GM_SERIAL) || (Game_mode & GM_MODEM)) + { + done=1; + break; + } + + Players[Player_num].connected=7; + if (network) + network_send_endlevel_packet(); + } + + if (network && (Game_mode & GM_NETWORK)) + { + network_endlevel_poll2(0, NULL, &key, 0); + + for (num_escaped=0,num_ready=0,i=0;i LastPacketTime[i]+ENDLEVEL_IDLE_TIME) { - kmatrix_redraw(); - kmatrix_kills_changed=0; - } + mprintf((0, "idle timeout for player %d.\n", i)); + Players[i].connected = 0; + network_send_endlevel_sub(i); + } + } - } - } + if (Players[i].connected!=oldstates[i]) + { + if (ConditionLetters[Players[i].connected]!=ConditionLetters[oldstates[i]]) + kmatrix_kills_changed=1; + oldstates[i]=Players[i].connected; + network_send_endlevel_packet(); + } + + if (Players[i].connected==0 || Players[i].connected==7) + num_ready++; + + if (Players[i].connected!=1) + num_escaped++; + } + + if (num_ready>=N_players) + done=1; + if (num_escaped>=N_players) + Countdown_seconds_left=-1; + + if (previous_seconds_left != Countdown_seconds_left) + { + previous_seconds_left=Countdown_seconds_left; + kmatrix_kills_changed=1; + } + + if ( kmatrix_kills_changed ) + { + kmatrix_redraw(); + kmatrix_kills_changed=0; + } + } + } Players[Player_num].connected=7; if (network) - network_send_endlevel_packet(); // make sure + network_send_endlevel_packet(); // make sure + gr_palette_fade_out( gr_palette, 32, 0 ); -// Restore background and exit - gr_palette_fade_out( gr_palette, 32, 0 ); - - game_flush_inputs(); - - gr_free_canvas (StarBackCanvas); - - Kmatrix_nomovie_message=0; + game_flush_inputs(); + Kmatrix_nomovie_message=0; }