Generate unique starfield per level
This commit is contained in:
parent
7bcbaae230
commit
fec16daca4
|
@ -26,11 +26,22 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
#include <array>
|
||||
#include "vecmat.h"
|
||||
#include "fwd-segment.h"
|
||||
#include "gr.h"
|
||||
#include "fwd-window.h"
|
||||
|
||||
namespace dcx {
|
||||
|
||||
struct d_unique_endlevel_state
|
||||
{
|
||||
using starfield_type = std::array<vms_vector, 500>;
|
||||
starfield_type stars;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
extern int Endlevel_sequence;
|
||||
#ifdef dsx
|
||||
namespace dsx {
|
||||
|
@ -47,7 +58,6 @@ void render_endlevel_frame(grs_canvas &, fix eye_offset);
|
|||
|
||||
void draw_exit_model(grs_canvas &);
|
||||
void free_endlevel_data();
|
||||
void init_endlevel();
|
||||
|
||||
extern grs_bitmap *terrain_bitmap; //*satellite_bitmap,*station_bitmap,
|
||||
extern segnum_t exit_segnum;
|
||||
|
|
|
@ -148,7 +148,6 @@ int gamedata_init()
|
|||
int retval;
|
||||
|
||||
init_polygon_models();
|
||||
init_endlevel();//adb: added, is also in bm_init_use_tbl (Chris: *Was* in bm_init_use_tbl)
|
||||
retval = properties_init(); // This calls properties_read_cmp if appropriate
|
||||
if (retval)
|
||||
gamedata_read_tbl(Vclip, retval == PIGGY_PC_SHAREWARE);
|
||||
|
@ -278,7 +277,6 @@ static void tmap_info_read(tmap_info &ti, PHYSFS_File *fp)
|
|||
int gamedata_init()
|
||||
{
|
||||
init_polygon_models();
|
||||
init_endlevel();
|
||||
|
||||
#if DXX_USE_EDITOR
|
||||
// The pc_shareware argument is currently unused for Descent 2,
|
||||
|
|
|
@ -106,6 +106,8 @@ struct flythrough_data
|
|||
|
||||
#define MAX_FLY_OBJECTS 2
|
||||
|
||||
d_unique_endlevel_state UniqueEndlevelState;
|
||||
|
||||
}
|
||||
|
||||
static array<flythrough_data, MAX_FLY_OBJECTS> fly_objects;
|
||||
|
@ -132,9 +134,9 @@ static object *endlevel_camera;
|
|||
#define FLY_SPEED i2f(50)
|
||||
|
||||
static void do_endlevel_flythrough(flythrough_data *flydata);
|
||||
static void draw_stars(grs_canvas &);
|
||||
static void draw_stars(grs_canvas &, const d_unique_endlevel_state::starfield_type &stars);
|
||||
static int find_exit_side(const object_base &obj);
|
||||
static void generate_starfield();
|
||||
static void generate_starfield(d_unique_endlevel_state::starfield_type &stars);
|
||||
static void start_endlevel_flythrough(flythrough_data *flydata,const vmobjptr_t obj,fix speed);
|
||||
|
||||
#if defined(DXX_BUILD_DESCENT_II)
|
||||
|
@ -236,23 +238,6 @@ void free_endlevel_data()
|
|||
free_height_array();
|
||||
}
|
||||
|
||||
void init_endlevel()
|
||||
{
|
||||
//##satellite_bitmap = bm_load("earth.bbm");
|
||||
//##terrain_bitmap = bm_load("moon.bbm");
|
||||
//##
|
||||
//##load_terrain("matt5b.bbm"); //load bitmap as height array
|
||||
//##//load_terrain("ttest2.bbm"); //load bitmap as height array
|
||||
|
||||
//!! exit_bitmap = bm_load("steel1.bbm");
|
||||
//!! exit_bitmap_list[0] = &exit_bitmap;
|
||||
|
||||
//!! exit_modelnum = load_polygon_model("exit01.pof",1,exit_bitmap_list,NULL);
|
||||
//!! destroyed_exit_modelnum = load_polygon_model("exit01d.pof",1,exit_bitmap_list,NULL);
|
||||
|
||||
generate_starfield();
|
||||
}
|
||||
|
||||
static object *external_explosion;
|
||||
static int ext_expl_playing,mine_destroyed;
|
||||
|
||||
|
@ -417,7 +402,7 @@ window_event_result start_endlevel_sequence()
|
|||
|
||||
flash_scale = f1_0;
|
||||
|
||||
//init_endlevel();
|
||||
generate_starfield(UniqueEndlevelState.stars);
|
||||
|
||||
mine_destroyed=0;
|
||||
|
||||
|
@ -930,7 +915,7 @@ static void render_external_scene(fvcobjptridx &vcobjptridx, grs_canvas &canvas,
|
|||
gr_clear_canvas(canvas, BM_XRGB(0,0,0));
|
||||
|
||||
g3_start_instance_matrix(vmd_zero_vector, surface_orient);
|
||||
draw_stars(canvas);
|
||||
draw_stars(canvas, UniqueEndlevelState.stars);
|
||||
g3_done_instance();
|
||||
|
||||
{ //draw satellite
|
||||
|
@ -989,9 +974,7 @@ static void render_external_scene(fvcobjptridx &vcobjptridx, grs_canvas &canvas,
|
|||
#endif
|
||||
}
|
||||
|
||||
static array<vms_vector, 500> stars;
|
||||
|
||||
static void generate_starfield()
|
||||
static void generate_starfield(d_unique_endlevel_state::starfield_type &stars)
|
||||
{
|
||||
range_for (auto &i, stars)
|
||||
{
|
||||
|
@ -1001,7 +984,7 @@ static void generate_starfield()
|
|||
}
|
||||
}
|
||||
|
||||
void draw_stars(grs_canvas &canvas)
|
||||
void draw_stars(grs_canvas &canvas, const d_unique_endlevel_state::starfield_type &stars)
|
||||
{
|
||||
int intensity=31;
|
||||
g3s_point p;
|
||||
|
|
Loading…
Reference in a new issue