Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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];
                }
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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
        }