Restructure gameseq.c for merging
This commit is contained in:
parent
67407d211e
commit
c90ade08fe
|
@ -99,8 +99,10 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
||||||
#include "segment.h"
|
#include "segment.h"
|
||||||
#include "gameseg.h"
|
#include "gameseg.h"
|
||||||
|
|
||||||
|
#define GLITZ_BACKGROUND Menu_pcx_name
|
||||||
|
|
||||||
static int AdvanceLevel(int secret_flag);
|
static int AdvanceLevel(int secret_flag);
|
||||||
static void StartLevel(int random);
|
static void StartLevel(int random_flag);
|
||||||
static void copy_defaults_to_robot_all(void);
|
static void copy_defaults_to_robot_all(void);
|
||||||
|
|
||||||
//Current_level_num starts at 1 for the first level
|
//Current_level_num starts at 1 for the first level
|
||||||
|
@ -121,6 +123,7 @@ obj_position Player_init[MAX_PLAYERS];
|
||||||
|
|
||||||
// Global variables telling what sort of game we have
|
// Global variables telling what sort of game we have
|
||||||
int NumNetPlayerPositions = -1;
|
int NumNetPlayerPositions = -1;
|
||||||
|
int Do_appearance_effect=0;
|
||||||
|
|
||||||
static void verify_console_object()
|
static void verify_console_object()
|
||||||
{
|
{
|
||||||
|
@ -159,9 +162,7 @@ static int count_number_of_hostages()
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void gameseq_init_network_players()
|
||||||
void
|
|
||||||
static gameseq_init_network_players()
|
|
||||||
{
|
{
|
||||||
int i,k,j;
|
int i,k,j;
|
||||||
|
|
||||||
|
@ -266,7 +267,7 @@ static void init_ammo_and_energy(void)
|
||||||
// Setup player for new level (After completion of previous level)
|
// Setup player for new level (After completion of previous level)
|
||||||
void init_player_stats_level(int secret_flag)
|
void init_player_stats_level(int secret_flag)
|
||||||
{
|
{
|
||||||
(void)secret_flag;
|
secret_flag = 0;
|
||||||
// int i;
|
// int i;
|
||||||
|
|
||||||
Players[Player_num].last_score = Players[Player_num].score;
|
Players[Player_num].last_score = Players[Player_num].score;
|
||||||
|
@ -278,8 +279,6 @@ void init_player_stats_level(int secret_flag)
|
||||||
Players[Player_num].hours_level = 0;
|
Players[Player_num].hours_level = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
init_ammo_and_energy();
|
|
||||||
|
|
||||||
Players[Player_num].killer_objnum = -1;
|
Players[Player_num].killer_objnum = -1;
|
||||||
|
|
||||||
Players[Player_num].num_kills_level = 0;
|
Players[Player_num].num_kills_level = 0;
|
||||||
|
@ -290,18 +289,21 @@ void init_player_stats_level(int secret_flag)
|
||||||
Players[Player_num].hostages_total += Players[Player_num].hostages_level;
|
Players[Player_num].hostages_total += Players[Player_num].hostages_level;
|
||||||
Players[Player_num].hostages_on_board = 0;
|
Players[Player_num].hostages_on_board = 0;
|
||||||
|
|
||||||
|
if (!secret_flag) {
|
||||||
|
init_ammo_and_energy();
|
||||||
|
|
||||||
Players[Player_num].flags &= (~KEY_BLUE);
|
Players[Player_num].flags &= (~KEY_BLUE);
|
||||||
Players[Player_num].flags &= (~KEY_RED);
|
Players[Player_num].flags &= (~KEY_RED);
|
||||||
Players[Player_num].flags &= (~KEY_GOLD);
|
Players[Player_num].flags &= (~KEY_GOLD);
|
||||||
|
|
||||||
Players[Player_num].flags &= (~PLAYER_FLAGS_INVULNERABLE);
|
Players[Player_num].flags &= ~(PLAYER_FLAGS_INVULNERABLE | PLAYER_FLAGS_CLOAKED);
|
||||||
Players[Player_num].flags &= (~PLAYER_FLAGS_CLOAKED);
|
|
||||||
|
|
||||||
Players[Player_num].cloak_time = 0;
|
Players[Player_num].cloak_time = 0;
|
||||||
Players[Player_num].invulnerable_time = 0;
|
Players[Player_num].invulnerable_time = 0;
|
||||||
|
|
||||||
if ((Game_mode & GM_MULTI) && !(Game_mode & GM_MULTI_COOP))
|
if ((Game_mode & GM_MULTI) && !(Game_mode & GM_MULTI_COOP))
|
||||||
Players[Player_num].flags |= (KEY_BLUE | KEY_RED | KEY_GOLD);
|
Players[Player_num].flags |= (KEY_BLUE | KEY_RED | KEY_GOLD);
|
||||||
|
}
|
||||||
|
|
||||||
Player_is_dead = 0; // Added by RH
|
Player_is_dead = 0; // Added by RH
|
||||||
Dead_player_camera = NULL;
|
Dead_player_camera = NULL;
|
||||||
|
@ -326,7 +328,6 @@ void init_player_stats_new_ship(ubyte pnum)
|
||||||
newdemo_record_player_weapon(0, 0);
|
newdemo_record_player_weapon(0, 0);
|
||||||
newdemo_record_player_weapon(1, 0);
|
newdemo_record_player_weapon(1, 0);
|
||||||
}
|
}
|
||||||
Global_laser_firing_count=0;
|
|
||||||
Primary_weapon = 0;
|
Primary_weapon = 0;
|
||||||
Secondary_weapon = 0;
|
Secondary_weapon = 0;
|
||||||
dead_player_end(); //player no longer dead
|
dead_player_end(); //player no longer dead
|
||||||
|
@ -334,6 +335,7 @@ void init_player_stats_new_ship(ubyte pnum)
|
||||||
Player_exploded = 0;
|
Player_exploded = 0;
|
||||||
Player_eggs_dropped = 0;
|
Player_eggs_dropped = 0;
|
||||||
Dead_player_camera = 0;
|
Dead_player_camera = 0;
|
||||||
|
Global_laser_firing_count=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Players[pnum].energy = INITIAL_ENERGY;
|
Players[pnum].energy = INITIAL_ENERGY;
|
||||||
|
@ -570,12 +572,12 @@ void LoadLevel(int level_num,int page_in_textures)
|
||||||
timer_delay(F1_0);
|
timer_delay(F1_0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
my_segments_checksum = netmisc_calc_checksum();
|
|
||||||
|
|
||||||
load_endlevel_data(level_num);
|
load_endlevel_data(level_num);
|
||||||
|
|
||||||
load_custom_data(level_name);
|
load_custom_data(level_name);
|
||||||
|
|
||||||
|
my_segments_checksum = netmisc_calc_checksum();
|
||||||
|
|
||||||
reset_network_objects();
|
reset_network_objects();
|
||||||
|
|
||||||
Players[Player_num] = save_player;
|
Players[Player_num] = save_player;
|
||||||
|
@ -644,7 +646,7 @@ void DoEndLevelScoreGlitz(int network)
|
||||||
char endgame_text[64];
|
char endgame_text[64];
|
||||||
#define N_GLITZITEMS 9
|
#define N_GLITZITEMS 9
|
||||||
char m_str[N_GLITZITEMS][30];
|
char m_str[N_GLITZITEMS][30];
|
||||||
newmenu_item m[9];
|
newmenu_item m[N_GLITZITEMS];
|
||||||
int i,c;
|
int i,c;
|
||||||
char title[128];
|
char title[128];
|
||||||
int is_last_level;
|
int is_last_level;
|
||||||
|
@ -660,9 +662,9 @@ void DoEndLevelScoreGlitz(int network)
|
||||||
} else
|
} else
|
||||||
skill_points = 0;
|
skill_points = 0;
|
||||||
|
|
||||||
|
hostage_points = Players[Player_num].hostages_on_board * 500 * (Difficulty_level+1);
|
||||||
shield_points = f2i(Players[Player_num].shields) * 10 * (Difficulty_level+1);
|
shield_points = f2i(Players[Player_num].shields) * 10 * (Difficulty_level+1);
|
||||||
energy_points = f2i(Players[Player_num].energy) * 5 * (Difficulty_level+1);
|
energy_points = f2i(Players[Player_num].energy) * 5 * (Difficulty_level+1);
|
||||||
hostage_points = Players[Player_num].hostages_on_board * 500 * (Difficulty_level+1);
|
|
||||||
} else {
|
} else {
|
||||||
skill_points = 0;
|
skill_points = 0;
|
||||||
shield_points = 0;
|
shield_points = 0;
|
||||||
|
@ -702,12 +704,9 @@ void DoEndLevelScoreGlitz(int network)
|
||||||
sprintf(m_str[c++], "%s%i", TXT_TOTAL_SCORE, Players[Player_num].score);
|
sprintf(m_str[c++], "%s%i", TXT_TOTAL_SCORE, Players[Player_num].score);
|
||||||
|
|
||||||
for (i=0; i<c; i++) {
|
for (i=0; i<c; i++) {
|
||||||
m[i].type = NM_TYPE_TEXT;
|
nm_set_item_text(& m[i], m_str[i]);
|
||||||
m[i].text = m_str[i];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// m[c].type = NM_TYPE_MENU; m[c++].text = "Ok";
|
|
||||||
|
|
||||||
if (Current_level_num < 0)
|
if (Current_level_num < 0)
|
||||||
sprintf(title,"%s%s %d %s\n %s %s",is_last_level?"\n\n\n":"\n",TXT_SECRET_LEVEL, -Current_level_num, TXT_COMPLETE, Current_level_name, TXT_DESTROYED);
|
sprintf(title,"%s%s %d %s\n %s %s",is_last_level?"\n\n\n":"\n",TXT_SECRET_LEVEL, -Current_level_num, TXT_COMPLETE, Current_level_name, TXT_DESTROYED);
|
||||||
else
|
else
|
||||||
|
@ -716,12 +715,12 @@ void DoEndLevelScoreGlitz(int network)
|
||||||
Assert(c <= N_GLITZITEMS);
|
Assert(c <= N_GLITZITEMS);
|
||||||
|
|
||||||
if ( network && (Game_mode & GM_NETWORK) )
|
if ( network && (Game_mode & GM_NETWORK) )
|
||||||
newmenu_do2(NULL, title, c, m, multi_endlevel_poll1, NULL, 0, Menu_pcx_name);
|
newmenu_do2(NULL, title, c, m, multi_endlevel_poll1, NULL, 0, GLITZ_BACKGROUND);
|
||||||
else
|
else
|
||||||
newmenu_do2(NULL, title, c, m, NULL, NULL, 0, Menu_pcx_name);
|
newmenu_do2(NULL, title, c, m, NULL, NULL, 0, GLITZ_BACKGROUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int draw_rock(newmenu *menu, d_event *event, grs_bitmap *background)
|
static int draw_endlevel_background(newmenu *menu, d_event *event, grs_bitmap *background)
|
||||||
{
|
{
|
||||||
menu = menu;
|
menu = menu;
|
||||||
|
|
||||||
|
@ -750,30 +749,29 @@ static void do_screen_message(const char *fmt, ...)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gr_init_bitmap_data(&background);
|
gr_init_bitmap_data(&background);
|
||||||
if (pcx_read_bitmap(Menu_pcx_name, &background, BM_LINEAR, gr_palette) != PCX_ERROR_NONE)
|
if (pcx_read_bitmap(GLITZ_BACKGROUND, &background, BM_LINEAR, gr_palette) != PCX_ERROR_NONE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gr_palette_load(gr_palette);
|
gr_palette_load(gr_palette);
|
||||||
|
|
||||||
va_start(arglist, fmt);
|
va_start(arglist, fmt);
|
||||||
vsprintf(msg, fmt, arglist);
|
vsnprintf(msg, sizeof(msg), fmt, arglist);
|
||||||
va_end(arglist);
|
va_end(arglist);
|
||||||
|
|
||||||
nm_messagebox1(NULL, (int (*)(newmenu *, d_event *, void *))draw_rock, &background, 1, TXT_OK, msg);
|
nm_messagebox1(NULL, (int (*)(newmenu *, d_event *, void *))draw_endlevel_background, &background, 1, TXT_OK, msg);
|
||||||
gr_free_bitmap_data(&background);
|
gr_free_bitmap_data(&background);
|
||||||
}
|
}
|
||||||
|
|
||||||
//called when the player has finished a level
|
//called when the player has finished a level
|
||||||
void PlayerFinishedLevel(int secret_flag)
|
void PlayerFinishedLevel(int secret_flag)
|
||||||
{
|
{
|
||||||
int rval;
|
|
||||||
int was_multi = 0;
|
|
||||||
|
|
||||||
if (Game_wind)
|
if (Game_wind)
|
||||||
window_set_visible(Game_wind, 0);
|
window_set_visible(Game_wind, 0);
|
||||||
|
|
||||||
//credit the player for hostages
|
//credit the player for hostages
|
||||||
Players[Player_num].hostages_rescued_total += Players[Player_num].hostages_on_board;
|
Players[Player_num].hostages_rescued_total += Players[Player_num].hostages_on_board;
|
||||||
|
int rval;
|
||||||
|
int was_multi = 0;
|
||||||
|
|
||||||
if (!(Game_mode & GM_MULTI) && (secret_flag)) {
|
if (!(Game_mode & GM_MULTI) && (secret_flag)) {
|
||||||
newmenu_item m[1];
|
newmenu_item m[1];
|
||||||
|
@ -943,7 +941,6 @@ void DoPlayerDead()
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( Control_center_destroyed ) {
|
if ( Control_center_destroyed ) {
|
||||||
int rval;
|
|
||||||
|
|
||||||
//clear out stuff so no bonus
|
//clear out stuff so no bonus
|
||||||
Players[Player_num].hostages_on_board = 0;
|
Players[Player_num].hostages_on_board = 0;
|
||||||
|
@ -953,6 +950,7 @@ void DoPlayerDead()
|
||||||
|
|
||||||
do_screen_message(TXT_DIED_IN_MINE); // Give them some indication of what happened
|
do_screen_message(TXT_DIED_IN_MINE); // Give them some indication of what happened
|
||||||
|
|
||||||
|
int rval;
|
||||||
if (Current_level_num == Last_level) {
|
if (Current_level_num == Last_level) {
|
||||||
if ((Game_mode & GM_MULTI) && !(Game_mode & GM_MULTI_COOP))
|
if ((Game_mode & GM_MULTI) && !(Game_mode & GM_MULTI_COOP))
|
||||||
{
|
{
|
||||||
|
@ -1013,13 +1011,15 @@ void StartNewLevelSub(int level_num, int page_in_textures, int secret_flag)
|
||||||
newdemo_record_start_frame(FrameTime );
|
newdemo_record_start_frame(FrameTime );
|
||||||
}
|
}
|
||||||
|
|
||||||
LoadLevel(level_num, page_in_textures);
|
LoadLevel(level_num,page_in_textures);
|
||||||
|
|
||||||
Assert(Current_level_num == level_num); //make sure level set right
|
Assert(Current_level_num == level_num); //make sure level set right
|
||||||
|
|
||||||
gameseq_init_network_players(); // Initialize the Players array for
|
gameseq_init_network_players(); // Initialize the Players array for
|
||||||
// this level
|
// this level
|
||||||
|
|
||||||
|
Viewer = &Objects[Players[Player_num].objnum];
|
||||||
|
|
||||||
if (Game_mode & GM_NETWORK)
|
if (Game_mode & GM_NETWORK)
|
||||||
{
|
{
|
||||||
if(multi_level_sync()) // After calling this, Player_num is set
|
if(multi_level_sync()) // After calling this, Player_num is set
|
||||||
|
@ -1045,8 +1045,6 @@ void StartNewLevelSub(int level_num, int page_in_textures, int secret_flag)
|
||||||
Players[i].flags |= Netgame.player_flags[i];
|
Players[i].flags |= Netgame.player_flags[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
Viewer = &Objects[Players[Player_num].objnum];
|
|
||||||
|
|
||||||
if (Game_mode & GM_MULTI)
|
if (Game_mode & GM_MULTI)
|
||||||
{
|
{
|
||||||
multi_prep_level(); // Removes robots from level if necessary
|
multi_prep_level(); // Removes robots from level if necessary
|
||||||
|
@ -1123,13 +1121,13 @@ void StartNewLevel(int level_num)
|
||||||
}
|
}
|
||||||
|
|
||||||
//initialize the player object position & orientation (at start of game, or new ship)
|
//initialize the player object position & orientation (at start of game, or new ship)
|
||||||
static void InitPlayerPosition(int random)
|
static void InitPlayerPosition(int random_flag)
|
||||||
{
|
{
|
||||||
int NewPlayer=0;
|
int NewPlayer=0;
|
||||||
|
|
||||||
if (! ((Game_mode & GM_MULTI) && !(Game_mode&GM_MULTI_COOP)) ) // If not deathmatch
|
if (! ((Game_mode & GM_MULTI) && !(Game_mode&GM_MULTI_COOP)) ) // If not deathmatch
|
||||||
NewPlayer = Player_num;
|
NewPlayer = Player_num;
|
||||||
else if (random == 1)
|
else if (random_flag == 1)
|
||||||
{
|
{
|
||||||
int i, trys=0;
|
int i, trys=0;
|
||||||
fix closest_dist = 0x7ffffff, dist;
|
fix closest_dist = 0x7ffffff, dist;
|
||||||
|
@ -1150,16 +1148,15 @@ static void InitPlayerPosition(int random)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} while ( (closest_dist<i2f(15*20)) && (trys<MAX_PLAYERS*2) );
|
} while ( (closest_dist<i2f(15*20)) && (trys<MAX_PLAYERS*2) );
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
// If deathmatch and not random, positions were already determined by sync packet
|
// If deathmatch and not random, positions were already determined by sync packet
|
||||||
reset_player_object();
|
reset_player_object();
|
||||||
reset_cruise();
|
reset_cruise();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Assert(NewPlayer >= 0);
|
Assert(NewPlayer >= 0);
|
||||||
Assert(NewPlayer < NumNetPlayerPositions);
|
Assert(NewPlayer < NumNetPlayerPositions);
|
||||||
ConsoleObject->pos = Player_init[NewPlayer].pos;
|
ConsoleObject->pos = Player_init[NewPlayer].pos;
|
||||||
|
@ -1200,15 +1197,13 @@ static void copy_defaults_to_robot_all(void)
|
||||||
copy_defaults_to_robot(&Objects[i]);
|
copy_defaults_to_robot(&Objects[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Do_appearance_effect=0;
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------------------------------
|
||||||
//called when the player is starting a level (new game or new ship)
|
//called when the player is starting a level (new game or new ship)
|
||||||
static void StartLevel(int random)
|
static void StartLevel(int random_flag)
|
||||||
{
|
{
|
||||||
Assert(!Player_is_dead);
|
Assert(!Player_is_dead);
|
||||||
|
|
||||||
InitPlayerPosition(random);
|
InitPlayerPosition(random_flag);
|
||||||
|
|
||||||
verify_console_object();
|
verify_console_object();
|
||||||
|
|
||||||
|
@ -1237,11 +1232,4 @@ static void StartLevel(int random)
|
||||||
reset_rear_view();
|
reset_rear_view();
|
||||||
Auto_fire_fusion_cannon_time = 0;
|
Auto_fire_fusion_cannon_time = 0;
|
||||||
Fusion_charge = 0;
|
Fusion_charge = 0;
|
||||||
|
|
||||||
if (!(Game_mode & GM_MULTI)) // stuff for Singleplayer only
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -104,13 +104,15 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
||||||
#include "segment.h"
|
#include "segment.h"
|
||||||
#include "gameseg.h"
|
#include "gameseg.h"
|
||||||
|
|
||||||
|
#define GLITZ_BACKGROUND STARS_BACKGROUND
|
||||||
|
|
||||||
|
|
||||||
static void StartNewLevelSecret(int level_num, int page_in_textures);
|
static void StartNewLevelSecret(int level_num, int page_in_textures);
|
||||||
static void InitPlayerPosition(int random_flag);
|
static void InitPlayerPosition(int random_flag);
|
||||||
static void DoEndGame(void);
|
static void DoEndGame(void);
|
||||||
|
static void filter_objects_from_level();
|
||||||
static void AdvanceLevel(int secret_flag);
|
static void AdvanceLevel(int secret_flag);
|
||||||
static void StartLevel(int random_flag);
|
static void StartLevel(int random_flag);
|
||||||
static void filter_objects_from_level();
|
|
||||||
static void copy_defaults_to_robot_all(void);
|
static void copy_defaults_to_robot_all(void);
|
||||||
|
|
||||||
//Current_level_num starts at 1 for the first level
|
//Current_level_num starts at 1 for the first level
|
||||||
|
@ -123,16 +125,13 @@ char Current_level_name[LEVEL_NAME_LEN];
|
||||||
int N_players=1; // Number of players ( >1 means a net game, eh?)
|
int N_players=1; // Number of players ( >1 means a net game, eh?)
|
||||||
int Player_num=0; // The player number who is on the console.
|
int Player_num=0; // The player number who is on the console.
|
||||||
player Players[MAX_PLAYERS+4]; // Misc player info
|
player Players[MAX_PLAYERS+4]; // Misc player info
|
||||||
|
int First_secret_visit = 1;
|
||||||
obj_position Player_init[MAX_PLAYERS];
|
obj_position Player_init[MAX_PLAYERS];
|
||||||
|
|
||||||
// Global variables telling what sort of game we have
|
// Global variables telling what sort of game we have
|
||||||
int NumNetPlayerPositions = -1;
|
int NumNetPlayerPositions = -1;
|
||||||
|
|
||||||
|
|
||||||
int Do_appearance_effect=0;
|
int Do_appearance_effect=0;
|
||||||
|
|
||||||
int First_secret_visit = 1;
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
static void verify_console_object()
|
static void verify_console_object()
|
||||||
{
|
{
|
||||||
|
@ -140,7 +139,7 @@ static void verify_console_object()
|
||||||
Assert( Players[Player_num].objnum > -1 );
|
Assert( Players[Player_num].objnum > -1 );
|
||||||
ConsoleObject = &Objects[Players[Player_num].objnum];
|
ConsoleObject = &Objects[Players[Player_num].objnum];
|
||||||
Assert( ConsoleObject->type==OBJ_PLAYER );
|
Assert( ConsoleObject->type==OBJ_PLAYER );
|
||||||
Assert( ConsoleObject->id==Player_num );
|
Assert( get_player_id(ConsoleObject)==Player_num );
|
||||||
}
|
}
|
||||||
|
|
||||||
static int count_number_of_robots()
|
static int count_number_of_robots()
|
||||||
|
@ -173,8 +172,7 @@ static int count_number_of_hostages()
|
||||||
}
|
}
|
||||||
|
|
||||||
//added 10/12/95: delete buddy bot if coop game. Probably doesn't really belong here. -MT
|
//added 10/12/95: delete buddy bot if coop game. Probably doesn't really belong here. -MT
|
||||||
void
|
static void gameseq_init_network_players()
|
||||||
static gameseq_init_network_players()
|
|
||||||
{
|
{
|
||||||
int i,k,j;
|
int i,k,j;
|
||||||
|
|
||||||
|
@ -195,7 +193,7 @@ static gameseq_init_network_players()
|
||||||
Player_init[k].orient = Objects[i].orient;
|
Player_init[k].orient = Objects[i].orient;
|
||||||
Player_init[k].segnum = Objects[i].segnum;
|
Player_init[k].segnum = Objects[i].segnum;
|
||||||
Players[k].objnum = i;
|
Players[k].objnum = i;
|
||||||
Objects[i].id = k;
|
set_player_id(&Objects[i], k);
|
||||||
k++;
|
k++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -203,7 +201,7 @@ static gameseq_init_network_players()
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((Objects[i].type==OBJ_ROBOT) && (Robot_info[get_robot_id(&Objects[i])].companion) && (Game_mode & GM_MULTI))
|
if ((Objects[i].type==OBJ_ROBOT) && robot_is_companion(&Robot_info[get_robot_id(&Objects[i])]) && (Game_mode & GM_MULTI))
|
||||||
obj_delete(i); //kill the buddy in netgames
|
obj_delete(i); //kill the buddy in netgames
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -315,9 +313,8 @@ void init_player_stats_level(int secret_flag)
|
||||||
Players[Player_num].flags &= (~KEY_RED);
|
Players[Player_num].flags &= (~KEY_RED);
|
||||||
Players[Player_num].flags &= (~KEY_GOLD);
|
Players[Player_num].flags &= (~KEY_GOLD);
|
||||||
|
|
||||||
Players[Player_num].flags &= ~(PLAYER_FLAGS_INVULNERABLE |
|
Players[Player_num].flags &= ~(PLAYER_FLAGS_INVULNERABLE | PLAYER_FLAGS_CLOAKED);
|
||||||
PLAYER_FLAGS_CLOAKED |
|
Players[Player_num].flags &= ~(PLAYER_FLAGS_MAP_ALL);
|
||||||
PLAYER_FLAGS_MAP_ALL);
|
|
||||||
|
|
||||||
Players[Player_num].cloak_time = 0;
|
Players[Player_num].cloak_time = 0;
|
||||||
Players[Player_num].invulnerable_time = 0;
|
Players[Player_num].invulnerable_time = 0;
|
||||||
|
@ -358,16 +355,16 @@ void init_player_stats_new_ship(ubyte pnum)
|
||||||
}
|
}
|
||||||
Primary_weapon = 0;
|
Primary_weapon = 0;
|
||||||
Secondary_weapon = 0;
|
Secondary_weapon = 0;
|
||||||
for (i=0; i<MAX_PRIMARY_WEAPONS; i++)
|
|
||||||
Primary_last_was_super[i] = 0;
|
|
||||||
for (i=1; i<MAX_SECONDARY_WEAPONS; i++)
|
|
||||||
Secondary_last_was_super[i] = 0;
|
|
||||||
dead_player_end(); //player no longer dead
|
dead_player_end(); //player no longer dead
|
||||||
Player_is_dead = 0;
|
Player_is_dead = 0;
|
||||||
Player_exploded = 0;
|
Player_exploded = 0;
|
||||||
Player_eggs_dropped = 0;
|
Player_eggs_dropped = 0;
|
||||||
Dead_player_camera = 0;
|
Dead_player_camera = 0;
|
||||||
Global_laser_firing_count=0;
|
Global_laser_firing_count=0;
|
||||||
|
for (i=0; i<MAX_PRIMARY_WEAPONS; i++)
|
||||||
|
Primary_last_was_super[i] = 0;
|
||||||
|
for (i=1; i<MAX_SECONDARY_WEAPONS; i++)
|
||||||
|
Secondary_last_was_super[i] = 0;
|
||||||
Afterburner_charge = 0;
|
Afterburner_charge = 0;
|
||||||
Controls.afterburner_state = 0;
|
Controls.afterburner_state = 0;
|
||||||
Last_afterburner_state = 0;
|
Last_afterburner_state = 0;
|
||||||
|
@ -387,7 +384,8 @@ void init_player_stats_new_ship(ubyte pnum)
|
||||||
Players[pnum].secondary_ammo[0] = 2 + NDL - Difficulty_level;
|
Players[pnum].secondary_ammo[0] = 2 + NDL - Difficulty_level;
|
||||||
Players[pnum].primary_weapon_flags = HAS_LASER_FLAG;
|
Players[pnum].primary_weapon_flags = HAS_LASER_FLAG;
|
||||||
Players[pnum].secondary_weapon_flags = HAS_CONCUSSION_FLAG;
|
Players[pnum].secondary_weapon_flags = HAS_CONCUSSION_FLAG;
|
||||||
Players[pnum].flags &= ~( PLAYER_FLAGS_QUAD_LASERS | PLAYER_FLAGS_AFTERBURNER | PLAYER_FLAGS_CLOAKED | PLAYER_FLAGS_INVULNERABLE | PLAYER_FLAGS_MAP_ALL | PLAYER_FLAGS_CONVERTER | PLAYER_FLAGS_AMMO_RACK | PLAYER_FLAGS_HEADLIGHT | PLAYER_FLAGS_HEADLIGHT_ON | PLAYER_FLAGS_FLAG);
|
Players[pnum].flags &= ~(PLAYER_FLAGS_QUAD_LASERS | PLAYER_FLAGS_CLOAKED | PLAYER_FLAGS_INVULNERABLE);
|
||||||
|
Players[pnum].flags &= ~(PLAYER_FLAGS_AFTERBURNER | PLAYER_FLAGS_MAP_ALL | PLAYER_FLAGS_CONVERTER | PLAYER_FLAGS_AMMO_RACK | PLAYER_FLAGS_HEADLIGHT | PLAYER_FLAGS_HEADLIGHT_ON | PLAYER_FLAGS_FLAG);
|
||||||
Players[pnum].cloak_time = 0;
|
Players[pnum].cloak_time = 0;
|
||||||
Players[pnum].invulnerable_time = 0;
|
Players[pnum].invulnerable_time = 0;
|
||||||
Players[pnum].homing_object_dist = -F1_0; // Added by RH
|
Players[pnum].homing_object_dist = -F1_0; // Added by RH
|
||||||
|
@ -402,7 +400,7 @@ void editor_reset_stuff_on_level()
|
||||||
init_player_stats_level(0);
|
init_player_stats_level(0);
|
||||||
Viewer = ConsoleObject;
|
Viewer = ConsoleObject;
|
||||||
ConsoleObject = Viewer = &Objects[Players[Player_num].objnum];
|
ConsoleObject = Viewer = &Objects[Players[Player_num].objnum];
|
||||||
ConsoleObject->id=Player_num;
|
set_player_id(ConsoleObject, Player_num);
|
||||||
ConsoleObject->control_type = CT_FLYING;
|
ConsoleObject->control_type = CT_FLYING;
|
||||||
ConsoleObject->movement_type = MT_PHYSICS;
|
ConsoleObject->movement_type = MT_PHYSICS;
|
||||||
Game_suspended = 0;
|
Game_suspended = 0;
|
||||||
|
@ -431,8 +429,6 @@ void editor_reset_stuff_on_level()
|
||||||
|
|
||||||
static void DoGameOver()
|
static void DoGameOver()
|
||||||
{
|
{
|
||||||
// nm_messagebox( TXT_GAME_OVER, 1, TXT_OK, "" );
|
|
||||||
|
|
||||||
if (PLAYING_BUILTIN_MISSION)
|
if (PLAYING_BUILTIN_MISSION)
|
||||||
scores_maybe_add_player(0);
|
scores_maybe_add_player(0);
|
||||||
|
|
||||||
|
@ -540,6 +536,15 @@ void create_player_appearance_effect(object *player_obj)
|
||||||
// New Game sequencing functions
|
// New Game sequencing functions
|
||||||
//
|
//
|
||||||
|
|
||||||
|
//get level filename. level numbers start at 1. Secret levels are -1,-2,-3
|
||||||
|
static char *get_level_file(int level_num)
|
||||||
|
{
|
||||||
|
if (level_num<0) //secret level
|
||||||
|
return Secret_level_names[-level_num-1];
|
||||||
|
else //normal level
|
||||||
|
return Level_names[level_num-1];
|
||||||
|
}
|
||||||
|
|
||||||
// routine to calculate the checksum of the segments.
|
// routine to calculate the checksum of the segments.
|
||||||
static void do_checksum_calc(ubyte *b, int len, unsigned int *s1, unsigned int *s2)
|
static void do_checksum_calc(ubyte *b, int len, unsigned int *s1, unsigned int *s2)
|
||||||
{
|
{
|
||||||
|
@ -594,8 +599,8 @@ static ushort netmisc_calc_checksum()
|
||||||
s = INTEL_SHORT(Segments[i].verts[j]);
|
s = INTEL_SHORT(Segments[i].verts[j]);
|
||||||
do_checksum_calc((ubyte *)&s, 2, &sum1, &sum2);
|
do_checksum_calc((ubyte *)&s, 2, &sum1, &sum2);
|
||||||
}
|
}
|
||||||
t = INTEL_INT(Segments[i].objects);
|
s = INTEL_SHORT(Segments[i].objects);
|
||||||
do_checksum_calc((ubyte *)&t, 4, &sum1, &sum2);
|
do_checksum_calc((ubyte *)&s, 2, &sum1, &sum2);
|
||||||
}
|
}
|
||||||
sum2 %= 255;
|
sum2 %= 255;
|
||||||
return ((sum1<<8)+ sum2);
|
return ((sum1<<8)+ sum2);
|
||||||
|
@ -608,10 +613,7 @@ void load_level_robots(int level_num)
|
||||||
|
|
||||||
Assert(level_num <= Last_level && level_num >= Last_secret_level && level_num != 0);
|
Assert(level_num <= Last_level && level_num >= Last_secret_level && level_num != 0);
|
||||||
|
|
||||||
if (level_num<0) //secret level
|
level_name = get_level_file(level_num);
|
||||||
level_name = Secret_level_names[-level_num-1];
|
|
||||||
else //normal level
|
|
||||||
level_name = Level_names[level_num-1];
|
|
||||||
|
|
||||||
if (Robot_replacements_loaded) {
|
if (Robot_replacements_loaded) {
|
||||||
free_polygon_models();
|
free_polygon_models();
|
||||||
|
@ -626,21 +628,17 @@ void LoadLevel(int level_num,int page_in_textures)
|
||||||
{
|
{
|
||||||
char *level_name;
|
char *level_name;
|
||||||
player save_player;
|
player save_player;
|
||||||
int load_ret;
|
|
||||||
|
|
||||||
save_player = Players[Player_num];
|
save_player = Players[Player_num];
|
||||||
|
|
||||||
Assert(level_num <= Last_level && level_num >= Last_secret_level && level_num != 0);
|
Assert(level_num <= Last_level && level_num >= Last_secret_level && level_num != 0);
|
||||||
|
|
||||||
if (level_num<0) //secret level
|
level_name = get_level_file(level_num);
|
||||||
level_name = Secret_level_names[-level_num-1];
|
|
||||||
else //normal level
|
|
||||||
level_name = Level_names[level_num-1];
|
|
||||||
|
|
||||||
gr_set_current_canvas(NULL);
|
gr_set_current_canvas(NULL);
|
||||||
gr_clear_canvas(BM_XRGB(0, 0, 0)); //so palette switching is less obvious
|
gr_clear_canvas(BM_XRGB(0, 0, 0)); //so palette switching is less obvious
|
||||||
|
|
||||||
load_ret = load_level(level_name); //actually load the data from disk!
|
int load_ret = load_level(level_name); //actually load the data from disk!
|
||||||
|
|
||||||
if (load_ret)
|
if (load_ret)
|
||||||
Error("Couldn't load level file <%s>, error = %d",level_name,load_ret);
|
Error("Couldn't load level file <%s>, error = %d",level_name,load_ret);
|
||||||
|
@ -677,8 +675,6 @@ void LoadLevel(int level_num,int page_in_textures)
|
||||||
songs_play_level_song( Current_level_num, 0 );
|
songs_play_level_song( Current_level_num, 0 );
|
||||||
|
|
||||||
gr_palette_load(gr_palette); //actually load the palette
|
gr_palette_load(gr_palette); //actually load the palette
|
||||||
|
|
||||||
// WIN(HideCursorW());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//sets up Player_num & ConsoleObject
|
//sets up Player_num & ConsoleObject
|
||||||
|
@ -696,7 +692,7 @@ void InitPlayerObject()
|
||||||
ConsoleObject = &Objects[Players[Player_num].objnum];
|
ConsoleObject = &Objects[Players[Player_num].objnum];
|
||||||
|
|
||||||
ConsoleObject->type = OBJ_PLAYER;
|
ConsoleObject->type = OBJ_PLAYER;
|
||||||
ConsoleObject->id = Player_num;
|
set_player_id(ConsoleObject, Player_num);
|
||||||
ConsoleObject->control_type = CT_FLYING;
|
ConsoleObject->control_type = CT_FLYING;
|
||||||
ConsoleObject->movement_type = MT_PHYSICS;
|
ConsoleObject->movement_type = MT_PHYSICS;
|
||||||
}
|
}
|
||||||
|
@ -738,9 +734,9 @@ void DoEndLevelScoreGlitz(int network)
|
||||||
int endgame_points;
|
int endgame_points;
|
||||||
char all_hostage_text[64];
|
char all_hostage_text[64];
|
||||||
char endgame_text[64];
|
char endgame_text[64];
|
||||||
#define N_GLITZITEMS 11
|
#define N_GLITZITEMS 9
|
||||||
char m_str[N_GLITZITEMS][30];
|
char m_str[N_GLITZITEMS][30];
|
||||||
newmenu_item m[N_GLITZITEMS+1];
|
newmenu_item m[N_GLITZITEMS];
|
||||||
int i,c;
|
int i,c;
|
||||||
char title[128];
|
char title[128];
|
||||||
int is_last_level;
|
int is_last_level;
|
||||||
|
@ -760,9 +756,9 @@ void DoEndLevelScoreGlitz(int network)
|
||||||
} else
|
} else
|
||||||
skill_points = 0;
|
skill_points = 0;
|
||||||
|
|
||||||
|
hostage_points = Players[Player_num].hostages_on_board * 500 * (Difficulty_level+1);
|
||||||
shield_points = f2i(Players[Player_num].shields) * 5 * mine_level;
|
shield_points = f2i(Players[Player_num].shields) * 5 * mine_level;
|
||||||
energy_points = f2i(Players[Player_num].energy) * 2 * mine_level;
|
energy_points = f2i(Players[Player_num].energy) * 2 * mine_level;
|
||||||
hostage_points = Players[Player_num].hostages_on_board * 500 * (Difficulty_level+1);
|
|
||||||
|
|
||||||
shield_points -= shield_points % 50;
|
shield_points -= shield_points % 50;
|
||||||
energy_points -= energy_points % 50;
|
energy_points -= energy_points % 50;
|
||||||
|
@ -816,10 +812,10 @@ void DoEndLevelScoreGlitz(int network)
|
||||||
Assert(c <= N_GLITZITEMS);
|
Assert(c <= N_GLITZITEMS);
|
||||||
|
|
||||||
if ( network && (Game_mode & GM_NETWORK) )
|
if ( network && (Game_mode & GM_NETWORK) )
|
||||||
newmenu_do2(NULL, title, c, m, multi_endlevel_poll1, NULL, 0, STARS_BACKGROUND);
|
newmenu_do2(NULL, title, c, m, multi_endlevel_poll1, NULL, 0, GLITZ_BACKGROUND);
|
||||||
else
|
else
|
||||||
// NOTE LINK TO ABOVE!!!
|
// NOTE LINK TO ABOVE!!!
|
||||||
newmenu_do2(NULL, title, c, m, NULL, NULL, 0, STARS_BACKGROUND);
|
newmenu_do2(NULL, title, c, m, NULL, NULL, 0, GLITZ_BACKGROUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------------------------------
|
||||||
|
@ -868,7 +864,7 @@ int p_secret_level_destroyed(void)
|
||||||
#define TXT_SECRET_RETURN "Returning to level %i", Entered_from_level
|
#define TXT_SECRET_RETURN "Returning to level %i", Entered_from_level
|
||||||
#define TXT_SECRET_ADVANCE "Base level destroyed.\nAdvancing to level %i", Entered_from_level+1
|
#define TXT_SECRET_ADVANCE "Base level destroyed.\nAdvancing to level %i", Entered_from_level+1
|
||||||
|
|
||||||
static int draw_stars_bg(newmenu *menu, d_event *event, grs_bitmap *background)
|
static int draw_endlevel_background(newmenu *menu, d_event *event, grs_bitmap *background)
|
||||||
{
|
{
|
||||||
menu = menu;
|
menu = menu;
|
||||||
|
|
||||||
|
@ -897,7 +893,7 @@ static void do_screen_message(const char *fmt, ...)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gr_init_bitmap_data(&background);
|
gr_init_bitmap_data(&background);
|
||||||
if (pcx_read_bitmap(STARS_BACKGROUND, &background, BM_LINEAR, gr_palette) != PCX_ERROR_NONE)
|
if (pcx_read_bitmap(GLITZ_BACKGROUND, &background, BM_LINEAR, gr_palette) != PCX_ERROR_NONE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gr_palette_load(gr_palette);
|
gr_palette_load(gr_palette);
|
||||||
|
@ -906,7 +902,7 @@ static void do_screen_message(const char *fmt, ...)
|
||||||
vsnprintf(msg, sizeof(msg), fmt, arglist);
|
vsnprintf(msg, sizeof(msg), fmt, arglist);
|
||||||
va_end(arglist);
|
va_end(arglist);
|
||||||
|
|
||||||
nm_messagebox1(NULL, (int (*)(newmenu *, d_event *, void *))draw_stars_bg, &background, 1, TXT_OK, msg);
|
nm_messagebox1(NULL, (int (*)(newmenu *, d_event *, void *))draw_endlevel_background, &background, 1, TXT_OK, msg);
|
||||||
gr_free_bitmap_data(&background);
|
gr_free_bitmap_data(&background);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1121,14 +1117,14 @@ void EnterSecretLevel(void)
|
||||||
//called when the player has finished a level
|
//called when the player has finished a level
|
||||||
void PlayerFinishedLevel(int secret_flag)
|
void PlayerFinishedLevel(int secret_flag)
|
||||||
{
|
{
|
||||||
Assert(!secret_flag);
|
|
||||||
|
|
||||||
if (Game_wind)
|
if (Game_wind)
|
||||||
window_set_visible(Game_wind, 0);
|
window_set_visible(Game_wind, 0);
|
||||||
|
|
||||||
//credit the player for hostages
|
//credit the player for hostages
|
||||||
Players[Player_num].hostages_rescued_total += Players[Player_num].hostages_on_board;
|
Players[Player_num].hostages_rescued_total += Players[Player_num].hostages_on_board;
|
||||||
|
|
||||||
|
Assert(!secret_flag);
|
||||||
|
|
||||||
if (Game_mode & GM_NETWORK)
|
if (Game_mode & GM_NETWORK)
|
||||||
Players[Player_num].connected = CONNECT_WAITING; // Finished but did not die
|
Players[Player_num].connected = CONNECT_WAITING; // Finished but did not die
|
||||||
|
|
||||||
|
@ -1141,17 +1137,9 @@ void PlayerFinishedLevel(int secret_flag)
|
||||||
reset_time();
|
reset_time();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(D2_OEM) || defined(COMPILATION)
|
|
||||||
#define MOVIE_REQUIRED 0
|
|
||||||
#else
|
|
||||||
#define MOVIE_REQUIRED 1
|
#define MOVIE_REQUIRED 1
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef D2_OEM
|
|
||||||
#define ENDMOVIE "endo"
|
|
||||||
#else
|
|
||||||
#define ENDMOVIE "end"
|
#define ENDMOVIE "end"
|
||||||
#endif
|
|
||||||
|
|
||||||
//called when the player has finished the last level
|
//called when the player has finished the last level
|
||||||
static void DoEndGame(void)
|
static void DoEndGame(void)
|
||||||
|
@ -1210,8 +1198,6 @@ static void DoEndGame(void)
|
||||||
// Return true if game over.
|
// Return true if game over.
|
||||||
static void AdvanceLevel(int secret_flag)
|
static void AdvanceLevel(int secret_flag)
|
||||||
{
|
{
|
||||||
int result;
|
|
||||||
|
|
||||||
Assert(!secret_flag);
|
Assert(!secret_flag);
|
||||||
|
|
||||||
if (Current_level_num != Last_level) {
|
if (Current_level_num != Last_level) {
|
||||||
|
@ -1232,6 +1218,7 @@ static void AdvanceLevel(int secret_flag)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (Game_mode & GM_MULTI) {
|
if (Game_mode & GM_MULTI) {
|
||||||
|
int result;
|
||||||
result = multi_endlevel(&secret_flag); // Wait for other players to reach this point
|
result = multi_endlevel(&secret_flag); // Wait for other players to reach this point
|
||||||
if (result) // failed to sync
|
if (result) // failed to sync
|
||||||
{
|
{
|
||||||
|
@ -1253,7 +1240,7 @@ static void AdvanceLevel(int secret_flag)
|
||||||
if (Current_level_num < 0 && EMULATING_D1)
|
if (Current_level_num < 0 && EMULATING_D1)
|
||||||
{
|
{
|
||||||
Next_level_num = Entered_from_level+1; //assume go to next normal level
|
Next_level_num = Entered_from_level+1; //assume go to next normal level
|
||||||
} else {
|
} else {
|
||||||
Next_level_num = Current_level_num+1; //assume go to next normal level
|
Next_level_num = Current_level_num+1; //assume go to next normal level
|
||||||
}
|
}
|
||||||
// END NMN
|
// END NMN
|
||||||
|
@ -1438,10 +1425,10 @@ void StartNewLevelSub(int level_num, int page_in_textures, int secret_flag)
|
||||||
init_cockpit();
|
init_cockpit();
|
||||||
init_robots_for_level();
|
init_robots_for_level();
|
||||||
init_ai_objects();
|
init_ai_objects();
|
||||||
init_smega_detonates();
|
|
||||||
init_morphs();
|
init_morphs();
|
||||||
init_all_matcens();
|
init_all_matcens();
|
||||||
reset_palette_add();
|
reset_palette_add();
|
||||||
|
init_smega_detonates();
|
||||||
init_thief_for_level();
|
init_thief_for_level();
|
||||||
init_stuck_objects();
|
init_stuck_objects();
|
||||||
if (!(Game_mode & GM_MULTI))
|
if (!(Game_mode & GM_MULTI))
|
||||||
|
@ -1485,12 +1472,12 @@ void StartNewLevelSub(int level_num, int page_in_textures, int secret_flag)
|
||||||
|
|
||||||
void bash_to_shield (int i,const char *s)
|
void bash_to_shield (int i,const char *s)
|
||||||
{
|
{
|
||||||
int type=Objects[i].id;
|
enum powerup_type_t type = get_powerup_id(&Objects[i]);
|
||||||
|
|
||||||
PowerupsInMine[type]=MaxPowerupsAllowed[type]=0;
|
PowerupsInMine[type]=MaxPowerupsAllowed[type]=0;
|
||||||
|
|
||||||
Objects[i].id = POW_SHIELD_BOOST;
|
set_powerup_id(&Objects[i], POW_SHIELD_BOOST);
|
||||||
Objects[i].rtype.vclip_info.vclip_num = Powerup_info[Objects[i].id].vclip_num;
|
Objects[i].rtype.vclip_info.vclip_num = Powerup_info[get_powerup_id(&Objects[i])].vclip_num;
|
||||||
Objects[i].rtype.vclip_info.frametime = Vclip[Objects[i].rtype.vclip_info.vclip_num].frame_time;
|
Objects[i].rtype.vclip_info.frametime = Vclip[Objects[i].rtype.vclip_info.vclip_num].frame_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1658,7 +1645,7 @@ void copy_defaults_to_robot(object *objp)
|
||||||
int objid;
|
int objid;
|
||||||
|
|
||||||
Assert(objp->type == OBJ_ROBOT);
|
Assert(objp->type == OBJ_ROBOT);
|
||||||
objid = objp->id;
|
objid = get_robot_id(objp);
|
||||||
Assert(objid < N_robot_types);
|
Assert(objid < N_robot_types);
|
||||||
|
|
||||||
robptr = &Robot_info[objid];
|
robptr = &Robot_info[objid];
|
||||||
|
@ -1690,14 +1677,13 @@ void copy_defaults_to_robot(object *objp)
|
||||||
// Copy all values from the robot info structure to all instances of robots.
|
// Copy all values from the robot info structure to all instances of robots.
|
||||||
// This allows us to change bitmaps.tbl and have these changes manifested in existing robots.
|
// This allows us to change bitmaps.tbl and have these changes manifested in existing robots.
|
||||||
// This function should be called at level load time.
|
// This function should be called at level load time.
|
||||||
void copy_defaults_to_robot_all()
|
static void copy_defaults_to_robot_all(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i=0; i<=Highest_object_index; i++)
|
for (i=0; i<=Highest_object_index; i++)
|
||||||
if (Objects[i].type == OBJ_ROBOT)
|
if (Objects[i].type == OBJ_ROBOT)
|
||||||
copy_defaults_to_robot(&Objects[i]);
|
copy_defaults_to_robot(&Objects[i]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in a new issue