diff --git a/Library/Main.cs b/Library/Main.cs index 140e2be..d4a2710 100644 --- a/Library/Main.cs +++ b/Library/Main.cs @@ -55,41 +55,143 @@ queue.LoadGameMap(new FastAutoMap()); // Console.WriteLine(i.ToString(true, false)); //} -foreach (Skill s in FunGameConstant.Skills) +Character exampleCharacter = new Oshima.FunGame.OshimaModules.Characters.CustomCharacter(0, "演示角色"); +exampleCharacter.Level = 1; +exampleCharacter.Recovery(); +Console.WriteLine($"以下技能效果的演示基于该角色:\r\n{exampleCharacter.GetInfo()}"); +foreach (Skill s in FunGameConstant.Skills.Union(FunGameConstant.CommonSuperSkills)) { s.GamingQueue = queue; + s.Character = exampleCharacter; + List 技能描述 = []; + List 能量消耗 = []; + List 冷却时间 = []; + List 硬直时间 = []; + Console.WriteLine(s.GetInfo().Trim()); s.Level = 1; - Console.WriteLine(s.GetInfo()); + 技能描述.Add(s.Description); + 能量消耗.Add(s.EPCost); + 冷却时间.Add(s.CD); + 硬直时间.Add(s.HardnessTime); s.Level = 2; - Console.WriteLine(s.GetInfo()); + 技能描述.Add(s.Description); + 能量消耗.Add(s.EPCost); + 冷却时间.Add(s.CD); + 硬直时间.Add(s.HardnessTime); + s.Level = 3; + 技能描述.Add(s.Description); + 能量消耗.Add(s.EPCost); + 冷却时间.Add(s.CD); + 硬直时间.Add(s.HardnessTime); + s.Level = 4; + 技能描述.Add(s.Description); + 能量消耗.Add(s.EPCost); + 冷却时间.Add(s.CD); + 硬直时间.Add(s.HardnessTime); + s.Level = 5; + 技能描述.Add(s.Description); + 能量消耗.Add(s.EPCost); + 冷却时间.Add(s.CD); + 硬直时间.Add(s.HardnessTime); s.Level = 6; - Console.WriteLine(s.GetInfo()); + 技能描述.Add(s.Description); + 能量消耗.Add(s.EPCost); + 冷却时间.Add(s.CD); + 硬直时间.Add(s.HardnessTime); + Console.WriteLine($"技能各等级详细描述:"); + for (int i = 0; i < 6; i++) + { + Console.WriteLine($"等级 {i + 1} - {技能描述[i]}"); + } + Console.WriteLine($"能量消耗:" + string.Join("/", 能量消耗.Select(d => $"{d:0.##}"))); + Console.WriteLine($"冷却时间:" + string.Join("/", 冷却时间.Select(d => $"{d:0.##}"))); + Console.WriteLine($"硬直时间:" + string.Join("/", 硬直时间.Select(d => $"{d:0.##}"))); + Console.WriteLine(); } foreach (Skill m in FunGameConstant.Magics) { m.GamingQueue = queue; + m.Character = exampleCharacter; + List 技能描述 = []; + List 魔法消耗 = []; + List 吟唱时间 = []; + List 冷却时间 = []; + List 硬直时间 = []; + Console.WriteLine(m.GetInfo().Trim()); m.Level = 1; - Console.WriteLine(m.GetInfo()); + 技能描述.Add(m.Description); + 魔法消耗.Add(m.MPCost); + 吟唱时间.Add(m.CastTime); + 冷却时间.Add(m.CD); + 硬直时间.Add(m.HardnessTime); m.Level = 2; - Console.WriteLine(m.GetInfo()); + 技能描述.Add(m.Description); + 魔法消耗.Add(m.MPCost); + 吟唱时间.Add(m.CastTime); + 冷却时间.Add(m.CD); + 硬直时间.Add(m.HardnessTime); + m.Level = 3; + 技能描述.Add(m.Description); + 魔法消耗.Add(m.MPCost); + 吟唱时间.Add(m.CastTime); + 冷却时间.Add(m.CD); + 硬直时间.Add(m.HardnessTime); + m.Level = 4; + 技能描述.Add(m.Description); + 魔法消耗.Add(m.MPCost); + 吟唱时间.Add(m.CastTime); + 冷却时间.Add(m.CD); + 硬直时间.Add(m.HardnessTime); + m.Level = 5; + 技能描述.Add(m.Description); + 魔法消耗.Add(m.MPCost); + 吟唱时间.Add(m.CastTime); + 冷却时间.Add(m.CD); + 硬直时间.Add(m.HardnessTime); + m.Level = 6; + 技能描述.Add(m.Description); + 魔法消耗.Add(m.MPCost); + 吟唱时间.Add(m.CastTime); + 冷却时间.Add(m.CD); + 硬直时间.Add(m.HardnessTime); + m.Level = 7; + 技能描述.Add(m.Description); + 魔法消耗.Add(m.MPCost); + 吟唱时间.Add(m.CastTime); + 冷却时间.Add(m.CD); + 硬直时间.Add(m.HardnessTime); m.Level = 8; - Console.WriteLine(m.GetInfo()); -} -foreach (Character c in FunGameConstant.Characters) -{ - Character character = c.Copy(); - character.Level = 60; - character.NormalAttack.Level = 8; - character.Recovery(); - FunGameService.AddCharacterSkills(character, 1, 6, 6); - Console.WriteLine(character.GetInfo()); - //Console.WriteLine($"{character.ToStringWithOutUser()} - {CharacterSet.GetPrimaryAttributeName(character.PrimaryAttribute)}角色"); - //foreach (Skill skill in character.Skills) - //{ - // Console.WriteLine($"【{SkillSet.GetSkillTypeName(skill.SkillType)}】{skill.Name}\r\n{skill.Description}"); - //} + 技能描述.Add(m.Description); + 魔法消耗.Add(m.MPCost); + 吟唱时间.Add(m.CastTime); + 冷却时间.Add(m.CD); + 硬直时间.Add(m.HardnessTime); + Console.WriteLine($"技能各等级详细描述:"); + for (int i = 0; i < 6; i++) + { + Console.WriteLine($"等级 {i + 1} - {技能描述[i]}"); + } + Console.WriteLine($"魔法消耗:" + string.Join("/", 魔法消耗.Select(d => $"{d:0.##}"))); + Console.WriteLine($"吟唱时间:" + string.Join("/", 吟唱时间.Select(d => $"{d:0.##}"))); + Console.WriteLine($"冷却时间:" + string.Join("/", 冷却时间.Select(d => $"{d:0.##}"))); + Console.WriteLine($"硬直时间:" + string.Join("/", 硬直时间.Select(d => $"{d:0.##}"))); Console.WriteLine(); } +//foreach (Character c in FunGameConstant.Characters) +//{ +// Character character = c.Copy(); +// character.Level = 60; +// character.NormalAttack.Level = 8; +// character.Recovery(); +// FunGameService.AddCharacterSkills(character, 1, 6, 6); +// Console.WriteLine(character.GetInfo()); +// //Console.WriteLine($"{character.ToStringWithOutUser()} - {CharacterSet.GetPrimaryAttributeName(character.PrimaryAttribute)}角色"); +// //foreach (Skill skill in character.Skills) +// //{ +// // Console.WriteLine($"【{SkillSet.GetSkillTypeName(skill.SkillType)}】{skill.Name}\r\n{skill.Description}"); +// //} +// Console.WriteLine(); +//} //foreach (Skill s in FunGameConstant.Skills) //{ // s.Level = 6; diff --git a/Library/Solutions/Novels.cs b/Library/Solutions/Novels.cs index 85741bb..ad7b377 100644 --- a/Library/Solutions/Novels.cs +++ b/Library/Solutions/Novels.cs @@ -1,6 +1,7 @@ using System.Text; using Milimoe.FunGame.Core.Api.Utility; using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Model; using MilimoeFunGame.Testing.Characters; @@ -30,6 +31,19 @@ namespace Milimoe.FunGame.Testing.Solutions Conditions.Add("马猴烧酒的好感度低于50", () => 好感度低于50(character)); Conditions.Add("主角攻击力大于20", () => 攻击力大于20(main)); Conditions.Add("马猴烧酒攻击力大于20", () => 攻击力大于20(character)); + + NovelCharacterNode mainNode1 = CreateCharacterNode(main); + mainNode1.PositionType = PositionType.Left; + NovelCharacterNode mainNode2 = CreateCharacterNode(main); + mainNode2.PositionType = PositionType.Left; + mainNode2.StandOut = false; + + NovelCharacterNode characterNode1 = CreateCharacterNode(character); + characterNode1.PositionType = PositionType.Right; + NovelCharacterNode characterNode2 = CreateCharacterNode(character); + characterNode2.PositionType = PositionType.Right; + characterNode2.StandOut = false; + NovelNode node1 = new() { Key = "node1", @@ -40,8 +54,10 @@ namespace Milimoe.FunGame.Testing.Solutions { Key = "node2", Name = main.NickName, - Content = "什么人!" + Content = "什么人!", + Character = mainNode1 }; + node2.Opponents.Add(characterNode2); node1.NextNodes.Add(node2); node2.Previous = node1; NovelOption option1 = new() @@ -63,20 +79,26 @@ namespace Milimoe.FunGame.Testing.Solutions Key = "node3", Name = character.NickName, Content = "你好,我叫【马猴烧酒】!", + Character = characterNode1, Options = [option1, option2] }; + node3.Opponents.Add(mainNode2); NovelNode node4 = new() { Key = "node4", Name = character.NickName, - Content = "你的名字是?" + Content = "你的名字是?", + Character = characterNode1 }; + node4.Opponents.Add(mainNode2); NovelNode node5 = new() { Key = "node5", - Name = character.NickName, - Content = "滚,谁要认识你?" + Name = main.NickName, + Content = "滚,谁要认识你?", + Character = mainNode1 }; + node5.Opponents.Add(characterNode2); node2.NextNodes.Add(node3); option1.Targets.Add(node4); option2.Targets.Add(node5); @@ -210,5 +232,29 @@ namespace Milimoe.FunGame.Testing.Solutions Console.WriteLine(builder.ToString()); } } + + public static NovelCharacterNode CreateCharacterNode(Character character, NovelNode? node = null, bool isOpponent = false, bool standOut = true) + { + NovelCharacterNode ncn = new() + { + Name = character.NickName, + PortraitImagePath = "", + PositionType = PositionType.Center, + StandOut = standOut + }; + if (node != null) + { + if (isOpponent) + { + node.Opponents.Add(ncn); + } + else + { + node.Character = ncn; + node.Name = ncn.Name; + } + } + return ncn; + } } } diff --git a/Library/Tests/HorseTest.cs b/Library/Tests/HorseTest.cs index ab1f8fd..f5aad73 100644 --- a/Library/Tests/HorseTest.cs +++ b/Library/Tests/HorseTest.cs @@ -18,7 +18,7 @@ namespace Milimoe.FunGame.Testing.Tests User user = Factory.GetUser(); user.Id = i; user.Username = FunGameConstant.GenerateRandomChineseUserName(); - room.UserAndIsReady.Add(user, true); + room.UserAndIsReady.TryAdd(user, true); points[user] = 0; if (i == 0) room.RoomMaster = user; }