Use range_for for Delta_lights
This commit is contained in:
parent
80bbc9c69c
commit
80f3f83577
|
@ -343,8 +343,8 @@ struct delta_light {
|
|||
struct dl_index {
|
||||
segnum_t segnum;
|
||||
sbyte sidenum;
|
||||
sbyte count;
|
||||
short index;
|
||||
uint8_t count;
|
||||
uint16_t index;
|
||||
};
|
||||
|
||||
#define MAX_DL_INDICES 500
|
||||
|
@ -353,7 +353,7 @@ struct dl_index {
|
|||
#define DL_SCALE 2048 // Divide light to allow 3 bits integer, 5 bits fraction.
|
||||
|
||||
extern array<dl_index, MAX_DL_INDICES> Dl_indices;
|
||||
extern delta_light Delta_lights[MAX_DELTA_LIGHTS];
|
||||
extern array<delta_light, MAX_DELTA_LIGHTS> Delta_lights;
|
||||
extern unsigned Num_static_lights;
|
||||
|
||||
int subtract_light(segnum_t segnum, int sidenum);
|
||||
|
|
|
@ -801,7 +801,6 @@ static int load_game_data(PHYSFS_file *LoadFile)
|
|||
short game_top_fileinfo_version;
|
||||
int object_offset;
|
||||
int gs_num_objects;
|
||||
int num_delta_lights;
|
||||
int trig_size;
|
||||
|
||||
//===================== READ FILE INFO ========================
|
||||
|
@ -837,8 +836,8 @@ static int load_game_data(PHYSFS_file *LoadFile)
|
|||
PHYSFSX_fseek(LoadFile, 4, SEEK_CUR);
|
||||
|
||||
#if defined(DXX_BUILD_DESCENT_I)
|
||||
(void)num_delta_lights;
|
||||
#elif defined(DXX_BUILD_DESCENT_II)
|
||||
unsigned num_delta_lights;
|
||||
if (game_top_fileinfo_version >= 29) {
|
||||
PHYSFSX_fseek(LoadFile, 4, SEEK_CUR);
|
||||
Num_static_lights = PHYSFSX_readInt(LoadFile);
|
||||
|
@ -1011,11 +1010,12 @@ static int load_game_data(PHYSFS_file *LoadFile)
|
|||
|
||||
//================ READ DELTA LIGHT INFO ===============
|
||||
|
||||
for (int i = 0; i < num_delta_lights; i++) {
|
||||
if (game_top_fileinfo_version < 29) {
|
||||
;
|
||||
} else
|
||||
delta_light_read(&Delta_lights[i], LoadFile);
|
||||
{
|
||||
range_for (auto &i, partial_range(Delta_lights, num_delta_lights))
|
||||
delta_light_read(&i, LoadFile);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1531,7 +1531,6 @@ static int save_game_data(PHYSFS_file *SaveFile)
|
|||
#elif defined(DXX_BUILD_DESCENT_II)
|
||||
short game_top_fileinfo_version = Gamesave_current_version >= 5 ? 31 : 25;
|
||||
int dl_indices_offset=0, delta_light_offset=0;
|
||||
int num_delta_lights=0;
|
||||
#endif
|
||||
int player_offset=0, object_offset=0, walls_offset=0, doors_offset=0, triggers_offset=0, control_offset=0, matcen_offset=0; //, links_offset;
|
||||
int offset_offset=0, end_offset=0;
|
||||
|
@ -1557,6 +1556,7 @@ static int save_game_data(PHYSFS_file *SaveFile)
|
|||
WRITE_HEADER_ENTRY(matcen_info, Num_robot_centers);
|
||||
|
||||
#if defined(DXX_BUILD_DESCENT_II)
|
||||
unsigned num_delta_lights = 0;
|
||||
if (game_top_fileinfo_version >= 29)
|
||||
{
|
||||
WRITE_HEADER_ENTRY(dl_index, Num_static_lights);
|
||||
|
@ -1628,8 +1628,8 @@ static int save_game_data(PHYSFS_file *SaveFile)
|
|||
dl_index_write(&i, SaveFile);
|
||||
|
||||
delta_light_offset = PHYSFS_tell(SaveFile);
|
||||
for (int i = 0; i < num_delta_lights; i++)
|
||||
delta_light_write(&Delta_lights[i], SaveFile);
|
||||
range_for (auto &i, partial_range(Delta_lights, num_delta_lights))
|
||||
delta_light_write(&i, SaveFile);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ using std::min;
|
|||
|
||||
#if defined(DXX_BUILD_DESCENT_II)
|
||||
array<dl_index, MAX_DL_INDICES> Dl_indices;
|
||||
delta_light Delta_lights[MAX_DELTA_LIGHTS];
|
||||
array<delta_light, MAX_DELTA_LIGHTS> Delta_lights;
|
||||
unsigned Num_static_lights;
|
||||
#endif
|
||||
|
||||
|
@ -1691,18 +1691,17 @@ static void change_light(segnum_t segnum, int sidenum, int dir)
|
|||
range_for (auto &i, partial_range(Dl_indices, Num_static_lights))
|
||||
if (i.segnum == segnum && i.sidenum == sidenum)
|
||||
{
|
||||
auto dlp = &Delta_lights[i.index];
|
||||
for (int j=0; j < i.count; j++) {
|
||||
range_for (auto &j, partial_range(Delta_lights, static_cast<uint_fast32_t>(i.index), static_cast<uint_fast32_t>(i.count)))
|
||||
{
|
||||
for (int k=0; k<4; k++) {
|
||||
fix dl,new_l;
|
||||
dl = dir * dlp->vert_light[k] * DL_SCALE;
|
||||
Assert((dlp->segnum >= 0) && (dlp->segnum <= Highest_segment_index));
|
||||
Assert((dlp->sidenum >= 0) && (dlp->sidenum < MAX_SIDES_PER_SEGMENT));
|
||||
new_l = (Segments[dlp->segnum].sides[dlp->sidenum].uvls[k].l += dl);
|
||||
dl = dir * j.vert_light[k] * DL_SCALE;
|
||||
Assert(j.segnum >= 0 && j.segnum <= Highest_segment_index);
|
||||
Assert(j.sidenum >= 0 && j.sidenum < MAX_SIDES_PER_SEGMENT);
|
||||
new_l = (Segments[j.segnum].sides[j.sidenum].uvls[k].l += dl);
|
||||
if (new_l < 0)
|
||||
Segments[dlp->segnum].sides[dlp->sidenum].uvls[k].l = 0;
|
||||
Segments[j.segnum].sides[j.sidenum].uvls[k].l = 0;
|
||||
}
|
||||
dlp++;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue