diff --git a/CHANGELOG.txt b/CHANGELOG.txt index deb3da2d6..9d3060063 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,5 +1,9 @@ D1X-Rebirth Changelog +20120418 +-------- +main/gameseq.c, main/gameseq.h, main/gauges.c, main/multi.c, main/net_udp.c, main/state.c: Removed usage of 'oldmaxnet' variable when switching between coop and other game modes which would not be correctly set when coop mode is loaded from a netgame profile; Removed 'MaxNumNetPlayers' variable as already replaced by Netgame.max_numplayers + 20120417 -------- main/gameseq.c: Allow level progressing if playing the builtin mission with EDITOR compiled - only exit if Current_level_num is 0 diff --git a/main/gameseq.c b/main/gameseq.c index 9d7e7802d..205a5e3cb 100644 --- a/main/gameseq.c +++ b/main/gameseq.c @@ -126,7 +126,6 @@ player Players[MAX_PLAYERS]; // Misc player info obj_position Player_init[MAX_PLAYERS]; // Global variables telling what sort of game we have -int MaxNumNetPlayers = -1; int NumNetPlayerPositions = -1; extern fix ThisLevelTime; diff --git a/main/gameseq.h b/main/gameseq.h index 1f62eaed2..a5cac27cb 100644 --- a/main/gameseq.h +++ b/main/gameseq.h @@ -110,7 +110,6 @@ void editor_reset_stuff_on_level(); extern void DoEndLevelScoreGlitz(int network); // stuff for multiplayer -extern int MaxNumNetPlayers; extern int NumNetPlayerPositions; void bash_to_shield(int, char *); diff --git a/main/gauges.c b/main/gauges.c index 62aee137d..1f4fe9a6b 100644 --- a/main/gauges.c +++ b/main/gauges.c @@ -2275,7 +2275,7 @@ int see_object(int objnum) fq.p1 = &Objects[objnum].pos; fq.rad = 0; fq.thisobjnum = Viewer - Objects; - fq.flags = FQ_TRANSWALL | FQ_CHECK_OBJS; + fq.flags = FQ_TRANSWALL | FQ_CHECK_OBJS | FQ_GET_SEGLIST; fq.startseg = Viewer->segnum; fq.ignore_obj_list = NULL; diff --git a/main/multi.c b/main/multi.c index 894876e54..94901fec7 100644 --- a/main/multi.c +++ b/main/multi.c @@ -372,7 +372,7 @@ multi_endlevel_score(void) if (Game_mode & GM_MULTI_COOP) { - for (i = 0; i < MaxNumNetPlayers; i++) + for (i = 0; i < Netgame.max_numplayers; i++) // Reset keys Players[i].flags &= ~(PLAYER_FLAGS_BLUE_KEY | PLAYER_FLAGS_RED_KEY | PLAYER_FLAGS_GOLD_KEY); } diff --git a/main/net_udp.c b/main/net_udp.c index 5f5af8870..b5ec7335a 100644 --- a/main/net_udp.c +++ b/main/net_udp.c @@ -1211,7 +1211,7 @@ net_udp_new_player(UDP_sequence_packet *their) pnum = their->player.connected; Assert(pnum >= 0); - Assert(pnum < MaxNumNetPlayers); + Assert(pnum < Netgame.max_numplayers); if (Newdemo_state == ND_STATE_RECORDING) { int new_player; @@ -1298,7 +1298,7 @@ void net_udp_welcome_player(UDP_sequence_packet *their) { // Player is new to this game - if ( !(Netgame.game_flags & NETGAME_FLAG_CLOSED) && (N_players < MaxNumNetPlayers)) + if ( !(Netgame.game_flags & NETGAME_FLAG_CLOSED) && (N_players < Netgame.max_numplayers)) { // Add player in an open slot, game not full yet @@ -1321,7 +1321,7 @@ void net_udp_welcome_player(UDP_sequence_packet *their) fix64 oldest_time = timer_query(); int activeplayers = 0; - Assert(N_players == MaxNumNetPlayers); + Assert(N_players == Netgame.max_numplayers); for (i = 0; i < Netgame.numplayers; i++) if (Netgame.players[i].connected) @@ -1547,7 +1547,7 @@ void net_udp_send_objects(void) Assert(Network_send_objects != 0); Assert(player_num >= 0); - Assert(player_num < MaxNumNetPlayers); + Assert(player_num < Netgame.max_numplayers); if (Endlevel_sequence || Control_center_destroyed) { @@ -1662,7 +1662,7 @@ int net_udp_verify_objects(int remote, int local) nplayers++; } - if (MaxNumNetPlayers<=nplayers) + if (Netgame.max_numplayers<=nplayers) return(0); return(1); @@ -1945,7 +1945,6 @@ void net_udp_update_netgame(void) Netgame.numplayers = N_players; Netgame.game_status = Network_status; - Netgame.max_numplayers = MaxNumNetPlayers; for (i = 0; i < MAX_PLAYERS; i++) { @@ -2723,8 +2722,8 @@ int net_udp_start_poll( newmenu *menu, d_event *event, void *userdata ) } } - if ( nm > MaxNumNetPlayers ) { - nm_messagebox( TXT_ERROR, 1, TXT_OK, "%s %d %s", TXT_SORRY_ONLY, MaxNumNetPlayers, TXT_NETPLAYERS_IN ); + if ( nm > Netgame.max_numplayers ) { + nm_messagebox( TXT_ERROR, 1, TXT_OK, "%s %d %s", TXT_SORRY_ONLY, Netgame.max_numplayers, TXT_NETPLAYERS_IN ); // Turn off the last player highlighted for (i = N_players; i > 0; i--) if (menus[i].value == 1) @@ -2750,7 +2749,7 @@ int net_udp_start_poll( newmenu *menu, d_event *event, void *userdata ) digi_play_sample(SOUND_HUD_MESSAGE, F1_0); //A noise to alert you when someone joins a starting game... //End addition by GF - if (N_players <= MaxNumNetPlayers) + if (N_players <= Netgame.max_numplayers) { menus[N_players-1].value = 1; } @@ -2766,7 +2765,7 @@ int net_udp_start_poll( newmenu *menu, d_event *event, void *userdata ) for (i=0; itype) { @@ -2980,8 +2978,6 @@ int net_udp_game_param_handler( newmenu *menu, d_event *event, param_opt *opt ) if (menus[opt->coop].value) { - oldmaxnet=1; - if (menus[opt->maxnet].value>2) { menus[opt->maxnet].value=2; @@ -2992,7 +2988,7 @@ int net_udp_game_param_handler( newmenu *menu, d_event *event, param_opt *opt ) menus[opt->maxnet].max_value=2; } sprintf( menus[opt->maxnet].text, "Maximum players: %d", menus[opt->maxnet].value+2 ); - Netgame.max_numplayers = MaxNumNetPlayers = menus[opt->maxnet].value+2; + Netgame.max_numplayers = menus[opt->maxnet].value+2; if (!(Netgame.game_flags & NETGAME_FLAG_SHOW_MAP)) Netgame.game_flags |= NETGAME_FLAG_SHOW_MAP; @@ -3005,13 +3001,12 @@ int net_udp_game_param_handler( newmenu *menu, d_event *event, param_opt *opt ) } else // if !Coop game { - if (oldmaxnet) + if (menus[opt->maxnet].max_value<6) { - oldmaxnet=0; menus[opt->maxnet].value=6; menus[opt->maxnet].max_value=6; sprintf( menus[opt->maxnet].text, "Maximum players: %d", menus[opt->maxnet].value+2 ); - Netgame.max_numplayers = MaxNumNetPlayers = menus[opt->maxnet].value+2; + Netgame.max_numplayers = menus[opt->maxnet].value+2; } } @@ -3037,8 +3032,7 @@ int net_udp_game_param_handler( newmenu *menu, d_event *event, param_opt *opt ) if (citem == opt->maxnet) { sprintf( menus[opt->maxnet].text, "Maximum players: %d", menus[opt->maxnet].value+2 ); - MaxNumNetPlayers = menus[opt->maxnet].value+2; - Netgame.max_numplayers=MaxNumNetPlayers; + Netgame.max_numplayers = menus[opt->maxnet].value+2; } if ((citem >= opt->mode) && (citem <= opt->mode_end)) @@ -3122,7 +3116,7 @@ int net_udp_setup_game() if (i!=Player_num) Players[i].callsign[0]=0; - Netgame.max_numplayers = MaxNumNetPlayers = MAX_PLAYERS; + Netgame.max_numplayers = MAX_PLAYERS; Netgame.KillGoal=0; Netgame.PlayTimeAllowed=0; Netgame.RefusePlayers=0; @@ -3146,7 +3140,7 @@ int net_udp_setup_game() read_netgame_profile(&Netgame); if (Netgame.gamemode == NETGAME_COOPERATIVE) // did we restore Coop as default? then fix max players right now! - Netgame.max_numplayers = MaxNumNetPlayers = 4; + Netgame.max_numplayers = 4; strcpy(Netgame.mission_name, Current_mission_filename); strcpy(Netgame.mission_title, Current_mission_longname); @@ -3191,9 +3185,9 @@ int net_udp_setup_game() m[optnum].type = NM_TYPE_RADIO; m[optnum].text = "Restricted Game "; m[optnum].group=1; m[optnum].value=Netgame.RefusePlayers; optnum++; opt.maxnet = optnum; - sprintf( srmaxnet, "Maximum players: %d", MaxNumNetPlayers); + sprintf( srmaxnet, "Maximum players: %d", Netgame.max_numplayers); m[optnum].type = NM_TYPE_SLIDER; m[optnum].value=Netgame.max_numplayers-2; m[optnum].text= srmaxnet; m[optnum].min_value=0; - m[optnum].max_value=MaxNumNetPlayers-2; optnum++; + m[optnum].max_value=Netgame.max_numplayers-2; optnum++; opt.moreopts=optnum; m[optnum].type = NM_TYPE_MENU; m[optnum].text = "Advanced options"; optnum++; @@ -3338,9 +3332,9 @@ int net_udp_send_sync(void) int i, j, np; // Check if there are enough starting positions - if (NumNetPlayerPositions < MaxNumNetPlayers) + if (NumNetPlayerPositions < Netgame.max_numplayers) { - nm_messagebox(TXT_ERROR, 1, TXT_OK, "Not enough start positions\n(set %d got %d)\nNetgame aborted", MaxNumNetPlayers, NumNetPlayerPositions); + nm_messagebox(TXT_ERROR, 1, TXT_OK, "Not enough start positions\n(set %d got %d)\nNetgame aborted", Netgame.max_numplayers, NumNetPlayerPositions); // Tell everyone we're bailing Netgame.numplayers = 0; for (i=1; i MaxNumNetPlayers) { - nm_messagebox( TXT_ERROR, 1, TXT_OK, "%s %d %s", TXT_SORRY_ONLY, MaxNumNetPlayers, TXT_NETPLAYERS_IN ); + if ( N_players > Netgame.max_numplayers) { + nm_messagebox( TXT_ERROR, 1, TXT_OK, "%s %d %s", TXT_SORRY_ONLY, Netgame.max_numplayers, TXT_NETPLAYERS_IN ); N_players = save_nplayers; goto GetPlayersAgain; } @@ -3642,7 +3636,6 @@ int net_udp_start_game(void) Netgame.game_status = NETSTAT_STARTING; Netgame.numplayers = 0; net_udp_set_game_mode(Netgame.gamemode); - MaxNumNetPlayers = Netgame.max_numplayers; Netgame.players[0].protocol.udp.isyou = 1; // I am Host. I need to know that y'know? For syncing later. Network_status = NETSTAT_STARTING; @@ -3840,7 +3833,6 @@ int net_udp_do_join_game() // Choice is valid, prepare to join in Difficulty_level = Netgame.difficulty; - MaxNumNetPlayers = Netgame.max_numplayers; change_playernum_to(1); net_udp_set_game_mode(Netgame.gamemode); @@ -4838,7 +4830,7 @@ int net_udp_get_new_player_num (UDP_sequence_packet *their) their=their; - if ( N_players < MaxNumNetPlayers) + if ( N_players < Netgame.max_numplayers) return (N_players); else @@ -4849,7 +4841,7 @@ int net_udp_get_new_player_num (UDP_sequence_packet *their) int oldest_player = -1; fix64 oldest_time = timer_query(); - Assert(N_players == MaxNumNetPlayers); + Assert(N_players == Netgame.max_numplayers); for (i = 0; i < N_players; i++) { diff --git a/main/state.c b/main/state.c index 2de456b59..97c0c3c68 100644 --- a/main/state.c +++ b/main/state.c @@ -1434,7 +1434,6 @@ RetryObjectLoading: PHYSFS_read(fp, &Netgame.game_status, sizeof(ubyte), 1); PHYSFS_read(fp, &Netgame.numplayers, sizeof(ubyte), 1); PHYSFS_read(fp, &Netgame.max_numplayers, sizeof(ubyte), 1); - MaxNumNetPlayers = Netgame.max_numplayers; PHYSFS_read(fp, &Netgame.numconnected, sizeof(ubyte), 1); Netgame.level_time = PHYSFSX_readSXE32(fp, swap); for (i = 0; i < MAX_PLAYERS; i++)