Restructure endlevel.c for merging

This commit is contained in:
Kp 2013-10-06 16:20:00 +00:00
parent 4469ff36c0
commit 1c754aa55e
2 changed files with 55 additions and 83 deletions

View file

@ -102,16 +102,16 @@ object *endlevel_camera;
#define FLY_SPEED i2f(50)
#define FLY_ACCEL i2f(5)
fix cur_fly_speed,desired_fly_speed;
static void generate_starfield();
static void do_endlevel_flythrough(int n);
static void draw_stars();
static int find_exit_side(object *obj);
static void do_endlevel_flythrough(int n);
static void generate_starfield();
static void start_endlevel_flythrough(int n,object *obj,fix speed);
#define FLY_ACCEL i2f(5)
static fix cur_fly_speed,desired_fly_speed;
grs_bitmap *satellite_bitmap,*station_bitmap,*terrain_bitmap; //!!*exit_bitmap,
vms_vector satellite_pos,satellite_upvec;
//!!grs_bitmap **exit_bitmap_list[1];
@ -202,10 +202,6 @@ static int endlevel_data_loaded=0;
void start_endlevel_sequence()
{
#ifndef NDEBUG
int last_segnum;
#endif
int exit_side,tunnel_length;
reset_rear_view(); //turn off rear view if set - NOTE: make sure this happens before we pause demo recording!!
@ -230,6 +226,10 @@ void start_endlevel_sequence()
PlayerFinishedLevel(0); //don't do special sequence
return;
}
#ifndef NDEBUG
int last_segnum;
#endif
int exit_side,tunnel_length;
{
int segnum,old_segnum,entry_side,i;
@ -401,10 +401,10 @@ static void get_angs_to_object(vms_angvec *av,const vms_vector *targ_pos,vms_vec
void do_endlevel_frame()
{
static fix timer;
static fix bank_rate;
vms_vector save_last_pos;
static fix explosion_wait1=0;
static fix explosion_wait2=0;
static fix bank_rate;
static fix ext_expl_halflife;
save_last_pos = ConsoleObject->last_pos; //don't let move code change this
@ -506,8 +506,8 @@ void do_endlevel_frame()
//create little explosion on wall
vm_vec_copy_scale(&tpnt,&ConsoleObject->orient.rvec,(d_rand()-D_RAND_MAX/2)*100);
vm_vec_scale_add2(&tpnt,&ConsoleObject->orient.uvec,(d_rand()-D_RAND_MAX/2)*100);
vm_vec_copy_scale(&tpnt,&ConsoleObject->orient.rvec,(d_rand()-D_RAND_MAX/2)*100);
vm_vec_scale_add2(&tpnt,&ConsoleObject->orient.uvec,(d_rand()-D_RAND_MAX/2)*100);
vm_vec_add2(&tpnt,&ConsoleObject->pos);
if (Endlevel_sequence == EL_FLYTHROUGH)
@ -898,14 +898,14 @@ static void render_external_scene(fix eye_offset)
vms_vector stars[MAX_STARS];
void generate_starfield()
static void generate_starfield()
{
int i;
for (i=0;i<MAX_STARS;i++) {
stars[i].x = (d_rand() - D_RAND_MAX/2) << 14;
stars[i].z = (d_rand() - D_RAND_MAX/2) << 14;
stars[i].x = (d_rand() - D_RAND_MAX/2) << 14;
stars[i].z = (d_rand() - D_RAND_MAX/2) << 14;
stars[i].y = (d_rand()/2) << 14;
}

View file

@ -114,11 +114,7 @@ static void draw_stars();
static int find_exit_side(object *obj);
static void generate_starfield();
static void start_endlevel_flythrough(int n,object *obj,fix speed);
static void start_rendered_endlevel_sequence();
#ifdef D2_OEM
static const char movie_table[] = { 'a','a','a','a','d','d','d','d' };
#else
static const char movie_table[] = { 'a','b','c',
'a',
'd','f','d','f',
@ -127,21 +123,17 @@ static const char movie_table[] = { 'a','b','c',
'm','o','m','o',
'p','q','p','q'
};
#endif
#define N_MOVIES (sizeof(movie_table) / sizeof(*movie_table))
#ifdef D2_OEM
static const char movie_table_secret[] = {'a','d'};
#else
static const char movie_table_secret[] = {'a','d','g','j','m','p'};
#endif
#define N_MOVIES_SECRET (sizeof(movie_table_secret) / sizeof(*movie_table_secret))
static int endlevel_movie_played = MOVIE_NOT_PLAYED;
#define FLY_ACCEL i2f(5)
fix cur_fly_speed,desired_fly_speed;
static fix cur_fly_speed,desired_fly_speed;
grs_bitmap *satellite_bitmap,*station_bitmap,*terrain_bitmap; //!!*exit_bitmap,
vms_vector satellite_pos,satellite_upvec;
@ -186,11 +178,7 @@ static int matt_find_connect_side(int seg0,int seg1)
return -1;
}
#if defined(D2_OEM) || defined(COMPILATION)
#define MOVIE_REQUIRED 0
#else
#define MOVIE_REQUIRED 1
#endif
//returns movie played status. see movie.h
static int start_endlevel_movie()
@ -229,14 +217,10 @@ static int start_endlevel_movie()
}
void
free_endlevel_data()
void free_endlevel_data()
{
if (terrain_bm_instance.bm_data)
d_free(terrain_bm_instance.bm_data);
if (satellite_bm_instance.bm_data)
d_free(satellite_bm_instance.bm_data);
gr_free_bitmap_data (&terrain_bm_instance);
gr_free_bitmap_data (&satellite_bm_instance);
free_light_table();
free_height_array();
@ -265,23 +249,21 @@ void init_endlevel()
generate_starfield();
terrain_bm_instance.bm_data = satellite_bm_instance.bm_data = NULL;
gr_init_bitmap_data (&terrain_bm_instance);
gr_init_bitmap_data (&satellite_bm_instance);
}
object external_explosion;
int ext_expl_playing,mine_destroyed;
vms_angvec exit_angles={-0xa00,0,0};
static vms_angvec exit_angles={-0xa00,0,0};
vms_matrix surface_orient;
int endlevel_data_loaded=0;
int endlevel_movie_played = MOVIE_NOT_PLAYED;
static int endlevel_data_loaded=0;
void start_endlevel_sequence()
{
int i;
reset_rear_view(); //turn off rear view if set - NOTE: make sure this happens before we pause demo recording!!
@ -303,7 +285,7 @@ void start_endlevel_sequence()
return; //don't start if dead!
// Dematerialize Buddy!
for (i=0; i<=Highest_object_index; i++)
for (int i=0; i<=Highest_object_index; i++)
if (Objects[i].type == OBJ_ROBOT)
if (Robot_info[get_robot_id(&Objects[i])].companion) {
object_create_explosion(Objects[i].segnum, &Objects[i].pos, F1_0*7/2, VCLIP_POWERUP_DISAPPEARANCE );
@ -317,36 +299,29 @@ void start_endlevel_sequence()
multi_do_protocol_frame(1, 1);
}
window_set_visible(Game_wind, 0); // suspend the game, including drawing
if (PLAYING_BUILTIN_MISSION) // only play movie for built-in mission
if (!(Game_mode & GM_MULTI))
endlevel_movie_played = start_endlevel_movie();
window_set_visible(Game_wind, 1);
if (!(Game_mode & GM_MULTI) && (endlevel_movie_played == MOVIE_NOT_PLAYED) && endlevel_data_loaded)
{ //don't have movie. Do rendered sequence, if available
int exit_models_loaded = 0;
if (Piggy_hamfile_version < 3)
exit_models_loaded = 1; // built-in for PC shareware
else
exit_models_loaded = load_exit_models();
if (exit_models_loaded)
{
start_rendered_endlevel_sequence();
return;
window_set_visible(Game_wind, 0); // suspend the game, including drawing
endlevel_movie_played = start_endlevel_movie();
window_set_visible(Game_wind, 1);
}
if (!(!(Game_mode & GM_MULTI) && (endlevel_movie_played == MOVIE_NOT_PLAYED) && endlevel_data_loaded))
{
PlayerFinishedLevel(0); //done with level
return;
}
int exit_models_loaded = 0;
PlayerFinishedLevel(0); //done with level
}
if (Piggy_hamfile_version < 3)
exit_models_loaded = 1; // built-in for PC shareware
void start_rendered_endlevel_sequence()
{
else
exit_models_loaded = load_exit_models();
if (!exit_models_loaded)
return;
#ifndef NDEBUG
int last_segnum;
#endif
@ -511,7 +486,7 @@ void stop_endlevel_sequence()
//--unused-- vms_vector upvec = {0,f1_0,0};
//find the angle between the player's heading & the station
static void get_angs_to_object(vms_angvec *av,vms_vector *targ_pos,vms_vector *cur_pos)
static void get_angs_to_object(vms_angvec *av,const vms_vector *targ_pos,vms_vector *cur_pos)
{
vms_vector tv;
@ -628,8 +603,8 @@ void do_endlevel_frame()
//create little explosion on wall
vm_vec_copy_scale(&tpnt,&ConsoleObject->orient.rvec,(d_rand()-RAND_MAX/2)*100);
vm_vec_scale_add2(&tpnt,&ConsoleObject->orient.uvec,(d_rand()-RAND_MAX/2)*100);
vm_vec_copy_scale(&tpnt,&ConsoleObject->orient.rvec,(d_rand()-D_RAND_MAX/2)*100);
vm_vec_scale_add2(&tpnt,&ConsoleObject->orient.uvec,(d_rand()-D_RAND_MAX/2)*100);
vm_vec_add2(&tpnt,&ConsoleObject->pos);
if (Endlevel_sequence == EL_FLYTHROUGH)
@ -667,7 +642,8 @@ void do_endlevel_frame()
if (PLAYING_BUILTIN_MISSION && endlevel_movie_played != MOVIE_NOT_PLAYED)
stop_endlevel_sequence();
else {
else
{
int objnum;
//songs_play_song( SONG_ENDLEVEL, 0 );
@ -942,7 +918,7 @@ void draw_exit_model()
int exit_point_bmx,exit_point_bmy;
fix satellite_size = i2f(400);
static fix satellite_size = i2f(400);
#define SATELLITE_DIST i2f(1024)
#define SATELLITE_WIDTH satellite_size
@ -1024,14 +1000,14 @@ static void render_external_scene(fix eye_offset)
vms_vector stars[MAX_STARS];
void generate_starfield()
static void generate_starfield()
{
int i;
for (i=0;i<MAX_STARS;i++) {
stars[i].x = (d_rand() - RAND_MAX/2) << 14;
stars[i].z = (d_rand() - RAND_MAX/2) << 14;
stars[i].x = (d_rand() - D_RAND_MAX/2) << 14;
stars[i].z = (d_rand() - D_RAND_MAX/2) << 14;
stars[i].y = (d_rand()/2) << 14;
}
@ -1129,7 +1105,7 @@ static void endlevel_render_mine(fix eye_offset)
else
g3_set_view_matrix(&Viewer_eye,&Viewer->orient,Render_zoom);
render_mine(start_seg_num,eye_offset, 0);
render_mine(start_seg_num,eye_offset,0);
}
void render_endlevel_frame(fix eye_offset)
@ -1451,7 +1427,7 @@ try_again:
if ((p=strchr(line,';'))!=NULL)
*p = 0; //cut off comment
for (p=line+strlen(line);p>line && isspace(*p);*p--=0);
for (p=line+strlen(line)-1;p>line && isspace(*p);*p--=0);
for (p=line;isspace(*p);p++);
if (!*p) //empty line
@ -1463,10 +1439,7 @@ try_again:
int iff_error;
ubyte pal[768];
if (terrain_bm_instance.bm_data)
d_free(terrain_bm_instance.bm_data);
Assert(terrain_bm_instance.bm_data == NULL);
gr_free_bitmap_data (&terrain_bm_instance);
iff_error = iff_read_bitmap(p,&terrain_bm_instance,BM_LINEAR,pal);
if (iff_error != IFF_NO_ERROR) {
@ -1504,8 +1477,7 @@ try_again:
int iff_error;
ubyte pal[768];
if (satellite_bm_instance.bm_data)
d_free(satellite_bm_instance.bm_data);
gr_free_bitmap_data (&satellite_bm_instance);
iff_error = iff_read_bitmap(p,&satellite_bm_instance,BM_LINEAR,pal);
if (iff_error != IFF_NO_ERROR) {