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); }
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()); }
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); }); }
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); }
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; }
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)); }