Пример #1
0
        public async void Test_CustomChecker()
        {
            var ex = Assert.Throws <ArgumentNullException>(() => new CustomChecker <Student, Student>(null, _Validation));

            Assert.Equal("func", ex.ParamName);
            Assert.True(ex.Message.Contains("Can't be null"));

            var checker = new CustomChecker <Student, Student>(i => i.Age > 18 ? null : new List <ValidateFailure>()
            {
                new ValidateFailure()
                {
                    Value = i.Age, Error = "age error", Name = "age"
                }
            }, _Validation);
            var result = await checker.ValidateAsync(new ValidateResult(), new Student()
            {
                Age = 19
            }, "", "");

            Assert.NotNull(result);
            Assert.True(result.IsValid);

            result = await checker.ValidateAsync(new ValidateResult(), new Student()
            {
                Age = 10
            }, "", "");

            Assert.NotNull(result);
            Assert.False(result.IsValid);
            Assert.Equal(1, result.Failures.Count);
            Assert.Equal("age", result.Failures[0].Name);
            Assert.Equal("age error", result.Failures[0].Error);
            Assert.Equal(10, result.Failures[0].Value);
        }
Пример #2
0
        static PartialGordoData()
        {
            EnumTranslator.RegisterEnumFixer <PartialGordoData>((translator, mode, data) =>
            {
                translator.FixEnumValues(mode, data.fashions);
            });

            CustomChecker.RegisterCustomChecker <GordoV01>((x) =>
            {
                if (x.fashions.Any(ModdedIDRegistry.IsModdedID))
                {
                    return(CustomChecker.CustomLevel.PARTIAL);
                }
                return(CustomChecker.CustomLevel.NONE);
            });
            PartialData.RegisterPartialData(() => new PartialGordoData());
        }
        static PartialTreasurePodData()
        {
            CustomChecker.RegisterCustomChecker <TreasurePodV01>(x =>
            {
                if (x.spawnQueue.Any(ModdedIDRegistry.IsModdedID))
                {
                    return(CustomChecker.CustomLevel.PARTIAL);
                }
                return(CustomChecker.CustomLevel.NONE);
            });

            EnumTranslator.RegisterEnumFixer <PartialTreasurePodData>((translator, mode, data) =>
            {
                translator.FixEnumValues(mode, data.spawnQueue);
            });

            PartialData.RegisterPartialData(() => new PartialTreasurePodData());
        }
Пример #4
0
        static PartialExchangeData()
        {
            RegisterPartialData(() => new PartialExchangeData());
            EnumTranslator.RegisterEnumFixer <PartialExchangeData>((translator, mode, data) =>
            {
                translator.FixEnumValues(mode, data.requests);
                translator.FixEnumValues(mode, data.rewards);
            });
            EnumTranslator.RegisterEnumFixer <ItemEntryV03>((translator, mode, data) =>
            {
                data.id             = translator.TranslateEnum(mode, data.id);
                data.nonIdentReward = translator.TranslateEnum(mode, data.nonIdentReward);
            });

            EnumTranslator.RegisterEnumFixer <RequestedItemEntryV03>((translator, mode, data) =>
            {
                data.id             = translator.TranslateEnum(mode, data.id);
                data.nonIdentReward = translator.TranslateEnum(mode, data.nonIdentReward);
            });

            EnumTranslator.RegisterEnumFixer <ExchangeOfferV04>((translator, mode, data) =>
            {
                translator.FixEnumValues(mode, data.requests);
                translator.FixEnumValues(mode, data.rewards);
            });


            CustomChecker.RegisterCustomChecker <ExchangeOfferV04>((data) =>
            {
                if (ExchangeOfferRegistry.IsCustom(data))
                {
                    return(CustomChecker.CustomLevel.FULL);
                }
                if (data.requests.Any(x => ModdedIDRegistry.IsModdedID(x.id) || ModdedIDRegistry.IsModdedID(x.nonIdentReward)))
                {
                    return(CustomChecker.CustomLevel.PARTIAL);
                }
                if (data.rewards.Any(x => ModdedIDRegistry.IsModdedID(x.id) || ModdedIDRegistry.IsModdedID(x.nonIdentReward)))
                {
                    return(CustomChecker.CustomLevel.PARTIAL);
                }
                return(CustomChecker.CustomLevel.VANILLA);
            });
        }
Пример #5
0
        public async void Test_CustomChecker()
        {
            var ex = Assert.Throws<ArgumentNullException>(() => new CustomChecker<Student, Student>(null, _Validation));
            Assert.Equal("func", ex.ParamName);
            Assert.True(ex.Message.Contains("Can't be null"));

            var checker = new CustomChecker<Student, Student>(i => i.Age > 18 ? null : new List<ValidateFailure>() { new ValidateFailure() { Value = i.Age, Error = "age error", Name = "age" } }, _Validation);
            var result = await checker.ValidateAsync(new ValidateResult(), new Student() { Age = 19 }, "", "");
            Assert.NotNull(result);
            Assert.True(result.IsValid);

            result = await checker.ValidateAsync(new ValidateResult(), new Student() { Age = 10 }, "", "");
            Assert.NotNull(result);
            Assert.False(result.IsValid);
            Assert.Equal(1, result.Failures.Count);
            Assert.Equal("age", result.Failures[0].Name);
            Assert.Equal("age error", result.Failures[0].Error);
            Assert.Equal(10, result.Failures[0].Value);
        }
Пример #6
0
        private void UpdatingProcess(string innerXml)
        {
            var resultInfo = new Dictionary <string, string>();

            var stateNumber = 1;

            UpdatingProgress.Visibility = Visibility.Visible;
            UpdatingState.Visibility    = Visibility.Visible;
            UpdatingProcent.Visibility  = Visibility.Visible;

            foreach (var state in stateProcess)
            {
                UpdatingProgress.Value = (stateNumber * 100 / stateProcess.Keys.ToArray().Length);
                UpdatingState.Text     = "Состояние: " + state.Value;
                System.Windows.Forms.Application.DoEvents();

                var result        = "";
                var stateKey      = state.Key;
                var updateManager = new TemplateUpdateManager(innerXml);
                _log.Info("State {0}", state);



                switch (stateKey)
                {
                case StateProcess.CopyToTempFolder:
                    result = updateManager.CopyTemplateToTempFolder();
                    break;

                case StateProcess.RunInfobaseTemplate:
                    result = updateManager.RunInfobaseTemplate("DESIGNER");
                    break;

                case StateProcess.UpdateTemplateWithCfu:
                    result = updateManager.UpdateIbTemplateWithCFU();
                    break;

                case StateProcess.CopyFileIbToTemplateFolder:
                    result = updateManager.CopyFileIbToTemplateFolder();
                    break;

                case StateProcess.UploadInfobaseDT:
                    result = updateManager.UploadInfobaseDT();
                    break;

                case StateProcess.DownloadDTToServerIb:
                    result = updateManager.DownloadDTToServerIb();
                    break;

                case StateProcess.CreateServerTemplate:
                    result = updateManager.CreateServerInfobaseTemplate();
                    break;
                }

                //updateManager.CloseDesigner(); раскомментировать когда проблема будет решена

                resultInfo.Add(state.Value, result);

                if (CustomChecker.IsProcessFailedDuringExecution(result))
                {
                    var alert = GetAlert(state.Value, result);
                    CheckClick(alert);
                }
                else
                {
                    var note = GetNotification(state.Value, result);
                    CheckClick(note);
                }

                stateNumber++;
            }

            var content = "";

            foreach (var res in resultInfo)
            {
                content += string.Format(@"{0}: {1} \n", res.Key, res.Value);
            }

            new ModernDialog
            {
                Title   = "Information",
                Content = content
            }.ShowDialog();

            UpdatingProgress.Visibility = Visibility.Hidden;
            UpdatingState.Visibility    = Visibility.Hidden;
            UpdatingProcent.Visibility  = Visibility.Hidden;
        }
Пример #7
0
        public static void Prefix(GameV12 __instance, ref RemovalData __state)
        {
            __state = new RemovalData();

            __state.AddAndRemoveWhereCustom(__instance.actors);
            __state.AddAndRemoveWhere(__instance.world.placedGadgets, (x) => SaveRegistry.IsCustom(x.Value) || ModdedStringRegistry.IsModdedString(x.Key));
            __state.AddAndRemoveWhere(__instance.ranch.plots, (x) => SaveRegistry.IsCustom(x) || ModdedStringRegistry.IsModdedString(x.id));
            __state.AddAndRemoveWhere(__instance.world.gordos, x => SaveRegistry.IsCustom(x.Value) || ModdedStringRegistry.IsModdedString(x.Key));
            __state.AddAndRemoveWhere(__instance.world.treasurePods, x => SaveRegistry.IsCustom(x.Value) || ModdedStringRegistry.IsModdedString(x.Key));
            __state.AddAndRemoveWhere(__instance.world.offers, x => SaveRegistry.IsCustom(x.Value) || ModdedIDRegistry.IsModdedID(x.Key) || ExchangeOfferRegistry.IsCustom(x.Value));
            __state.AddAndRemoveWhere(__instance.world.econSaturations, (x) => ModdedIDRegistry.IsModdedID(x.Key));
            __state.AddAndRemoveWhere(__instance.world.lastOfferRancherIds, ExchangeOfferRegistry.IsCustom);
            __state.AddAndRemoveWhere(__instance.world.pendingOfferRancherIds, ExchangeOfferRegistry.IsCustom);

            __state.AddAndRemoveWhereCustom(__instance.player.upgrades);
            __state.AddAndRemoveWhereCustom(__instance.player.availUpgrades);
            __state.AddAndRemoveWhere(__instance.player.upgradeLocks,
                                      (x) => ModdedIDRegistry.IsModdedID(x.Key));

            __state.AddAndRemoveWhereCustom(__instance.player.blueprints);
            __state.AddAndRemoveWhereCustom(__instance.player.availBlueprints);
            __state.AddAndRemoveWhere(__instance.player.blueprintLocks, (x) => ModdedIDRegistry.IsModdedID(x.Key));

            __state.AddAndRemoveWhere(__instance.player.progress, (x) => ModdedIDRegistry.IsModdedID(x.Key));
            __state.AddAndRemoveWhere(__instance.player.delayedProgress, (x) => ModdedIDRegistry.IsModdedID(x.Key));

            __state.AddAndRemoveWhere(__instance.player.gadgets, (x) => ModdedIDRegistry.IsModdedID(x.Key));

            __state.AddAndRemoveWhere(__instance.player.craftMatCounts, (x) => ModdedIDRegistry.IsModdedID(x.Key));

            __state.AddAndRemoveWhereCustom(__instance.player.unlockedZoneMaps);

            __state.AddAndRemoveWhere(__instance.player.mail, (x) => MailRegistry.GetModForMail(x.messageKey) != null);

            __state.AddAndRemoveWhere(__instance.pedia.unlockedIds, (x) => ModdedIDRegistry.IsModdedID(Enum.Parse(typeof(PediaDirector.Id), x)));
            __state.AddAndRemoveWhere(__instance.pedia.completedTuts, (x) => ModdedIDRegistry.IsModdedID(Enum.Parse(typeof(TutorialDirector.Id), x)));
            __state.AddAndRemoveWhere(__instance.pedia.popupQueue, (x) => ModdedIDRegistry.IsModdedID(Enum.Parse(typeof(TutorialDirector.Id), x)));



            foreach (var data in AmmoDataUtils.GetAllAmmoData(__instance))
            {
                if (AmmoIdentifier.TryGetIdentifier(data, __instance, out var id) && AmmoIdentifier.IsModdedIdentifier(id))
                {
                    __state.addBacks.Add(AmmoDataUtils.RemoveAmmoDataWithAddBack(data, __instance));
                }
                else
                {
                    var moddedData = AmmoDataUtils.RipOutModdedData(data);

                    __state.addBacks.Add(() =>
                    {
                        AmmoDataUtils.SpliceAmmoData(data, moddedData);
                    });
                }
            }

            void RemovePartial(object actor, RemovalData data)
            {
                if (CustomChecker.GetCustomLevel(actor) == CustomChecker.CustomLevel.PARTIAL)
                {
                    var partial = PartialData.GetPartialData(actor.GetType(), true);
                    partial.Pull(actor);
                    data.addBacks.Add(() =>
                    {
                        partial.Push(actor);
                    });
                }
            }

            foreach (var actor in __instance.actors)
            {
                RemovePartial(actor, __state);
            }

            foreach (var actor in __instance.ranch.plots)
            {
                RemovePartial(actor, __state);
            }

            foreach (var actor in __instance.world.placedGadgets)
            {
                RemovePartial(actor.Value, __state);
            }

            foreach (var actor in __instance.world.gordos)
            {
                RemovePartial(actor.Value, __state);
            }

            foreach (var actor in __instance.world.treasurePods)
            {
                RemovePartial(actor.Value, __state);
            }

            foreach (var offer in __instance.world.offers)
            {
                RemovePartial(offer.Value, __state);
            }

            var partialAppearance = new PartialAppearancesData();

            partialAppearance.Pull(__instance.appearances);
            __state.addBacks.Add(() => partialAppearance.Push(__instance.appearances));
        }