コード例 #1
0
ファイル: EditorSWSH.cs プロジェクト: wowjinxy/pkNX
        public void EditItems()
        {
            var obj   = ROM[GameFile.ItemStats]; // mini
            var data  = obj[0];
            var items = Item8.GetArray(data);
            var cache = new DataCache <Item8>(items);

            using var form = new GenericEditor <Item8>(cache, ROM.GetStrings(TextName.ItemNames), "Item Editor", Randomize);
            form.ShowDialog();
            if (!form.Modified)
            {
                cache.CancelEdits();
                return;
            }

            void Randomize()
            {
                var tradeEvos = new[] { 221, 226, 227, 233, 235, 252, 321, 322, 323, 324, 325, 573, 646, 647 };

                foreach (var item in items)
                {
                    if (item.ItemSprite == -1 || !tradeEvos.Contains(item.ItemID))
                    {
                        continue;
                    }

                    item.Boost0          = 8; // evo stone
                    item.EffectField     = 6; // use effect
                    item.CanUseOnPokemon = true;
                }
            }

            obj[0] = Item8.SetArray(items, data);
        }
コード例 #2
0
ファイル: EditorSWSH.cs プロジェクト: wowjinxy/pkNX
        public void EditSymbolBehave()
        {
            bool altRand = Control.ModifierKeys == Keys.Alt;
            var  obj     = ROM.GetFile(GameFile.SymbolBehave);
            var  data    = obj[0];
            var  root    = FlatBufferConverter.DeserializeFrom <SymbolBehaveRoot>(data);
            var  cache   = new DataCache <SymbolBehave>(root.Table);
            var  names   = root.Table.Select(z => $"{z.Species}{(z.Form != 0 ? $"-{z.Form}" : "")}").ToArray();

            using var form = new GenericEditor <SymbolBehave>(cache, names, "Symbol Behavior Editor", Randomize);
            form.ShowDialog();
            if (!form.Modified)
            {
                return;
            }
            obj[0] = FlatBufferConverter.SerializeFrom(root);

            void Randomize()
            {
                var mode = altRand
                    ? "WaterDash"  // Sharpedo dash homing -- good luck running!
                    : "Anawohoru"; // Diglett - Disappear when approached, pop out elsewhere

                foreach (var t in root.Table)
                {
                    t.Behavior = mode;
                }
            }
        }
コード例 #3
0
        public static LayerBase DrawExpandedGUI(TerrainWrapper wrapper, LayerBase layer)
        {
            if (layer == null)
            {
                return(null);
            }

            //var deltaLayer = layer as DeltaLayer;
            var MMTerrainLayer = layer as MMTerrainLayer;
            var procLayer      = layer as ProceduralLayer;

            EditorGUILayout.BeginVertical("Box");
            EditorGUI.indentLevel++;
            if (MMTerrainLayer != null)
            {
                layer = DrawExpandedGUI(wrapper, MMTerrainLayer);
            }
            else if (procLayer != null)
            {
                GenericEditor.DrawGUI(procLayer.Components, "Components",
                                      typeof(List <ProceduralLayerComponent>), typeof(ProceduralLayer).GetField("Components"), procLayer);
            }
            else
            {
                EditorGUILayout.HelpBox(string.Format("Attempting to draw GUI for {0}, but type {1} is not implemented",
                                                      layer.name, layer.GetType()), MessageType.Info);
            }
            EditorGUI.indentLevel--;
            EditorGUILayout.EndVertical();

            return(layer);
        }
コード例 #4
0
        public void EditGift()
        {
            var file  = ROM[GameFile.EncounterGift];
            var data  = file[0];
            var objs  = data.GetArray(z => new EncounterGift7b(z), EncounterGift7b.SIZE); // binary
            var names = Enumerable.Range(0, objs.Length).Select(z => $"{z:00}").ToArray();
            var cache = new DirectCache <EncounterGift7b>(objs);

            void Randomize()
            {
                var spec = EditUtil.Settings.Species;

                spec.Gen2 = spec.Gen3 = spec.Gen4 = spec.Gen5 = spec.Gen6 = spec.Gen7 = false;
                var srand = new SpeciesRandomizer(ROM.Info, ROM.Data.PersonalData);

                srand.Initialize(spec);
                foreach (var t in objs)
                {
                    t.Species = srand.GetRandomSpecies(t.Species);
                    t.Form    = Legal.GetRandomForme(t.Species, false, true, ROM.Data.PersonalData);
                }
            }

            var form = new GenericEditor <EncounterGift7b>(cache, names, "Gift Editor", Randomize);

            form.ShowDialog();
            if (!form.Modified)
            {
                file.CancelEdits();
            }
            else
            {
                file[0] = objs.SelectMany(z => z.Write()).ToArray();
            }
        }
コード例 #5
0
ファイル: EditorSWSH.cs プロジェクト: exgile/pkNX
        public void EditRaidRewards()
        {
            IFileContainer fp         = ROM.GetFile(GameFile.NestData);
            var            data_table = new GFPack(fp[0]);
            const string   nest       = "nest_hole_drop_rewards.bin";

            byte[] originalData = data_table.GetDataFileName(nest);
            var    nest_drops   = FlatBufferConverter.DeserializeFrom <NestHoleReward8Archive>(originalData);

            var arr   = nest_drops.Tables;
            var cache = new DataCache <NestHoleReward8Table>(arr);
            var names = arr.Select((z, i) => $"{z.TableID}").ToArray();

            using var form = new GenericEditor <NestHoleReward8Table>(cache, names, "Raid Rewards");
            form.ShowDialog();
            if (!form.Modified)
            {
                return;
            }

            var data = FlatBufferConverter.SerializeFrom(nest_drops);

            data_table.SetDataFileName(nest, data);
            fp[0] = data_table.Write();
        }
コード例 #6
0
ファイル: EditorSWSH.cs プロジェクト: wowjinxy/pkNX
        public void EditRBonusRewards()
        {
            IFileContainer fp         = ROM.GetFile(GameFile.NestData);
            var            data_table = new GFPack(fp[0]);
            const string   nest       = "nest_hole_bonus_rewards.bin";
            var            nest_bonus = FlatBufferConverter.DeserializeFrom <NestHoleReward8Archive>(data_table.GetDataFileName(nest));

            var arr   = nest_bonus.Table;
            var cache = new DataCache <NestHoleReward8Table>(arr);
            var names = arr.Select(z => $"{z.TableID}").ToArray();

            void Randomize()
            {
                int[] PossibleHeldItems = Legal.GetRandomItemList(ROM.Info.Game);
                foreach (var t in arr)
                {
                    foreach (var i in t.Entries)
                    {
                        i.ItemID = (uint)PossibleHeldItems[Randomization.Util.Random.Next(PossibleHeldItems.Length)];
                    }
                }
            }

            using var form = new GenericEditor <NestHoleReward8Table>(cache, names, "Raid Bonus Rewards Editor", Randomize);
            form.ShowDialog();
            if (!form.Modified)
            {
                return;
            }
            var data = FlatBufferConverter.SerializeFrom(nest_bonus);

            data_table.SetDataFileName(nest, data);
            fp[0] = data_table.Write();
        }
コード例 #7
0
ファイル: EditorSWSH.cs プロジェクト: wowjinxy/pkNX
        public void EditTrade()
        {
            var arc  = ROM.GetFile(GameFile.EncounterTrade);
            var data = arc[0];
            var objs = FlatBufferConverter.DeserializeFrom <EncounterTrade8Archive>(data);

            var trades = objs.Table;
            var names  = Enumerable.Range(0, trades.Length).Select(z => $"{z:000}").ToArray();
            var cache  = new DirectCache <EncounterTrade8>(trades);

            void Randomize()
            {
                int[] PossibleHeldItems = Legal.GetRandomItemList(ROM.Game);
                var   pt = ROM.Data.PersonalData;

                int[] ban = pt.Table.Take(ROM.Info.MaxSpeciesID + 1)
                            .Select((z, i) => new { Species = i, Present = ((PersonalInfoSWSH)z).IsPresentInGame })
                            .Where(z => !z.Present).Select(z => z.Species).ToArray();

                var spec  = EditUtil.Settings.Species;
                var srand = new SpeciesRandomizer(ROM.Info, ROM.Data.PersonalData);
                var frand = new FormRandomizer(ROM.Data.PersonalData);

                srand.Initialize(spec, ban);
                foreach (var t in trades)
                {
                    // what you receive
                    t.Species       = srand.GetRandomSpecies(t.Species);
                    t.Form          = (byte)frand.GetRandomForme(t.Species, false, false, true, true, ROM.Data.PersonalData.Table);
                    t.AbilityNumber = (byte)Randomization.Util.Random.Next(1, 4); // 1, 2, or H
                    t.Ball          = (Ball)Randomization.Util.Random.Next(1, EncounterTrade8.BallToItem.Length);
                    t.HeldItem      = PossibleHeldItems[Randomization.Util.Random.Next(PossibleHeldItems.Length)];
                    t.Nature        = (int)Nature.Random25;
                    t.Gender        = (int)FixedGender.Random;
                    t.ShinyLock     = (int)Shiny.Random;
                    t.Relearn1      = 0;
                    if (t.IV_HP != -4 && t.IVs.Any(z => z != 31))
                    {
                        t.IVs = new[] { -1, -1, -1, -1, -1, -1 }
                    }
                    ;

                    // what you trade
                    t.RequiredSpecies = srand.GetRandomSpecies(t.RequiredSpecies);
                    t.RequiredForm    = (byte)frand.GetRandomForme(t.RequiredSpecies, false, false, true, true, ROM.Data.PersonalData.Table);
                    t.RequiredNature  = (int)Nature.Random25; // any
                }
            }

            using var form = new GenericEditor <EncounterTrade8>(cache, names, "In-Game Trades Editor", Randomize);
            form.ShowDialog();
            if (!form.Modified)
            {
                arc.CancelEdits();
            }
            else
            {
                arc[0] = FlatBufferConverter.SerializeFrom(objs);
            }
        }
コード例 #8
0
ファイル: EditorSWSH.cs プロジェクト: exgile/pkNX
        private bool PopEdit <T>(T[] data, string title, string[] names) where T : class
        {
            var cache = new DirectCache <T>(data);

            using var form = new GenericEditor <T>(cache, names, title);
            form.ShowDialog();
            return(form.Modified);
        }
コード例 #9
0
    private static bool PopFlat <T2>(T2[] arr, string title, Func <T2, string> getName, Action?rand = null, bool canSave = true) where T2 : class
    {
        var names = arr.Select(getName).ToArray();
        var cache = new DataCache <T2>(arr);

        using var form = new GenericEditor <T2>(cache, names, title, randomize: rand, canSave: canSave);
        form.ShowDialog();
        return(form.Modified);
    }
コード例 #10
0
ファイル: EditorSWSH.cs プロジェクト: wowjinxy/pkNX
        public void EditStatic()
        {
            var arc  = ROM.GetFile(GameFile.EncounterStatic);
            var data = arc[0];
            var objs = FlatBufferConverter.DeserializeFrom <EncounterStatic8Archive>(data);

            var encounters = objs.Table;
            var names      = Enumerable.Range(0, encounters.Length).Select(z => $"{z:000}").ToArray();
            var cache      = new DirectCache <EncounterStatic8>(encounters);

            void Randomize()
            {
                int[] PossibleHeldItems = Legal.GetRandomItemList(ROM.Game);
                var   pt = ROM.Data.PersonalData;

                int[] ban = pt.Table.Take(ROM.Info.MaxSpeciesID + 1)
                            .Select((z, i) => new { Species = i, Present = ((PersonalInfoSWSH)z).IsPresentInGame })
                            .Where(z => !z.Present).Select(z => z.Species).ToArray();

                var spec  = EditUtil.Settings.Species;
                var srand = new SpeciesRandomizer(ROM.Info, ROM.Data.PersonalData);
                var frand = new FormRandomizer(ROM.Data.PersonalData);

                srand.Initialize(spec, ban);
                foreach (var t in encounters)
                {
                    if (t.Species >= (int)Species.Zacian && t.Species <= (int)Species.Eternatus) // Eternatus crashes when changed, keep Zacian and Zamazenta to make final boss battle fair
                    {
                        continue;
                    }
                    t.Species   = srand.GetRandomSpecies(t.Species);
                    t.Form      = (byte)frand.GetRandomForme(t.Species, false, false, true, true, ROM.Data.PersonalData.Table);
                    t.Ability   = Randomization.Util.Random.Next(1, 4); // 1, 2, or H
                    t.HeldItem  = PossibleHeldItems[Randomization.Util.Random.Next(PossibleHeldItems.Length)];
                    t.Nature    = (int)Nature.Random25;
                    t.Gender    = (int)FixedGender.Random;
                    t.ShinyLock = (int)Shiny.Random;
                    t.Moves     = new[] { 0, 0, 0, 0 };
                    if (t.IV_HP != -4 && t.IVs.Any(z => z != 31))
                    {
                        t.IVs = new[] { -1, -1, -1, -1, -1, -1 }
                    }
                    ;
                }
            }

            using var form = new GenericEditor <EncounterStatic8>(cache, names, "Static Encounter Editor", Randomize);
            form.ShowDialog();
            if (!form.Modified)
            {
                arc.CancelEdits();
            }
            else
            {
                arc[0] = FlatBufferConverter.SerializeFrom(objs);
            }
        }
コード例 #11
0
ファイル: ListenerGUI.cs プロジェクト: cowtrix/musicvis
    public override void OnInspectorGUI()
    {
        var listener = target as Listener;

        if (Application.isPlaying)
        {
            EditorGUILayout.LabelField("Strength: " + listener.Strength);
        }
        GenericEditor.DrawGUI(target);
    }
コード例 #12
0
ファイル: EditorSWSH.cs プロジェクト: wowjinxy/pkNX
        public void EditRaids()
        {
            IFileContainer fp            = ROM.GetFile(GameFile.NestData);
            var            data_table    = new GFPack(fp[0]);
            const string   nest          = "nest_hole_encount.bin";
            var            nest_encounts = FlatBufferConverter.DeserializeFrom <EncounterNest8Archive>(data_table.GetDataFileName(nest));

            var arr   = nest_encounts.Table;
            var cache = new DataCache <EncounterNest8Table>(arr);
            var games = new[] { "Sword", "Shield" };
            var names = arr.Select((z, i) => $"{games[z.GameVersion - 1]} - {i / 2}").ToArray();

            void Randomize()
            {
                var pt = ROM.Data.PersonalData;

                int[] ban = pt.Table.Take(ROM.Info.MaxSpeciesID + 1)
                            .Select((z, i) => new { Species = i, Present = ((PersonalInfoSWSH)z).IsPresentInGame })
                            .Where(z => !z.Present).Select(z => z.Species).ToArray();

                var spec  = EditUtil.Settings.Species;
                var srand = new SpeciesRandomizer(ROM.Info, ROM.Data.PersonalData);
                var frand = new FormRandomizer(ROM.Data.PersonalData);

                srand.Initialize(spec, ban);
                foreach (var t in arr)
                {
                    foreach (var p in t.Entries)
                    {
                        p.Species      = srand.GetRandomSpecies(p.Species);
                        p.Form         = frand.GetRandomForme(p.Species, false, false, true, true, ROM.Data.PersonalData.Table);
                        p.Ability      = 4;     // "A4" -- 1, 2, or H
                        p.Gender       = 0;     // random
                        p.IsGigantamax = false; // don't allow gmax flag on non-gmax species
                    }
                }
            }

            using var form = new GenericEditor <EncounterNest8Table>(cache, names, "Max Raid Battles Editor", Randomize);
            form.ShowDialog();
            if (!form.Modified)
            {
                return;
            }
            var data = FlatBufferConverter.SerializeFrom(nest_encounts);

            data_table.SetDataFileName(nest, data);
            fp[0] = data_table.Write();
        }
コード例 #13
0
ファイル: EditorGG.cs プロジェクト: PMArkive/pkNX
        public void EditTrade()
        {
            var file  = ROM[GameFile.EncounterTrade];
            var data  = file[0];
            var objs  = data.GetArray(z => new EncounterTrade7b(z), EncounterTrade7b.SIZE); // binary
            var names = Enumerable.Range(0, objs.Length).Select(z => $"{z:000}").ToArray();
            var cache = new DirectCache <EncounterTrade7b>(objs);

            void Randomize()
            {
                var spec = EditUtil.Settings.Species;

                spec.Gen2 = spec.Gen3 = spec.Gen4 = spec.Gen5 = spec.Gen6 = spec.Gen7 = false;
                var srand = new SpeciesRandomizer(ROM.Info, Data.PersonalData);
                var frand = new FormRandomizer(Data.PersonalData);

                srand.Initialize(spec, 808, 809); // can only catch 1-151 in wild
                foreach (var t in objs)
                {
                    t.Species         = (Species)srand.GetRandomSpecies((int)t.Species);
                    t.RequiredSpecies = (Species)srand.GetRandomSpecies((int)t.Species);
                    t.Form            = frand.GetRandomForme((int)t.Species, false, false, true, false, Data.PersonalData.Table);
                    t.RequiredForm    = 0; // can't catch wild alolan forms
                    t.Nature          = Nature.Random - 1;
                    t.Gender          = FixedGender.Random;
                    t.Shiny           = Shiny.Random;
                    t.RelearnMoves    = new[] { 0, 0, 0, 0 };
                    if (t.IV_HP != -4)
                    {
                        t.IVs = new[] { -1, -1, -1, -1, -1, -1 }
                    }
                    ;
                }
            }

            using var form = new GenericEditor <EncounterTrade7b>(cache, names, "Trade Editor", Randomize);
            form.ShowDialog();
            if (!form.Modified)
            {
                file.CancelEdits();
            }
            else
            {
                file[0] = objs.SelectMany(z => z.Write()).ToArray();
            }
        }
コード例 #14
0
ファイル: EditorSWSH.cs プロジェクト: wowjinxy/pkNX
        public void EditRental()
        {
            var obj     = ROM[GameFile.Rentals];
            var data    = obj[0];
            var rentals = FlatBufferConverter.DeserializeFrom <Rental8Archive>(data);
            var cache   = new DataCache <Rental8>(rentals.Table);
            var names   = rentals.Table.Select((z, i) => $"{i:000} {z.Hash1:X16}").ToArray();

            using var form = new GenericEditor <Rental8>(cache, names, "Rental Editor");
            form.ShowDialog();
            if (!form.Modified)
            {
                cache.CancelEdits();
                return;
            }
            obj[0] = FlatBufferConverter.SerializeFrom(rentals);
        }
コード例 #15
0
ファイル: EditorSWSH.cs プロジェクト: wowjinxy/pkNX
        public void EditPlacement()
        {
            var arc        = ROM.GetFile(GameFile.Placement);
            var placement  = new GFPack(arc[0]);
            var area_names = new AHTB(placement.GetDataFileName("AreaNameHashTable.tbl")).ToDictionary();

            List <PlacementArea8Archive> areas = new();
            List <string> names = new();

            foreach (var area in area_names)
            {
                var areaName = area.Value;
                var fileName = $"{areaName}.bin";
                if (placement.GetIndexFileName(fileName) < 0)
                {
                    continue;
                }

                var bin  = placement.GetDataFileName(fileName);
                var data = FlatBufferConverter.DeserializeFrom <PlacementArea8Archive>(bin);

                names.Add(fileName);
                areas.Add(data);
            }

            var arr     = areas.ToArray();
            var nameArr = names.ToArray();
            var cache   = new DataCache <PlacementArea8Archive>(arr);
            var form    = new GenericEditor <PlacementArea8Archive>(cache, nameArr, "Placement", canSave: true);

            form.ShowDialog();
            if (!form.Modified)
            {
                return;
            }

            // Stuff files back into the gfpak and save
            for (int i = 0; i < arr.Length; i++)
            {
                var obj = arr[i];
                var bin = FlatBufferConverter.SerializeFrom(obj);
                placement.SetDataFileName(nameArr[i], bin);
            }
            arc[0] = placement.Write();
        }
コード例 #16
0
    public void EditTrainers()
    {
        var folder = ROM.GetFilteredFolder(GameFile.TrainerData);
        var cache  = new DataCache <TrData8a>(folder)
        {
            Create = FlatBufferConverter.DeserializeFrom <TrData8a>,
            Write  = FlatBufferConverter.SerializeFrom,
        };
        var names = folder.GetPaths().Select(Path.GetFileNameWithoutExtension).ToArray();

        using var form = new GenericEditor <TrData8a>(cache, names, "Trainers", Randomize, canSave: true);
        form.ShowDialog();

        void Randomize()
        {
            var settings = EditUtil.Settings.Species;
            var rand     = new SpeciesRandomizer(ROM.Info, Data.PersonalData);

            rand.Initialize(settings, GetSpeciesBanlist());

            for (int i = 0; i < cache.Length; i++)
            {
                foreach (var t in cache[i].Team)
                {
                    t.Species          = rand.GetRandomSpecies(t.Species);
                    t.Form             = GetRandomForm(t.Species);
                    t.Gender           = (int)FixedGender.Random;
                    t.Nature           = NatureType8a.Random;
                    t.Move_01.Move     = t.Move_02.Move = t.Move_03.Move = t.Move_04.Move = 0;
                    t.Move_01.Mastered = t.Move_02.Mastered = t.Move_03.Mastered = t.Move_04.Mastered = true;
                    t.Shiny            = Randomization.Util.Random.Next(0, 100 + 1) < 3;
                    t.IsOybn           = Randomization.Util.Random.Next(0, 100 + 1) < 3;
                }
            }
        }

        if (!form.Modified)
        {
            cache.CancelEdits();
        }
        else
        {
            cache.Save();
        }
    }
コード例 #17
0
ファイル: EditorGG.cs プロジェクト: PMArkive/pkNX
        public void EditStatic()
        {
            var file  = ROM[GameFile.EncounterStatic];
            var data  = file[0];
            var objs  = data.GetArray(z => new EncounterStatic7b(z), EncounterStatic7b.SIZE); // binary
            var names = Enumerable.Range(0, objs.Length).Select(z => $"{z:000}").ToArray();
            var cache = new DirectCache <EncounterStatic7b>(objs);

            void Randomize()
            {
                var spec = EditUtil.Settings.Species;

                spec.Gen2 = spec.Gen3 = spec.Gen4 = spec.Gen5 = spec.Gen6 = spec.Gen7 = false;
                var srand = new SpeciesRandomizer(ROM.Info, Data.PersonalData);
                var frand = new FormRandomizer(Data.PersonalData);

                srand.Initialize(spec);
                for (int i = 2; i < objs.Length; i++) // skip starters
                {
                    var t = objs[i];
                    t.Species      = (Species)srand.GetRandomSpecies((int)t.Species);
                    t.Form         = frand.GetRandomForme((int)t.Species, false, false, true, false, Data.PersonalData.Table);
                    t.Nature       = Nature.Random25;
                    t.Gender       = FixedGender.Random;
                    t.Shiny        = Shiny.Random;
                    t.RelearnMoves = new[] { 0, 0, 0, 0 };
                    if (t.IV_HP != -4)
                    {
                        t.IVs = new[] { -1, -1, -1, -1, -1, -1 }
                    }
                    ;
                }
            }

            using var form = new GenericEditor <EncounterStatic7b>(cache, names, "Static Encounter Editor", Randomize);
            form.ShowDialog();
            if (!form.Modified)
            {
                file.CancelEdits();
            }
            else
            {
                file[0] = objs.SelectMany(z => z.Write()).ToArray();
            }
        }
コード例 #18
0
ファイル: EditorSWSH.cs プロジェクト: wowjinxy/pkNX
        public void EditDynamaxAdv()
        {
            var arc  = ROM.GetFile(GameFile.DynamaxDens);
            var data = arc[0];
            var objs = FlatBufferConverter.DeserializeFrom <EncounterUnderground8Archive>(data);

            var table = objs.Table;
            var names = Enumerable.Range(0, table.Length).Select(z => $"{z:000}").ToArray();
            var cache = new DirectCache <EncounterUnderground8>(table);

            void Randomize()
            {
                var pt = ROM.Data.PersonalData;

                int[] ban = pt.Table.Take(ROM.Info.MaxSpeciesID + 1)
                            .Select((z, i) => new { Species = i, Present = ((PersonalInfoSWSH)z).IsPresentInGame })
                            .Where(z => !z.Present).Select(z => z.Species).ToArray();

                var spec  = EditUtil.Settings.Species;
                var srand = new SpeciesRandomizer(ROM.Info, ROM.Data.PersonalData);
                var frand = new FormRandomizer(ROM.Data.PersonalData);

                srand.Initialize(spec, ban);
                foreach (var t in table)
                {
                    // what you receive
                    t.Species = srand.GetRandomSpecies(t.Species);
                    t.Form    = (byte)frand.GetRandomForme(t.Species, false, false, true, true, ROM.Data.PersonalData.Table);
                    t.Ability = (uint)Randomization.Util.Random.Next(1, 4); // 1, 2, or H
                    t.Move0   = t.Move1 = t.Move2 = t.Move3 = 0;
                }
            }

            using var form = new GenericEditor <EncounterUnderground8>(cache, names, "Dynamax Adventures Encounter Editor", Randomize);
            form.ShowDialog();
            if (!form.Modified)
            {
                arc.CancelEdits();
            }
            else
            {
                arc[0] = FlatBufferConverter.SerializeFrom(objs);
            }
        }
コード例 #19
0
ファイル: EditorSWSH.cs プロジェクト: wowjinxy/pkNX
        public void EditMoves()
        {
            var obj   = ROM[GameFile.MoveStats]; // mini
            var cache = new DataCache <Waza8>(obj)
            {
                Create = FlatBufferConverter.DeserializeFrom <Waza8>,
                Write  = FlatBufferConverter.SerializeFrom,
            };

            using var form = new GenericEditor <Waza8>(cache, ROM.GetStrings(TextName.MoveNames), "Move Editor");
            form.ShowDialog();
            if (!form.Modified)
            {
                cache.CancelEdits();
                return;
            }

            cache.Save();
            ROM.Data.MoveData.ClearAll(); // force reload if used again
        }
コード例 #20
0
        public void EditItems()
        {
            var obj   = ROM.GetFilteredFolder(GameFile.ItemStats, z => new FileInfo(z).Length == 36);
            var cache = new DataCache <Item>(obj)
            {
                Create = Item.FromBytes,
                Write  = item => item.Write(),
            };

            using var form = new GenericEditor <Item>(cache, ROM.GetStrings(TextName.ItemNames), "Item Editor");
            form.ShowDialog();
            if (!form.Modified)
            {
                cache.CancelEdits();
            }
            else
            {
                cache.Save();
            }
        }
コード例 #21
0
        public void EditMoves()
        {
            var obj   = ROM[GameFile.MoveStats]; // mini
            var cache = new DataCache <Move7>(obj)
            {
                Create = data => new Move7(data),
                Write  = move => move.Write(),
            };

            using var form = new GenericEditor <Move7>(cache, ROM.GetStrings(TextName.MoveNames), "Move Editor");
            form.ShowDialog();
            if (!form.Modified)
            {
                cache.CancelEdits();
            }
            else
            {
                cache.Save();
            }
        }
コード例 #22
0
ファイル: EditorSWSH.cs プロジェクト: exgile/pkNX
        public void EditRaid()
        {
            IFileContainer fp            = ROM.GetFile(GameFile.NestData);
            var            data_table    = new GFPack(fp[0]);
            const string   nest          = "nest_hole_encount.bin";
            var            nest_encounts = FlatBufferConverter.DeserializeFrom <EncounterNest8Archive>(data_table.GetDataFileName(nest));

            var arr   = nest_encounts.Tables;
            var cache = new DataCache <EncounterNest8Table>(arr);
            var games = new[] { "Sword", "Shield" };
            var names = arr.Select((z, i) => $"{games[z.GameVersion - 1]} - {i / 2}").ToArray();

            using var form = new GenericEditor <EncounterNest8Table>(cache, names, "Raid Encounters");
            form.ShowDialog();
            if (!form.Modified)
            {
                return;
            }

            var data = FlatBufferConverter.SerializeFrom(nest_encounts);

            data_table.SetDataFileName(nest, data);
            fp[0] = data_table.Write();
        }
コード例 #23
0
ファイル: Sofia.cs プロジェクト: whins/FSAgent
 public void edit()
 {
     if (Broker.get_instance().active_calls != 0) {
         MessageBoxResult mres = MessageBox.Show("Warning editing sofia settings will cause sofia to restart and will drop any active calls, do you want to continue?", "Restart Warning", MessageBoxButton.YesNo);
         if (mres != MessageBoxResult.Yes)
             return;
     }
     GenericEditor editor = new GenericEditor();
     editor.Init("Editing Sofia Settings", values);
     editor.ShowDialog();
     if (editor.DialogResult == true) {
         if (master_profile_ok)
             reload_config(RELOAD_CONFIG_MODE.HARD);
         else
             reload_config(RELOAD_CONFIG_MODE.MODULE);
     }
 }
コード例 #24
0
 void OnEnable()
 {
     editor = new GenericEditor();
     editor.InitTextures();
 }
コード例 #25
0
ファイル: EditorGG.cs プロジェクト: PMArkive/pkNX
        private void EditShop(bool shop2)
        {
            var arc  = ROM.GetFile(GameFile.Shops);
            var data = arc[0];

            int[] PossibleHeldItems = Legal.GetRandomItemList(ROM.Game);
            var   shop = FlatBufferConverter.DeserializeFrom <ShopInventory>(data);

            if (!shop2)
            {
                var table = shop.Shop1;
                var names = table.Select((z, _) => $"{(z.LGPE.TryGetValue(z.Hash, out var shopName) ? shopName : z.Hash.ToString("X"))}").ToArray();
                var cache = new DirectCache <Shop1>(table);
                using var form = new GenericEditor <Shop1>(cache, names, $"{nameof(Shop1)} Editor", Randomize);
                form.ShowDialog();
                if (!form.Modified)
                {
                    arc.CancelEdits();
                    return;
                }

                void Randomize()
                {
                    for (int s = 1; s < table.Length; s++) // skip first table with TMs (unobtainable otherwise)
                    {
                        var shopDefinition = table[s];
                        var items          = shopDefinition.Inventory.Items;
                        for (int i = 0; i < items.Length; i++)
                        {
                            items[i] = PossibleHeldItems[Randomization.Util.Random.Next(PossibleHeldItems.Length)];
                        }
                    }
                }
            }
            else
            {
                var table = shop.Shop2;
                var names = table.Select((z, _) => $"{(z.LGPE.TryGetValue(z.Hash, out var shopName) ? shopName : z.Hash.ToString("X"))}").ToArray();
                var cache = new DirectCache <Shop2>(table);
                using var form = new GenericEditor <Shop2>(cache, names, $"{nameof(Shop2)} Editor", Randomize);
                form.ShowDialog();
                if (!form.Modified)
                {
                    arc.CancelEdits();
                    return;
                }

                void Randomize()
                {
                    foreach (var shopDefinition in table)
                    {
                        foreach (var inv in shopDefinition.Inventories)
                        {
                            var items = inv.Items;
                            for (int i = 0; i < items.Length; i++)
                            {
                                items[i] = PossibleHeldItems[Randomization.Util.Random.Next(PossibleHeldItems.Length)];
                            }
                        }
                    }
                }
            }
            arc[0] = FlatBufferConverter.SerializeFrom(shop);
        }
コード例 #26
0
        public void EditGift()
        {
            var arc  = ROM.GetFile(GameFile.EncounterGift);
            var data = arc[0];
            var objs = FlatBufferConverter.DeserializeFrom <EncounterGift8Archive>(data);

            var gifts = objs.Table;
            var names = Enumerable.Range(0, gifts.Length).Select(z => $"{z:000}").ToArray();
            var cache = new DirectCache <EncounterGift8>(gifts);

            void Randomize()
            {
                int[] PossibleHeldItems = Legal.GetRandomItemList(ROM.Game);
                var   pt = ROM.Data.PersonalData;

                int[] ban = pt.Table.Take(ROM.Info.MaxSpeciesID + 1)
                            .Select((z, i) => new { Species = i, Present = ((PersonalInfoSWSH)z).IsPresentInGame })
                            .Where(z => !z.Present).Select(z => z.Species).ToArray();

                var spec  = EditUtil.Settings.Species;
                var srand = new SpeciesRandomizer(ROM.Info, ROM.Data.PersonalData);
                var frand = new FormRandomizer(ROM.Data.PersonalData);

                srand.Initialize(spec, ban);
                foreach (var t in gifts)
                {
                    // swap gmax gifts and kubfu for other gmax capable species
                    if (t.CanGigantamax || t.Species == Species.Kubfu)
                    {
                        t.Species = (Species)Legal.GigantamaxForms[Randomization.Util.Random.Next(Legal.GigantamaxForms.Length)];
                        t.AltForm = t.Species == Species.Pikachu || t.Species == Species.Meowth ? 0 : frand.GetRandomForme((int)t.Species, false, false, false, false, ROM.Data.PersonalData.Table); // Pikachu & Meowth altforms can't gmax
                    }
                    else
                    {
                        t.Species = (Species)srand.GetRandomSpecies((int)t.Species);
                        t.AltForm = frand.GetRandomForme((int)t.Species, false, false, true, true, ROM.Data.PersonalData.Table);
                    }

                    t.Ability   = Randomization.Util.Random.Next(1, 4);        // 1, 2, or H
                    t.Ball      = (Ball)Randomization.Util.Random.Next(1, 15); // packed bit, only allows for 15 balls
                    t.HeldItem  = PossibleHeldItems[Randomization.Util.Random.Next(PossibleHeldItems.Length)];
                    t.Nature    = Nature.Random25;
                    t.Gender    = FixedGender.Random;
                    t.ShinyLock = Shiny.Random;
                    if (t.IV_Hp != -4)
                    {
                        t.IV_Hp = t.IV_Atk = t.IV_Def = t.IV_SpAtk = t.IV_SpDef = t.IV_Spe = -1;
                    }
                }
            }

            using var form = new GenericEditor <EncounterGift8>(cache, names, "Gift Pokémon Editor", Randomize);
            form.ShowDialog();
            if (!form.Modified)
            {
                arc.CancelEdits();
            }
            else
            {
                arc[0] = FlatBufferConverter.SerializeFrom(objs);
            }
        }
コード例 #27
0
ファイル: EditorSWSH.cs プロジェクト: wowjinxy/pkNX
        public void EditGift()
        {
            var arc  = ROM.GetFile(GameFile.EncounterGift);
            var data = arc[0];
            var objs = FlatBufferConverter.DeserializeFrom <EncounterGift8Archive>(data);

            var gifts = objs.Table;
            var names = Enumerable.Range(0, gifts.Length).Select(z => $"{z:000}").ToArray();
            var cache = new DirectCache <EncounterGift8>(gifts);

            void Randomize()
            {
                int[] PossibleHeldItems = Legal.GetRandomItemList(ROM.Game);
                var   pt = ROM.Data.PersonalData;

                int[] ban = pt.Table.Take(ROM.Info.MaxSpeciesID + 1)
                            .Select((z, i) => new { Species = i, Present = ((PersonalInfoSWSH)z).IsPresentInGame })
                            .Where(z => !z.Present).Select(z => z.Species).ToArray();

                var spec  = EditUtil.Settings.Species;
                var srand = new SpeciesRandomizer(ROM.Info, ROM.Data.PersonalData);
                var frand = new FormRandomizer(ROM.Data.PersonalData);

                srand.Initialize(spec, ban);
                foreach (var t in gifts)
                {
                    // swap gmax gifts and kubfu for other gmax capable species
                    if (t.CanGigantamax || t.Species == (int)Species.Kubfu)
                    {
                        t.Species = Legal.GigantamaxForms[Randomization.Util.Random.Next(Legal.GigantamaxForms.Length)];
                        t.Form    = (byte)(t.Species == (int)Species.Pikachu || t.Species == (int)Species.Meowth ? 0 : frand.GetRandomForme(t.Species, false, false, false, false, ROM.Data.PersonalData.Table)); // Pikachu & Meowth altforms can't gmax
                    }
                    else
                    {
                        t.Species = srand.GetRandomSpecies(t.Species);
                        t.Form    = (byte)frand.GetRandomForme(t.Species, false, false, true, true, ROM.Data.PersonalData.Table);
                    }

                    t.Ability   = Randomization.Util.Random.Next(1, 4); // 1, 2, or H
                    t.Ball      = (Ball)Randomization.Util.Random.Next(1, EncounterGift8.BallToItem.Length);
                    t.HeldItem  = PossibleHeldItems[Randomization.Util.Random.Next(PossibleHeldItems.Length)];
                    t.Nature    = (int)Nature.Random25;
                    t.Gender    = (byte)FixedGender.Random;
                    t.ShinyLock = (int)Shiny.Random;
                    if (t.IV_HP != -4 && t.IVs.Any(z => z != 31))
                    {
                        t.IVs = new[] { -1, -1, -1, -1, -1, -1 }
                    }
                    ;
                }

                UpdateStarters(); // update placement critter data to match new randomized species
            }

            void UpdateStarters()
            {
                var container = ROM.GetFile(GameFile.Placement);
                var placement = new GFPack(container[0]);

                // a_r0501_i0101.bin for Toxel
                // a_bt0101.bin for Type: Null
                // a_wr0201_i0101.bin for Bulbasaur, Squirtle, Porygon, and Kubfu
                // a_wr0301_i0401.bin for Cosmog
                // a_d0901.bin for Poipole
                const string file     = "a_0101.bin";
                var          table    = placement.GetDataFileName(file);
                var          obj      = FlatBufferConverter.DeserializeFrom <PlacementArea8Archive>(table);
                var          critters = obj.Table[0].Critters;

                // Grookey
                critters[3].Species = (uint)gifts[0].Species;
                critters[3].Form    = gifts[0].Form;

                // Scorbunny
                critters[1].Species = (uint)gifts[3].Species;
                critters[1].Form    = gifts[3].Form;

                // Sobble
                critters[2].Species = (uint)gifts[4].Species;
                critters[2].Form    = gifts[4].Form;

                var bin = FlatBufferConverter.SerializeFrom(obj);

                placement.SetDataFileName(file, bin);
                container[0] = placement.Write();
            }

            using var form = new GenericEditor <EncounterGift8>(cache, names, "Gift Pokémon Editor", Randomize);
            form.ShowDialog();
            if (!form.Modified)
            {
                arc.CancelEdits();
            }
            else
            {
                arc[0] = FlatBufferConverter.SerializeFrom(objs);
            }
        }
コード例 #28
0
 protected virtual void OnExpandedGUI(WorldStampCreator parent)
 {
     GenericEditor.DrawGUI(this);
 }
コード例 #29
0
 public override void OnInspectorGUI()
 {
     GenericEditor.DrawGUI(target);
 }
コード例 #30
0
 public override string ToString()
 {
     return(GenericEditor.GetFriendlyName(GetType().DeclaringType));
 }