public static Event_Variable_Data <T> read(BinaryReader reader, int count) { var loaded_result = read(reader); Event_Variable_Data <T> result = new Event_Variable_Data <T>(count); copy(loaded_result, result, true); return(result); }
internal void set_event_data( Event_Variable_Data <bool> switches, Event_Variable_Data <int> variables, bool overwriteAlreadySet = true) { Event_Variable_Data <bool> .copy(switches, SWITCHES, overwriteAlreadySet); Event_Variable_Data <int> .copy(variables, VARIABLES, overwriteAlreadySet); }
public static void copy(Event_Variable_Data <T> source, Event_Variable_Data <T> target, bool allow_different_length = false, bool overwriteAlreadySet = true) { if (!allow_different_length && source.Length != target.Length) { throw new ArgumentException(string.Format("Data length mismatch: {0} vs {1}", source.Length, target.Length)); } int length = Math.Min(source.Length, target.Length); for (int i = 0; i < length; i++) { if (source.Modified[i]) { if (!overwriteAlreadySet && target.Modified[i]) { continue; } target[i] = source[i]; } } }
public static Event_Variable_Data <T> read(BinaryReader reader) { int count = reader.ReadInt32(); Event_Variable_Types type = (Event_Variable_Types)reader.ReadInt32(); Event_Variable_Data <T> result = new Event_Variable_Data <T>(count); result.Modified = result.Modified.read(reader); if (type == Event_Variable_Types.Boolean) { #if DEBUG Debug.Assert(typeof(T) == typeof(bool)); #endif result.Data = ((result.Data as bool[]).read(reader) as T[]); } else { #if DEBUG Debug.Assert(typeof(T) == typeof(int)); #endif result.Data = ((result.Data as int[]).read(reader) as T[]); } return(result); }
internal void reset_event_variables() { SWITCHES = new Event_Variable_Data <bool>(Config.EVENT_DATA_LENGTH); VARIABLES = new Event_Variable_Data <int>(Config.EVENT_DATA_LENGTH); }
internal void get_event_data(Event_Variable_Data <bool> switches, Event_Variable_Data <int> variables) { Event_Variable_Data <bool> .copy(SWITCHES, switches); Event_Variable_Data <int> .copy(VARIABLES, variables); }
public void read(BinaryReader reader, Version loadedVersion) { Instant_Move = reader.ReadBoolean(); Character_Anim_Count = reader.ReadInt32(); Selected_Unit_Id = reader.ReadInt32(); if (loadedVersion.older_than(0, 4, 3, 2)) { List <int> rand = new List <int>(); rand.read(reader); reset_rng(); } else { Rand = Rng.read(reader, loadedVersion); } //reset_rng(); //Debug Preset_Rng.read(reader); Preparations = reader.ReadBoolean(); if (!loadedVersion.older_than(0, 4, 3, 6)) { Home_Base = reader.ReadBoolean(); } Menu_Canto = (Canto_Records)reader.ReadInt32(); Battler_1_Id = reader.ReadInt32(); Battler_2_Id = reader.ReadInt32(); Aoe_Targets.read(reader); Staff_User_Id = reader.ReadInt32(); Staff_Target_Id = reader.ReadInt32(); Staff_Target_Loc = Staff_Target_Loc.read(reader); Rescuer_Id = reader.ReadInt32(); Rescuee_Id = reader.ReadInt32(); Item_User = reader.ReadInt32(); Item_Used = reader.ReadInt32(); if (!loadedVersion.older_than(0, 4, 6, 1)) { Item_Inventory_Target = reader.ReadInt32(); } if (!loadedVersion.older_than(0, 6, 6, 0)) { ItemPromotionId = reader.ReadInt32(); } if (!loadedVersion.older_than(0, 6, 4, 1)) { ItemTargetLoc = ItemTargetLoc.read(reader); } Shopper_Id = reader.ReadInt32(); Shop_Loc = Shop_Loc.read(reader); if (!loadedVersion.older_than(0, 5, 0, 5)) { SecretShop = reader.ReadBoolean(); } In_Arena = reader.ReadBoolean(); Wager = reader.ReadInt32(); Arena_Distance = reader.ReadInt32(); Arena_Round = reader.ReadInt32(); Stolen_Item = reader.ReadInt32(); Dance_Item = reader.ReadInt32(); Discarder_Id = reader.ReadInt32(); if (!loadedVersion.older_than(0, 5, 5, 4)) { SupportGainId = reader.ReadInt32(); SupportGainTargets.read(reader); } Battle_Mode = (Constants.Animation_Modes)reader.ReadInt32(); Objective_Text = reader.ReadString(); Victory_Text = reader.ReadString(); Loss_Text = reader.ReadString(); Objective_Mode = Objective_Mode.read(reader); Loss_On_Death.read(reader); Ally_Loss_On_Death.read(reader); if (loadedVersion.older_than(0, 4, 2, 0)) { Difficulty_Mode = reader.ReadBoolean() ? Difficulty_Modes.Hard: Difficulty_Modes.Normal; } else { Difficulty_Mode = (Difficulty_Modes)reader.ReadInt32(); } Style = (Mode_Styles)reader.ReadInt32(); if (!loadedVersion.older_than(0, 4, 0, 4)) { Previous_Chapters.read(reader); } if (!loadedVersion.older_than(0, 4, 4, 0)) { Chapter_Id = reader.ReadString(); if (!loadedVersion.older_than(0, 5, 6, 3)) { PreviousChapterIds.read(reader); } else { PreviousChapterIds.Clear(); string previous_chapter = reader.ReadString(); if (!string.IsNullOrEmpty(previous_chapter)) { if (!Global.data_chapters.ContainsKey(Chapter_Id)) { throw new KeyNotFoundException(string.Format("Problem loading save, cannot find chapter {0}", Chapter_Id)); } else if (!Global.data_chapters.ContainsKey(previous_chapter)) { throw new KeyNotFoundException(string.Format("Problem loading save, cannot find chapter {0}", previous_chapter)); } else { string progression_id; if (!Global.data_chapters[Chapter_Id].Prior_Chapters .Intersect(Global.data_chapters[previous_chapter].Progression_Ids) .Any()) { #if DEBUG //throw new KeyNotFoundException(string.Format( // "Chapter {0}'s prior chapters do not match chapter {1}'s progression ids", // Chapter_Id, previous_chapter)); #endif // Incorrect but eh @Debug progression_id = Global.data_chapters[Chapter_Id].Prior_Chapters.First(); } else { progression_id = Global.data_chapters[Chapter_Id].Prior_Chapters .Intersect(Global.data_chapters[previous_chapter].Progression_Ids) .First(); } PreviousChapterIds.Add(progression_id, previous_chapter); } } } } if (!loadedVersion.older_than(0, 6, 7, 0)) { Rankings = PastRankings.read(reader, Difficulty_Mode); } else { Rankings = new PastRankings(); } Total_Play_Time = reader.ReadInt32(); Chapter_Play_Time = reader.ReadInt32(); if (!loadedVersion.older_than(0, 4, 6, 3)) { Chapter_Start_Time = DateTime.FromBinary(reader.ReadInt64()); if (!loadedVersion.older_than(0, 6, 3, 1)) { GameplayStartTime = DateTime.FromBinary(reader.ReadInt64()); } else { GameplayStartTime = Chapter_Start_Time; } Deployed_Unit_Count = reader.ReadInt32(); Deployed_Unit_Avg_Level = reader.ReadInt32(); } Chapter_Turn = reader.ReadInt32(); Chapter_Exp_Gain = reader.ReadInt32(); Chapter_Damage_Taken = reader.ReadInt32(); Chapter_Deaths = reader.ReadInt32(); Chapter_Completion = reader.ReadInt32(); if (!loadedVersion.older_than(0, 4, 4, 3)) { Home_Base_Background = reader.ReadString(); } SWITCHES = Event_Variable_Data <bool> .read(reader, Config.EVENT_DATA_LENGTH); VARIABLES = Event_Variable_Data <int> .read(reader, Config.EVENT_DATA_LENGTH); //Event_Processor.read_data(reader); //Debug }