Use array<> for Triggers

This commit is contained in:
Kp 2014-02-09 18:09:54 +00:00
parent cb498b3b38
commit 8cc3e2c9e9
4 changed files with 14 additions and 16 deletions

View file

@ -129,9 +129,8 @@ struct trigger
array<short, MAX_WALLS_PER_LINK> side;
} __pack__;
extern trigger Triggers[MAX_TRIGGERS];
extern int Num_triggers;
extern unsigned Num_triggers;
extern array<trigger, MAX_TRIGGERS> Triggers;
extern void trigger_init();
extern void check_trigger(segment *seg, short side, short objnum,int shot);
@ -179,7 +178,7 @@ void v30_trigger_read_as_v31(PHYSFS_File *fp, trigger &t);
/*
* reads n trigger structs from a PHYSFS_file and swaps if specified
*/
extern void trigger_read_n_swap(trigger *t, int n, int swap, PHYSFS_file *fp);
void trigger_read_swap(PHYSFS_file *fp, trigger &t, int swap);
extern void trigger_write(trigger *t, short version, PHYSFS_file *fp);

View file

@ -1640,8 +1640,8 @@ static int save_game_data(PHYSFS_file *SaveFile)
//==================== SAVE TRIGGER INFO =============================
triggers_offset = PHYSFS_tell(SaveFile);
for (i = 0; i < Num_triggers; i++)
trigger_write(&Triggers[i], game_top_fileinfo_version, SaveFile);
range_for (auto &t, partial_range(Triggers, Num_triggers))
trigger_write(t, game_top_fileinfo_version, SaveFile);
//================ SAVE CONTROL CENTER TRIGGER INFO ===============

View file

@ -1187,7 +1187,8 @@ int state_save_all_sub(const char *filename, const char *desc)
//Save trigger info
PHYSFS_write(fp, &Num_triggers, sizeof(int), 1);
PHYSFS_write(fp, Triggers, sizeof(trigger), Num_triggers);
range_for (auto &t, partial_range(Triggers, Num_triggers))
PHYSFS_write(fp, &t, sizeof(t), 1);
//Save tmap info
for (i = 0; i <= Highest_segment_index; i++)
@ -1663,7 +1664,8 @@ int state_restore_all_sub(const char *filename, int secret_restore)
//Restore trigger info
Num_triggers = PHYSFSX_readSXE32(fp, swap);
trigger_read_n_swap(Triggers, Num_triggers, swap, fp);
range_for (auto &t, partial_range(Triggers, Num_triggers))
trigger_read_swap(fp, t, swap);
//Restore tmap info (to temp values so we can use compiled-in tmap info to compute static_light
for (i=0; i<=Highest_segment_index; i++ ) {

View file

@ -54,8 +54,8 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "editor/editor.h"
#endif
trigger Triggers[MAX_TRIGGERS];
int Num_triggers;
unsigned Num_triggers;
array<trigger, MAX_TRIGGERS> Triggers;
#ifdef EDITOR
fix trigger_time_count=F1_0;
@ -798,15 +798,12 @@ static void trigger_swap(trigger *t, int swap)
/*
* reads n trigger structs from a PHYSFS_file and swaps if specified
*/
void trigger_read_n_swap(trigger *t, int n, int swap, PHYSFS_file *fp)
void trigger_read_swap(PHYSFS_file *fp, trigger &t, int swap)
{
int i;
PHYSFS_read(fp, t, sizeof(trigger), n);
PHYSFS_read(fp, &t, sizeof(t), 1);
if (swap)
for (i = 0; i < n; i++)
trigger_swap(&t[i], swap);
trigger_swap(&t, swap);
}
void trigger_write(trigger *t, short version, PHYSFS_file *fp)