From 8cc3e2c9e9eb1d88e4bf7a3370e8c624b78319e2 Mon Sep 17 00:00:00 2001 From: Kp Date: Sun, 9 Feb 2014 18:09:54 +0000 Subject: [PATCH] Use array<> for Triggers --- common/main/switch.h | 7 +++---- similar/main/gamesave.cpp | 4 ++-- similar/main/state.cpp | 6 ++++-- similar/main/switch.cpp | 13 +++++-------- 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/common/main/switch.h b/common/main/switch.h index 2d3db1635..0951a7592 100644 --- a/common/main/switch.h +++ b/common/main/switch.h @@ -129,9 +129,8 @@ struct trigger array side; } __pack__; -extern trigger Triggers[MAX_TRIGGERS]; - -extern int Num_triggers; +extern unsigned Num_triggers; +extern array 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); diff --git a/similar/main/gamesave.cpp b/similar/main/gamesave.cpp index cc3151bf2..339346b50 100644 --- a/similar/main/gamesave.cpp +++ b/similar/main/gamesave.cpp @@ -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 =============== diff --git a/similar/main/state.cpp b/similar/main/state.cpp index b84b297cc..4aa348a70 100644 --- a/similar/main/state.cpp +++ b/similar/main/state.cpp @@ -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++ ) { diff --git a/similar/main/switch.cpp b/similar/main/switch.cpp index 4ae61a8bd..d26490c18 100644 --- a/similar/main/switch.cpp +++ b/similar/main/switch.cpp @@ -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 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)