From ae170b333909e3d80538ddfcc042c7802ad6b31c Mon Sep 17 00:00:00 2001 From: milimoe Date: Sat, 19 Jul 2025 08:35:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=95=86=E5=BA=97=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Library/Main.cs | 2 + Library/Tests/CharacterTest.cs | 30 ++++++--- Library/Tests/StoreTest.cs | 120 +++++++++++++++++++++++++++++++++ 3 files changed, 144 insertions(+), 8 deletions(-) create mode 100644 Library/Tests/StoreTest.cs diff --git a/Library/Main.cs b/Library/Main.cs index f19584e..5827f6e 100644 --- a/Library/Main.cs +++ b/Library/Main.cs @@ -28,6 +28,8 @@ FunGameService.InitFunGame(); FunGameSimulation.InitFunGameSimulation(); FunGameController controller = new(new Logger(new LoggerFactory())); +StoreTest.StoreTest1(); + await CharacterTest.CharacterTest2(); //ActivityTest.Test2(); diff --git a/Library/Tests/CharacterTest.cs b/Library/Tests/CharacterTest.cs index 4a3e088..e06600b 100644 --- a/Library/Tests/CharacterTest.cs +++ b/Library/Tests/CharacterTest.cs @@ -1,5 +1,6 @@ using Milimoe.FunGame.Core.Api.Utility; using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Interface.Entity; using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Model; using Oshima.Core.Constant; @@ -77,21 +78,21 @@ namespace Milimoe.FunGame.Testing.Tests Character character1 = new CustomCharacter(1, "测试1-Carry", primaryAttribute: PrimaryAttribute.AGI) { Id = 2, - Level = 60, + Level = 50, FirstRoleType = RoleType.Core, InitialHP = 65, }; Character character2 = new CustomCharacter(1, "测试A-Tank", primaryAttribute: PrimaryAttribute.STR) { Id = 3, - Level = 60, + Level = 50, FirstRoleType = RoleType.Guardian, InitialHP = 85, }; Character character3 = new CustomCharacter(1, "测试α-Support", primaryAttribute: PrimaryAttribute.INT) { Id = 10, - Level = 60, + Level = 50, FirstRoleType = RoleType.Support, SecondRoleType = RoleType.Vanguard, InitialHP = 65, @@ -99,7 +100,7 @@ namespace Milimoe.FunGame.Testing.Tests Character character4 = new CustomCharacter(1, "测试Ⅰ-Medic", primaryAttribute: PrimaryAttribute.INT) { Id = 4, - Level = 60, + Level = 50, FirstRoleType = RoleType.Medic, InitialHP = 65, }; @@ -164,10 +165,10 @@ namespace Milimoe.FunGame.Testing.Tests character2.Recovery(); character3.Recovery(); character4.Recovery(); - character1.Effects.Clear(); - character2.Effects.Clear(); - character3.Effects.Clear(); - character4.Effects.Clear(); + RemoveEffect(character1); + RemoveEffect(character2); + RemoveEffect(character3); + RemoveEffect(character4); times++; Console.WriteLine($"账户金币:{user.Inventory.Credits},材料:{user.Inventory.Materials}."); if (instanceType == InstanceType.Explore) @@ -318,6 +319,19 @@ namespace Milimoe.FunGame.Testing.Tests } } + public static void RemoveEffect(Character character) + { + Effect[] effects = [.. character.Effects]; + foreach (Effect effect in effects) + { + if (effect.IsInEffect && effect.DurativeWithoutDuration || (effect.Durative && effect.Duration > 0) || effect.DurationTurn > 0) + { + character.Effects.Remove(effect); + effect.OnEffectLost(character); + } + } + } + public static void DropItemByCharacterRoleType(Character character) { long[] magicIds; diff --git a/Library/Tests/StoreTest.cs b/Library/Tests/StoreTest.cs new file mode 100644 index 0000000..b1d5462 --- /dev/null +++ b/Library/Tests/StoreTest.cs @@ -0,0 +1,120 @@ +using Milimoe.FunGame.Core.Api.Utility; +using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Library.Constant; +using Oshima.FunGame.OshimaModules.Items; +using Oshima.FunGame.OshimaServers.Service; + +namespace Milimoe.FunGame.Testing.Tests +{ + public class StoreTest + { + public static void StoreTest1() + { + Store store1 = new("探索者协会后勤部") + { + AutoRefresh = true, + RefreshInterval = 1, + NextRefreshDate = DateTime.Today.AddHours(4), + }; + Item item = new 探索许可(); + store1.AddItem(item, 420); + store1.SetPrice(1, General.GameplayEquilibriumConstant.InGameMaterial, 10); + item = new 魔法卡礼包(QualityType.White, 4) + { + Price = 1200 + }; + store1.AddItem(item, -1, ItemSet.GetQualityTypeName(item.QualityType) + item.Name); + item = new 魔法卡礼包(QualityType.Green, 4) + { + Price = 8000 + }; + store1.AddItem(item, -1, ItemSet.GetQualityTypeName(item.QualityType) + item.Name); + item = new 魔法卡礼包(QualityType.Blue, 4) + { + Price = 20000 + }; + store1.AddItem(item, -1, ItemSet.GetQualityTypeName(item.QualityType) + item.Name); + item = new 魔法卡礼包(QualityType.Purple, 4) + { + Price = 70000 + }; + store1.AddItem(item, -1, ItemSet.GetQualityTypeName(item.QualityType) + item.Name); + item = new 魔法卡礼包(QualityType.Orange, 4) + { + Price = 160000 + }; + store1.AddItem(item, -1, ItemSet.GetQualityTypeName(item.QualityType) + item.Name); + item = new 魔法卡礼包(QualityType.Red, 4) + { + Price = 310000 + }; + store1.AddItem(item, -1, ItemSet.GetQualityTypeName(item.QualityType) + item.Name); + item = new 魔法卡礼包(QualityType.Gold, 4) + { + Price = 600000 + }; + store1.AddItem(item, -1, ItemSet.GetQualityTypeName(item.QualityType) + item.Name); + Store store2 = new("铎京武器商会") + { + AutoRefresh = true, + RefreshInterval = 3, + NextRefreshDate = DateTime.Today.AddHours(4), + }; + item = FunGameConstant.Equipment.First(i => i.Id == 11574).Copy(); + item.Price = 120000; + store2.AddItem(item, 4); + item = FunGameConstant.Equipment.First(i => i.Id == 11572).Copy(); + item.Price = 60000; + store2.AddItem(item, 4); + item = new 攻击之爪85() + { + Price = 100000 + }; + store2.AddItem(item, 4); + item = new 攻击之爪70() + { + Price = 55000 + }; + store2.AddItem(item, 4); + Store store3 = new("小雪杂货铺") + { + AutoRefresh = true, + RefreshInterval = 3, + StartTime = new DateTime(2025, 7, 21, 8, 0, 0), + EndTime = new DateTime(2025, 7, 28, 03, 59, 59), + NextRefreshDate = DateTime.Today.AddHours(4), + }; + item = FunGameConstant.Equipment.First(i => i.Id == 14510).Copy(); + item.Price = 28000; + store3.AddItem(item, 20); + item = FunGameConstant.Equipment.First(i => i.Id == 14511).Copy(); + item.Price = 28000; + store3.AddItem(item, 20); + item = FunGameConstant.Equipment.First(i => i.Id == 14512).Copy(); + item.Price = 28000; + store3.AddItem(item, 20); + item = FunGameConstant.Equipment.First(i => i.Id == 14513).Copy(); + item.Price = 28000; + store3.AddItem(item, 20); + item = FunGameConstant.Equipment.First(i => i.Id == 14514).Copy(); + item.Price = 28000; + store3.AddItem(item, 20); + EntityModuleConfig dokyoStores = new("stores", "dokyo") + { + { "dokyo_logistics", store1 }, + { "dokyo_weapons", store2 }, + { "dokyo_yuki", store3 }, + }; + dokyoStores.SaveConfig(); + Console.WriteLine("读取中……"); + dokyoStores.LoadConfig(); + Store? test1 = dokyoStores.Get("dokyo_logistics"); + Store? test2 = dokyoStores.Get("dokyo_weapons"); + Store? test3 = dokyoStores.Get("dokyo_yuki"); + Console.WriteLine(test1); + Console.WriteLine(test2); + Console.WriteLine(test3); + Console.ReadKey(); + } + } +}