diff --git a/Command/Command/Cmd/CommandAvatar.cs b/Command/Command/Cmd/CommandAvatar.cs index 1dcfcac5..9e7af3e3 100644 --- a/Command/Command/Cmd/CommandAvatar.cs +++ b/Command/Command/Cmd/CommandAvatar.cs @@ -4,7 +4,6 @@ using EggLink.DanhengServer.GameServer.Server.Packet.Send.Player; using EggLink.DanhengServer.GameServer.Server.Packet.Send.PlayerSync; using EggLink.DanhengServer.Internationalization; using EggLink.DanhengServer.Proto; -using System.Numerics; namespace EggLink.DanhengServer.Command.Command.Cmd; @@ -44,9 +43,7 @@ public class CommandAvatar : ICommand { if (!GameData.AvatarConfigData.TryGetValue(path.Key, out var pathExcel)) continue; foreach (var talent in pathExcel.SkillTree) - { path.Value.SkillTree[talent.PointID] = Math.Min(level, talent.MaxLevel); - } } await arg.SendMsg(I18NManager.Translate("Game.Command.Avatar.AllAvatarsLevelSet", @@ -59,9 +56,7 @@ public class CommandAvatar : ICommand } if (GameData.MultiplePathAvatarConfigData.TryGetValue(avatarId, out var multiple)) - { avatarId = multiple.BaseAvatarID; - } var avatar = player.AvatarManager!.GetFormalAvatar(avatarId); if (avatar == null) @@ -85,9 +80,7 @@ public class CommandAvatar : ICommand } foreach (var talent in excel.SkillTree) - { avatarPathInfo.Value.SkillTree[talent.PointID] = Math.Min(level, talent.MaxLevel); - } // sync await player.SendPacket(new PacketPlayerSyncScNotify(avatar)); @@ -155,10 +148,7 @@ public class CommandAvatar : ICommand } else { - if (GameData.MultiplePathAvatarConfigData.TryGetValue(id, out var multiple)) - { - id = multiple.BaseAvatarID; - } + if (GameData.MultiplePathAvatarConfigData.TryGetValue(id, out var multiple)) id = multiple.BaseAvatarID; var avatar = arg.Target.Player!.AvatarManager!.GetFormalAvatar(id); if (avatar == null) diff --git a/Command/Command/Cmd/CommandClear.cs b/Command/Command/Cmd/CommandClear.cs index ef26c967..57fc471d 100644 --- a/Command/Command/Cmd/CommandClear.cs +++ b/Command/Command/Cmd/CommandClear.cs @@ -14,7 +14,8 @@ public class CommandClear : ICommand return; } - var removeList = arg.Target.Player!.InventoryManager!.Data.EquipmentItems.Where(x => x.EquipAvatar == 0).ToList(); + var removeList = arg.Target.Player!.InventoryManager!.Data.EquipmentItems.Where(x => x.EquipAvatar == 0) + .ToList(); await arg.Target.Player!.InventoryManager!.RemoveItems(removeList.Select(x => (x.ItemId, x.Count, x.UniqueId)) .ToList()); diff --git a/Command/Command/Cmd/CommandGive.cs b/Command/Command/Cmd/CommandGive.cs index d3ec3740..7da35f70 100644 --- a/Command/Command/Cmd/CommandGive.cs +++ b/Command/Command/Cmd/CommandGive.cs @@ -1,6 +1,4 @@ using EggLink.DanhengServer.Data; -using EggLink.DanhengServer.GameServer.Game.Avatar; -using EggLink.DanhengServer.GameServer.Game.Lineup; using EggLink.DanhengServer.Internationalization; namespace EggLink.DanhengServer.Command.Command.Cmd; diff --git a/Command/Command/Cmd/CommandGiveall.cs b/Command/Command/Cmd/CommandGiveall.cs index 862c9d7a..a88d2d44 100644 --- a/Command/Command/Cmd/CommandGiveall.cs +++ b/Command/Command/Cmd/CommandGiveall.cs @@ -306,7 +306,8 @@ public class CommandGiveall : ICommand if (player.AvatarManager!.GetFormalAvatar(multiPathAvatar.BaseAvatarID) == null) { await player.InventoryManager!.AddItem(multiPathAvatar.BaseAvatarID, 1, false, sync: false); - player.AvatarManager!.GetFormalAvatar(multiPathAvatar.BaseAvatarID)!.Level = Math.Max(Math.Min(1, 80), 0); + player.AvatarManager!.GetFormalAvatar(multiPathAvatar.BaseAvatarID)!.Level = + Math.Max(Math.Min(1, 80), 0); player.AvatarManager!.GetFormalAvatar(multiPathAvatar.BaseAvatarID)!.Promotion = GameData.GetMinPromotionForLevel(Math.Max(Math.Min(1, 80), 0)); player.AvatarManager!.GetFormalAvatar(multiPathAvatar.BaseAvatarID)!.GetCurPathInfo().Rank = diff --git a/Command/Command/Cmd/CommandHero.cs b/Command/Command/Cmd/CommandHero.cs index 732d9953..494918e0 100644 --- a/Command/Command/Cmd/CommandHero.cs +++ b/Command/Command/Cmd/CommandHero.cs @@ -1,5 +1,4 @@ using EggLink.DanhengServer.Enums.Avatar; -using EggLink.DanhengServer.GameServer.Server.Packet.Send.Player; using EggLink.DanhengServer.Internationalization; using EggLink.DanhengServer.Proto; diff --git a/Command/Command/Cmd/CommandLineup.cs b/Command/Command/Cmd/CommandLineup.cs index 0b7b0d3e..7ef8a35d 100644 --- a/Command/Command/Cmd/CommandLineup.cs +++ b/Command/Command/Cmd/CommandLineup.cs @@ -30,7 +30,8 @@ public class CommandLineup : ICommand } var player = arg.Target.Player!; - foreach (var avatar in player.LineupManager!.GetCurLineup()!.AvatarData!.FormalAvatars) avatar.CurrentHp = 10000; + foreach (var avatar in player.LineupManager!.GetCurLineup()!.AvatarData!.FormalAvatars) + avatar.CurrentHp = 10000; await player.SendPacket(new PacketSyncLineupNotify(player.LineupManager.GetCurLineup()!)); await arg.SendMsg(I18NManager.Translate("Game.Command.Lineup.HealedAllAvatars")); } diff --git a/Command/Command/Cmd/CommandScene.cs b/Command/Command/Cmd/CommandScene.cs index d04bcbf1..ba4aae05 100644 --- a/Command/Command/Cmd/CommandScene.cs +++ b/Command/Command/Cmd/CommandScene.cs @@ -187,7 +187,9 @@ public class CommandScene : ICommand curDistance = distance; } } + if (nearest != null) - await arg.SendMsg($"Nearest Prop {nearest.EntityId}: PropId {nearest.PropInfo.ID}, GroupId {nearest.GroupID}, State {nearest.State}"); + await arg.SendMsg( + $"Nearest Prop {nearest.EntityId}: PropId {nearest.PropInfo.ID}, GroupId {nearest.GroupID}, State {nearest.State}"); } } \ No newline at end of file diff --git a/Common/Configuration/ConfigContainer.cs b/Common/Configuration/ConfigContainer.cs index 6b7eb7aa..6dfc6b45 100644 --- a/Common/Configuration/ConfigContainer.cs +++ b/Common/Configuration/ConfigContainer.cs @@ -108,7 +108,9 @@ public class ServerProfile public int HeadIcon { get; set; } = 200105; public int ChatBubbleId { get; set; } = 220001; public int PersonalCardId { get; set; } = 253001; - public List AssistInfo { get; set; } = [ + + public List AssistInfo { get; set; } = + [ new() { AvatarId = 1213, Level = 80 } ]; } diff --git a/Common/Data/Config/Task/AdvModifyMaxMazeMP.cs b/Common/Data/Config/Task/AdvModifyMaxMazeMP.cs index 10487488..587a393c 100644 --- a/Common/Data/Config/Task/AdvModifyMaxMazeMP.cs +++ b/Common/Data/Config/Task/AdvModifyMaxMazeMP.cs @@ -8,5 +8,6 @@ public class AdvModifyMaxMazeMP : TaskConfigInfo { [JsonConverter(typeof(StringEnumConverter))] public PropertyModifyFunctionEnum ModifyFunction { get; set; } + public DynamicFloat ModifyValue { get; set; } } \ No newline at end of file diff --git a/Common/Data/Config/Task/ByAnd.cs b/Common/Data/Config/Task/ByAnd.cs index fe142813..e5739564 100644 --- a/Common/Data/Config/Task/ByAnd.cs +++ b/Common/Data/Config/Task/ByAnd.cs @@ -5,6 +5,7 @@ namespace EggLink.DanhengServer.Data.Config.Task; public class ByAnd : PredicateConfigInfo { public List PredicateList { get; set; } = []; + public new static PredicateConfigInfo LoadFromJsonObject(JObject obj) { var info = new ByAnd diff --git a/Common/Data/Excel/AvatarDemoConfigExcel.cs b/Common/Data/Excel/AvatarDemoConfigExcel.cs index 3d7d76b2..2313e713 100644 --- a/Common/Data/Excel/AvatarDemoConfigExcel.cs +++ b/Common/Data/Excel/AvatarDemoConfigExcel.cs @@ -1,5 +1,4 @@ using System.Text.Json.Serialization; -using EggLink.DanhengServer.Database.Avatar; namespace EggLink.DanhengServer.Data.Excel; diff --git a/Common/Data/Excel/MazeSkillExcel.cs b/Common/Data/Excel/MazeSkillExcel.cs index 7b631df7..5a874d51 100644 --- a/Common/Data/Excel/MazeSkillExcel.cs +++ b/Common/Data/Excel/MazeSkillExcel.cs @@ -1,6 +1,6 @@ namespace EggLink.DanhengServer.Data.Excel; -[ResourceEntity("MazeSkill.json,MazeSkillLD.json",isMultifile:true)] +[ResourceEntity("MazeSkill.json,MazeSkillLD.json", true)] public class MazeSkillExcel : ExcelResource { public int MazeSkillId { get; set; } diff --git a/Common/Data/Excel/MultiplePathAvatarConfigExcel.cs b/Common/Data/Excel/MultiplePathAvatarConfigExcel.cs index 577dad02..3f66cc35 100644 --- a/Common/Data/Excel/MultiplePathAvatarConfigExcel.cs +++ b/Common/Data/Excel/MultiplePathAvatarConfigExcel.cs @@ -13,6 +13,7 @@ public class MultiplePathAvatarConfigExcel : ExcelResource [JsonConverter(typeof(StringEnumConverter))] public GenderTypeEnum Gender { get; set; } + public int AvatarID { get; set; } public int BaseAvatarID { get; set; } diff --git a/Common/Data/Excel/RogueTalkNameConfigExcel.cs b/Common/Data/Excel/RogueTalkNameConfigExcel.cs index df2435a0..1e88a350 100644 --- a/Common/Data/Excel/RogueTalkNameConfigExcel.cs +++ b/Common/Data/Excel/RogueTalkNameConfigExcel.cs @@ -5,7 +5,7 @@ public class RogueTalkNameConfigExcel : ExcelResource { public int TalkNameID { get; set; } public HashName Name { get; set; } = new(); - + public override int GetId() { return TalkNameID; diff --git a/Common/Data/Excel/SpecialAvatarExcel.cs b/Common/Data/Excel/SpecialAvatarExcel.cs index fd8487c9..14df64db 100644 --- a/Common/Data/Excel/SpecialAvatarExcel.cs +++ b/Common/Data/Excel/SpecialAvatarExcel.cs @@ -1,8 +1,4 @@ -using EggLink.DanhengServer.Database; -using EggLink.DanhengServer.Database.Avatar; -using EggLink.DanhengServer.Database.Inventory; -using EggLink.DanhengServer.Database.Player; -using EggLink.DanhengServer.Enums.Avatar; +using EggLink.DanhengServer.Enums.Avatar; using Newtonsoft.Json; using Newtonsoft.Json.Converters; diff --git a/Common/Data/Excel/SummonUnitDataExcel.cs b/Common/Data/Excel/SummonUnitDataExcel.cs index 23d27735..374cd393 100644 --- a/Common/Data/Excel/SummonUnitDataExcel.cs +++ b/Common/Data/Excel/SummonUnitDataExcel.cs @@ -13,6 +13,7 @@ public class SummonUnitDataExcel : ExcelResource [JsonConverter(typeof(StringEnumConverter))] public SummonUnitUniqueGroupEnum UniqueGroup { get; set; } + public bool DestroyOnEnterBattle { get; set; } public bool RemoveMazeBuffOnDestroy { get; set; } diff --git a/Common/Data/GameData.cs b/Common/Data/GameData.cs index 2c982378..e82f2682 100644 --- a/Common/Data/GameData.cs +++ b/Common/Data/GameData.cs @@ -14,19 +14,6 @@ namespace EggLink.DanhengServer.Data; public static class GameData { - #region Activity - - public static ActivityConfig ActivityConfig { get; set; } = new(); - - #region Marble - - public static Dictionary MarbleMatchInfoData { get; private set; } = []; - public static Dictionary MarbleSealData { get; private set; } = []; - - #endregion - - #endregion - #region Banners public static BannersConfig BannersConfig { get; set; } = new(); @@ -45,6 +32,19 @@ public static class GameData #endregion + #region Activity + + public static ActivityConfig ActivityConfig { get; set; } = new(); + + #region Marble + + public static Dictionary MarbleMatchInfoData { get; private set; } = []; + public static Dictionary MarbleSealData { get; private set; } = []; + + #endregion + + #endregion + #region Avatar public static Dictionary AvatarConfigData { get; private set; } = []; @@ -269,8 +269,16 @@ public static class GameData public static Dictionary RogueBuffData { get; private set; } = []; public static Dictionary RogueBuffGroupData { get; private set; } = []; public static Dictionary RogueHandBookEventData { get; private set; } = []; - public static Dictionary RogueDialogueOptionDisplayData { get; private set; } = []; - public static Dictionary RogueDialogueDynamicDisplayData { get; private set; } = []; + + public static Dictionary + RogueDialogueOptionDisplayData { get; private set; } = []; + + public static Dictionary RogueDialogueDynamicDisplayData + { + get; + private set; + } = []; + public static Dictionary RogueHandbookMiracleData { get; private set; } = []; public static Dictionary RogueManagerData { get; private set; } = []; public static Dictionary> RogueMapData { get; private set; } = []; diff --git a/Common/Database/Avatar/AvatarData.cs b/Common/Database/Avatar/AvatarData.cs index 47f20b00..faced437 100644 --- a/Common/Database/Avatar/AvatarData.cs +++ b/Common/Database/Avatar/AvatarData.cs @@ -2,11 +2,9 @@ using EggLink.DanhengServer.Data.Excel; using EggLink.DanhengServer.Database.Inventory; using EggLink.DanhengServer.Database.Player; -using EggLink.DanhengServer.Proto; -using Newtonsoft.Json; -using SqlSugar; -using System.IO; using EggLink.DanhengServer.Enums.Avatar; +using EggLink.DanhengServer.Proto; +using SqlSugar; using LineupInfo = EggLink.DanhengServer.Database.Lineup.LineupInfo; namespace EggLink.DanhengServer.Database.Avatar; @@ -28,7 +26,7 @@ public class AvatarData : BaseDatabaseDataHelper public abstract class BaseAvatarInfo { public int BaseAvatarId { get; set; } - public int AvatarId { get; set; } // special avatar id / base avatar id + public int AvatarId { get; set; } // special avatar id / base avatar id public int Promotion { get; set; } public int Level { get; set; } public int CurrentHp { get; set; } = 10000; @@ -80,7 +78,8 @@ public abstract class BaseAvatarInfo public abstract BattleAvatar ToBattleProto(PlayerDataCollection collection, AvatarType avatarType = AvatarType.AvatarFormalType); - public abstract LineupAvatar ToLineupInfo(int slot, LineupInfo info, AvatarType avatarType = AvatarType.AvatarFormalType); + public abstract LineupAvatar ToLineupInfo(int slot, LineupInfo info, + AvatarType avatarType = AvatarType.AvatarFormalType); public abstract Proto.Avatar ToProto(); } @@ -97,10 +96,7 @@ public class FormalAvatarInfo : BaseAvatarInfo // TODO add skills BaseAvatarId = baseAvatarId; AvatarId = avatarId; - if (addSkills) - { - CheckPathSkillTree(); - } + if (addSkills) CheckPathSkillTree(); } public int Exp { get; set; } @@ -181,7 +177,8 @@ public class FormalAvatarInfo : BaseAvatarInfo return proto; } - public override LineupAvatar ToLineupInfo(int slot, LineupInfo info, AvatarType avatarType = AvatarType.AvatarFormalType) + public override LineupAvatar ToLineupInfo(int slot, LineupInfo info, + AvatarType avatarType = AvatarType.AvatarFormalType) { return new LineupAvatar { @@ -352,9 +349,8 @@ public class SpecialAvatarInfo : BaseAvatarInfo public void CheckLevel(int worldLevel) { if (!GameData.SpecialAvatarData.TryGetValue(AvatarId * 10 + worldLevel, out var specialAvatar)) - { - if (!GameData.SpecialAvatarData.TryGetValue(AvatarId * 10 + 1, out specialAvatar)) return; - } + if (!GameData.SpecialAvatarData.TryGetValue(AvatarId * 10 + 1, out specialAvatar)) + return; Level = specialAvatar.Level; Promotion = specialAvatar.Promotion; @@ -398,7 +394,8 @@ public class SpecialAvatarInfo : BaseAvatarInfo return proto; } - public override LineupAvatar ToLineupInfo(int slot, LineupInfo info, AvatarType avatarType = AvatarType.AvatarFormalType) + public override LineupAvatar ToLineupInfo(int slot, LineupInfo info, + AvatarType avatarType = AvatarType.AvatarFormalType) { return new LineupAvatar { diff --git a/Common/Database/Friend/FriendData.cs b/Common/Database/Friend/FriendData.cs index 993f6ae0..b2b8d7ef 100644 --- a/Common/Database/Friend/FriendData.cs +++ b/Common/Database/Friend/FriendData.cs @@ -5,13 +5,12 @@ namespace EggLink.DanhengServer.Database.Friend; [SugarTable("Friend")] public class FriendData : BaseDatabaseDataHelper { - [SugarColumn(IsJson = true, ColumnDataType = "TEXT")] public Dictionary FriendDetailList { get; set; } = []; [SugarColumn(IsJson = true, ColumnDataType = "TEXT")] - public List FriendList { get; set; } = []; // leave for compatibility + public List FriendList { get; set; } = []; // leave for compatibility [SugarColumn(IsJson = true)] public List BlackList { get; set; } = []; diff --git a/Common/Database/Lineup/LineupData.cs b/Common/Database/Lineup/LineupData.cs index 6aeb020e..8a238bd7 100644 --- a/Common/Database/Lineup/LineupData.cs +++ b/Common/Database/Lineup/LineupData.cs @@ -1,5 +1,4 @@ using System.ComponentModel; -using EggLink.DanhengServer.Data; using EggLink.DanhengServer.Database.Avatar; using EggLink.DanhengServer.Database.Quests; using EggLink.DanhengServer.Proto; @@ -43,18 +42,13 @@ public class LineupInfo { var result = false; if (BaseAvatars != null && AvatarData != null) - { foreach (var avatar in BaseAvatars) { BaseAvatarInfo? avatarInfo; if (avatar.SpecialAvatarId > 0) - { avatarInfo = AvatarData?.TrialAvatars?.Find(item => item.SpecialAvatarId == avatar.SpecialAvatarId); - } else - { avatarInfo = AvatarData?.FormalAvatars?.Find(item => item.BaseAvatarId == avatar.BaseAvatarId); - } if (avatarInfo != null) { @@ -66,7 +60,6 @@ public class LineupInfo result = true; } } - } return result; } @@ -79,13 +72,9 @@ public class LineupInfo { BaseAvatarInfo? avatarInfo; if (avatar.SpecialAvatarId > 0) - { avatarInfo = AvatarData?.TrialAvatars?.Find(item => item.SpecialAvatarId == avatar.SpecialAvatarId); - } else - { avatarInfo = AvatarData?.FormalAvatars?.Find(item => item.BaseAvatarId == avatar.BaseAvatarId); - } if (avatarInfo != null) { @@ -107,13 +96,9 @@ public class LineupInfo { BaseAvatarInfo? avatarInfo; if (avatar.SpecialAvatarId > 0) - { avatarInfo = AvatarData?.TrialAvatars?.Find(item => item.SpecialAvatarId == avatar.SpecialAvatarId); - } else - { avatarInfo = AvatarData?.FormalAvatars?.Find(item => item.BaseAvatarId == avatar.BaseAvatarId); - } if (avatarInfo != null) { @@ -165,12 +150,14 @@ public class LineupInfo } else if (avatar.SpecialAvatarId != 0) // special avatar { - info.AvatarList.Add(AvatarData?.TrialAvatars?.Find(item => item.SpecialAvatarId == avatar.SpecialAvatarId) + info.AvatarList.Add(AvatarData?.TrialAvatars + ?.Find(item => item.SpecialAvatarId == avatar.SpecialAvatarId) ?.ToLineupInfo(BaseAvatars.IndexOf(avatar), this, AvatarType.AvatarTrialType)); } else // normal avatar { - info.AvatarList.Add(AvatarData?.FormalAvatars?.Find(item => item.BaseAvatarId == avatar.BaseAvatarId) + info.AvatarList.Add(AvatarData?.FormalAvatars + ?.Find(item => item.BaseAvatarId == avatar.BaseAvatarId) ?.ToLineupInfo(BaseAvatars.IndexOf(avatar), this)); } diff --git a/Common/Database/Player/PlayerData.cs b/Common/Database/Player/PlayerData.cs index 3666a2df..a14be156 100644 --- a/Common/Database/Player/PlayerData.cs +++ b/Common/Database/Player/PlayerData.cs @@ -131,7 +131,7 @@ public class PlayerData : BaseDatabaseDataHelper } foreach (var avatar in instance.AssistAvatars.Select( - assist => instance.FormalAvatars.Find(x => x.AvatarId == assist)!)) + assist => instance.FormalAvatars.Find(x => x.AvatarId == assist)!)) if (avatar != null) info.AssistSimpleInfoList.Add(new AssistSimpleInfo { @@ -184,17 +184,17 @@ public class PlayerData : BaseDatabaseDataHelper var pos = 0; foreach (var avatar in avatarInfo.AssistAvatars.Select(assist => - avatarInfo.FormalAvatars.Find(x => x.AvatarId == assist))) + avatarInfo.FormalAvatars.Find(x => x.AvatarId == assist))) if (avatar != null) info.AssistAvatarList.Add(avatar.ToDetailProto(pos++, - new PlayerDataCollection(this, inventoryInfo, new()))); + new PlayerDataCollection(this, inventoryInfo, new LineupInfo()))); pos = 0; foreach (var avatar in avatarInfo.DisplayAvatars.Select(display => - avatarInfo.FormalAvatars.Find(x => x.AvatarId == display))) + avatarInfo.FormalAvatars.Find(x => x.AvatarId == display))) if (avatar != null) info.DisplayAvatarList.Add(avatar.ToDetailProto(pos++, - new PlayerDataCollection(this, inventoryInfo, new()))); + new PlayerDataCollection(this, inventoryInfo, new LineupInfo()))); return info; } diff --git a/Common/Enums/Avatar/GenderTypeEnum.cs b/Common/Enums/Avatar/GenderTypeEnum.cs index a56d1ac7..34d5efeb 100644 --- a/Common/Enums/Avatar/GenderTypeEnum.cs +++ b/Common/Enums/Avatar/GenderTypeEnum.cs @@ -4,5 +4,5 @@ public enum GenderTypeEnum { GENDER_NONE = 0, GENDER_MAN = 1, - GENDER_WOMAN = 2, + GENDER_WOMAN = 2 } \ No newline at end of file diff --git a/DanhengKcpSharp/DanhengConnection.cs b/DanhengKcpSharp/DanhengConnection.cs index 87b0b0e3..4008179a 100644 --- a/DanhengKcpSharp/DanhengConnection.cs +++ b/DanhengKcpSharp/DanhengConnection.cs @@ -18,7 +18,8 @@ public class DanhengConnection public static readonly ConcurrentBag IgnoreLog = [ CmdIds.PlayerHeartBeatCsReq, CmdIds.PlayerHeartBeatScRsp, CmdIds.SceneEntityMoveCsReq, - CmdIds.SceneEntityMoveScRsp, CmdIds.GetShopListCsReq, CmdIds.GetShopListScRsp, CmdIds.FightHeartBeatCsReq, CmdIds.FightHeartBeatScRsp + CmdIds.SceneEntityMoveScRsp, CmdIds.GetShopListCsReq, CmdIds.GetShopListScRsp, CmdIds.FightHeartBeatCsReq, + CmdIds.FightHeartBeatScRsp ]; protected readonly CancellationTokenSource CancelToken; diff --git a/GameServer/Game/Avatar/AvatarManager.cs b/GameServer/Game/Avatar/AvatarManager.cs index 99d58f4f..f85c9629 100644 --- a/GameServer/Game/Avatar/AvatarManager.cs +++ b/GameServer/Game/Avatar/AvatarManager.cs @@ -73,7 +73,7 @@ public class AvatarManager(PlayerInstance player) : BasePlayerManager(player) AvatarId = excel.AvatarID, BaseAvatarId = excel.AvatarID, Level = excel.Level, - Promotion = excel.Promotion, + Promotion = excel.Promotion }; avatar.PathInfos.Add(excel.AvatarID, new PathInfo(excel.AvatarID) diff --git a/GameServer/Game/Battle/BattleInstance.cs b/GameServer/Game/Battle/BattleInstance.cs index 1b9bfb94..5b2204e9 100644 --- a/GameServer/Game/Battle/BattleInstance.cs +++ b/GameServer/Game/Battle/BattleInstance.cs @@ -222,7 +222,8 @@ public class BattleInstance(PlayerInstance player, LineupInfo lineup, List { diff --git a/GameServer/Game/Battle/MazeBuff.cs b/GameServer/Game/Battle/MazeBuff.cs index 78e8d974..868a0e2b 100644 --- a/GameServer/Game/Battle/MazeBuff.cs +++ b/GameServer/Game/Battle/MazeBuff.cs @@ -10,9 +10,7 @@ public class MazeBuff(int buffID, int buffLevel, int owner) Duration = buff.Duration; OwnerAvatarId = buff.OwnerAvatarId; foreach (var buffDynamicValue in buff.DynamicValues) - { DynamicValues.Add(buffDynamicValue.Key, buffDynamicValue.Value); - } } public int BuffID { get; } = buffID; diff --git a/GameServer/Game/Battle/SceneSkillManager.cs b/GameServer/Game/Battle/SceneSkillManager.cs index fd454f32..bc7e388e 100644 --- a/GameServer/Game/Battle/SceneSkillManager.cs +++ b/GameServer/Game/Battle/SceneSkillManager.cs @@ -55,10 +55,7 @@ public class SceneSkillManager(PlayerInstance player) : BasePlayerManager(player attackEntity, targetEntities, req); // check if avatar execute - if (attackEntity is AvatarSceneInfo) - { - await Player.SceneInstance!.OnUseSkill(req); - } + if (attackEntity is AvatarSceneInfo) await Player.SceneInstance!.OnUseSkill(req); return new SkillResultData(Retcode.RetSucc, res.Instance, res.BattleInfos); } diff --git a/GameServer/Game/Friend/FriendManager.cs b/GameServer/Game/Friend/FriendManager.cs index fe08d316..1506edf8 100644 --- a/GameServer/Game/Friend/FriendManager.cs +++ b/GameServer/Game/Friend/FriendManager.cs @@ -53,9 +53,9 @@ public class FriendManager(PlayerInstance player) : BasePlayerManager(player) if (target.BlackList.Contains(Player.Uid)) return null; FriendData.ReceiveApplyList.Remove(targetUid); - FriendData.FriendDetailList.Add(targetUid, new()); + FriendData.FriendDetailList.Add(targetUid, new FriendDetailData()); target.SendApplyList.Remove(Player.Uid); - target.FriendDetailList.Add(Player.Uid, new()); + target.FriendDetailList.Add(Player.Uid, new FriendDetailData()); var targetPlayer = Listener.GetActiveConnection(targetUid); if (targetPlayer != null) @@ -183,13 +183,10 @@ public class FriendManager(PlayerInstance player) : BasePlayerManager(player) { var proto = new PacketRevcMsgScNotify((uint)recvUid, (uint)sendUid, info); await Player.SendPacket(proto); - + // receive message var recvPlayer = Listener.GetActiveConnection(recvUid)?.Player; - if (recvPlayer != null) - { - await recvPlayer.FriendManager!.ReceiveInviteMessage(sendUid, recvUid, info); - } + if (recvPlayer != null) await recvPlayer.FriendManager!.ReceiveInviteMessage(sendUid, recvUid, info); } public async ValueTask ReceiveMessage(int sendUid, int recvUid, string? message = null, int? extraId = null) @@ -365,7 +362,7 @@ public class FriendManager(PlayerInstance player) : BasePlayerManager(player) var status = Listener.GetActiveConnection(player.Uid) == null ? FriendOnlineStatus.Offline : FriendOnlineStatus.Online; - var friend = GetFriendDetailData(player.Uid) ?? new(); + var friend = GetFriendDetailData(player.Uid) ?? new FriendDetailData(); proto.FriendList.Add(new FriendSimpleInfo { diff --git a/GameServer/Game/Lineup/LineupManager.cs b/GameServer/Game/Lineup/LineupManager.cs index b2e24eff..e855e5bd 100644 --- a/GameServer/Game/Lineup/LineupManager.cs +++ b/GameServer/Game/Lineup/LineupManager.cs @@ -3,7 +3,6 @@ using EggLink.DanhengServer.Database; using EggLink.DanhengServer.Database.Avatar; using EggLink.DanhengServer.Database.Lineup; using EggLink.DanhengServer.GameServer.Game.Player; -using EggLink.DanhengServer.GameServer.Game.Scene; using EggLink.DanhengServer.GameServer.Server.Packet.Send.Lineup; using EggLink.DanhengServer.GameServer.Server.Packet.Send.Scene; using EggLink.DanhengServer.Proto; @@ -172,7 +171,9 @@ public class LineupManager : BasePlayerManager { BaseAvatarId = trial.BaseAvatarId, SpecialAvatarId = trial.SpecialAvatarId }); } else + { lineup.BaseAvatars!.Add(new LineupAvatarInfo { BaseAvatarId = avatarId }); + } } LineupData.Lineups.Add(index, lineup); @@ -203,7 +204,11 @@ public class LineupManager : BasePlayerManager { Name = "", LineupType = 0, - BaseAvatars = [new LineupAvatarInfo { BaseAvatarId = baseAvatarId, SpecialAvatarId = specialAvatar?.SpecialAvatarID ?? 0 }], + BaseAvatars = + [ + new LineupAvatarInfo + { BaseAvatarId = baseAvatarId, SpecialAvatarId = specialAvatar?.SpecialAvatarID ?? 0 } + ], LineupData = LineupData, AvatarData = Player.AvatarManager!.AvatarData }; @@ -257,7 +262,10 @@ public class LineupManager : BasePlayerManager Name = "", LineupType = 0, BaseAvatars = - [new LineupAvatarInfo { BaseAvatarId = specialAvatar.AvatarID, SpecialAvatarId = specialAvatar.SpecialAvatarID }], + [ + new LineupAvatarInfo + { BaseAvatarId = specialAvatar.AvatarID, SpecialAvatarId = specialAvatar.SpecialAvatarID } + ], LineupData = LineupData, AvatarData = Player.AvatarManager!.AvatarData }; diff --git a/GameServer/Game/Lobby/LobbyRoomInstance.cs b/GameServer/Game/Lobby/LobbyRoomInstance.cs index dedfc512..f9d6cf48 100644 --- a/GameServer/Game/Lobby/LobbyRoomInstance.cs +++ b/GameServer/Game/Lobby/LobbyRoomInstance.cs @@ -18,10 +18,7 @@ public class LobbyRoomInstance(PlayerInstance owner, long roomId, FightGameMode public async ValueTask BroadCastToRoom(BasePacket packet) { - foreach (var player in Players) - { - await player.Player.SendPacket(packet); - } + foreach (var player in Players) await player.Player.SendPacket(packet); } public async ValueTask AddPlayer(PlayerInstance player, List sealList, LobbyCharacterType characterType) @@ -46,10 +43,8 @@ public class LobbyRoomInstance(PlayerInstance owner, long roomId, FightGameMode await BroadCastToRoom(new PacketLobbySyncInfoScNotify(uid, this, LobbyModifyType.QuitLobby)); if (Players.Count == 0) - { // remove from manager ServerUtils.LobbyServerManager.RemoveLobbyRoom(RoomId); - } } public async ValueTask LobbyStartFight() @@ -60,7 +55,7 @@ public class LobbyRoomInstance(PlayerInstance owner, long roomId, FightGameMode if (Players.Count(x => x.CharacterType != LobbyCharacterType.LobbyCharacterWatcher) != 2) return Retcode.RetLobbyRoomPalyerNotReady; - + if (Players.Any(x => x.CharacterType == LobbyCharacterType.LobbyCharacterMember && x.CharacterStatus != LobbyCharacterStatus.Ready)) return Retcode.RetLobbyRoomPalyerNotReady; @@ -73,12 +68,10 @@ public class LobbyRoomInstance(PlayerInstance owner, long roomId, FightGameMode if (leader == null) return Retcode.RetLobbyRoomPalyerFighting; // start fight - foreach (var instance in Players) - { - instance.CharacterStatus = LobbyCharacterStatus.LobbyStartFight; - } + foreach (var instance in Players) instance.CharacterStatus = LobbyCharacterStatus.LobbyStartFight; - await BroadCastToRoom(new PacketLobbySyncInfoScNotify(leader.Player.Uid, this, LobbyModifyType.LobbyStartFight)); + await BroadCastToRoom(new PacketLobbySyncInfoScNotify(leader.Player.Uid, this, + LobbyModifyType.LobbyStartFight)); return Retcode.RetSucc; } @@ -96,10 +89,7 @@ public class LobbyRoomInstance(PlayerInstance owner, long roomId, FightGameMode await BroadCastToRoom(new PacketMultiplayerFightGameStartScNotify(fightRoom)); // start fight - foreach (var instance in Players) - { - instance.CharacterStatus = LobbyCharacterStatus.Fighting; - } + foreach (var instance in Players) instance.CharacterStatus = LobbyCharacterStatus.Fighting; await BroadCastToRoom(new PacketLobbySyncInfoScNotify(0, this, LobbyModifyType.FightStart)); return Retcode.RetSucc; diff --git a/GameServer/Game/Lobby/LobbyServerManager.cs b/GameServer/Game/Lobby/LobbyServerManager.cs index 30c9b32e..f84e30cc 100644 --- a/GameServer/Game/Lobby/LobbyServerManager.cs +++ b/GameServer/Game/Lobby/LobbyServerManager.cs @@ -1,19 +1,19 @@ using EggLink.DanhengServer.GameServer.Game.Player; -using EggLink.DanhengServer.GameServer.Server.Packet.Send.Lobby; using EggLink.DanhengServer.Proto; namespace EggLink.DanhengServer.GameServer.Game.Lobby; /// -/// Server Manager: -/// a manager would be only initialized when the server is started +/// Server Manager: +/// a manager would be only initialized when the server is started /// public class LobbyServerManager { public long CurLobbyRoomId { get; set; } public Dictionary LobbyRoomInstances { get; set; } = []; - public async ValueTask CreateLobbyRoom(PlayerInstance ownerPlayer, int lobbyMode, List sealList) + public async ValueTask CreateLobbyRoom(PlayerInstance ownerPlayer, int lobbyMode, + List sealList) { var roomId = ++CurLobbyRoomId; var room = new LobbyRoomInstance(ownerPlayer, roomId, FightGameMode.Marble, lobbyMode); @@ -31,12 +31,9 @@ public class LobbyServerManager public LobbyRoomInstance? GetPlayerJoinedRoom(int uid) { foreach (var room in LobbyRoomInstances.Values) - { if (room.Players.Any(x => x.Player.Uid == uid)) - { return room; - } - } + return null; } } \ No newline at end of file diff --git a/GameServer/Game/MultiPlayer/MarbleGame/MarbleGamePlayerInstance.cs b/GameServer/Game/MultiPlayer/MarbleGame/MarbleGamePlayerInstance.cs index 5c390f1b..9f191b62 100644 --- a/GameServer/Game/MultiPlayer/MarbleGame/MarbleGamePlayerInstance.cs +++ b/GameServer/Game/MultiPlayer/MarbleGame/MarbleGamePlayerInstance.cs @@ -8,13 +8,6 @@ namespace EggLink.DanhengServer.GameServer.Game.MultiPlayer.MarbleGame; public class MarbleGamePlayerInstance : BaseGamePlayerInstance { - public Dictionary SealList { get; set; } = []; - public MarbleTeamType TeamType { get; set; } - public MarblePlayerPhaseEnum Phase { get; set; } = MarblePlayerPhaseEnum.NotEnter; - public int CurItemId { get; set; } - public int Score { get; set; } - public HashSet AllowMoveSealList { get; set; } = []; - public MarbleGamePlayerInstance(LobbyPlayerInstance lobby, MarbleTeamType type) : base(lobby) { TeamType = type; @@ -54,11 +47,15 @@ public class MarbleGamePlayerInstance : BaseGamePlayerInstance } } + public Dictionary SealList { get; set; } = []; + public MarbleTeamType TeamType { get; set; } + public MarblePlayerPhaseEnum Phase { get; set; } = MarblePlayerPhaseEnum.NotEnter; + public int CurItemId { get; set; } + public int Score { get; set; } + public HashSet AllowMoveSealList { get; set; } = []; + public void ChangeRound() { - foreach (var instance in SealList.Values) - { - AllowMoveSealList.Add(instance.Id); - } + foreach (var instance in SealList.Values) AllowMoveSealList.Add(instance.Id); } } \ No newline at end of file diff --git a/GameServer/Game/MultiPlayer/MarbleGame/MarbleGameRoomInstance.cs b/GameServer/Game/MultiPlayer/MarbleGame/MarbleGameRoomInstance.cs index 54688574..659a9cc3 100644 --- a/GameServer/Game/MultiPlayer/MarbleGame/MarbleGameRoomInstance.cs +++ b/GameServer/Game/MultiPlayer/MarbleGame/MarbleGameRoomInstance.cs @@ -16,12 +16,6 @@ namespace EggLink.DanhengServer.GameServer.Game.MultiPlayer.MarbleGame; public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance { - public MarbleTeamType CurMoveTeamType { get; set; } - public MarbleTeamType FirstMoveTeamType { get; set; } - public int CurRound { get; set; } - public int TurnCount { get; set; } - public long WaitingOperationEndTime { get; set; } - public MarbleGameRoomInstance(long roomId, LobbyRoomInstance parentLobby) : base(roomId, parentLobby) { // random move team type @@ -29,10 +23,33 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance FirstMoveTeamType = CurMoveTeamType; // set player foreach (var player in parentLobby.Players) - { Players.Add(new MarbleGamePlayerInstance(player, (MarbleTeamType)(parentLobby.Players.IndexOf( player) + 1))); - } + } + + public MarbleTeamType CurMoveTeamType { get; set; } + public MarbleTeamType FirstMoveTeamType { get; set; } + public int CurRound { get; set; } + public int TurnCount { get; set; } + public long WaitingOperationEndTime { get; set; } + + public MarbleGameInfo ToProto() + { + return new MarbleGameInfo + { + LobbyBasicInfo = { ParentLobby.Players.Select(x => x.ToProto()) }, + CurActionTeamType = CurMoveTeamType, + LevelId = 100, + TeamAPlayer = (uint)Players[0].LobbyPlayer.Player.Uid, + TeamBPlayer = (uint)Players[1].LobbyPlayer.Player.Uid, + TeamARank = 1, + TeamBRank = 1, + TeamASealList = { (Players[0] as MarbleGamePlayerInstance)!.SealList.Select(x => (uint)x.Value.SealId) }, + TeamBSealList = { (Players[1] as MarbleGamePlayerInstance)!.SealList.Select(x => (uint)x.Value.SealId) }, + PlayerAScore = (uint)(Players[0] as MarbleGamePlayerInstance)!.Score, + PlayerBScore = (uint)(Players[1] as MarbleGamePlayerInstance)!.Score, + ControlByServer = true + }; } @@ -40,18 +57,12 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance public async ValueTask BroadCastToRoom(BasePacket packet) { - foreach (var player in Players) - { - await player.SendPacket(packet); - } + foreach (var player in Players) await player.SendPacket(packet); } public async ValueTask BroadCastToRoomPlayer(BasePacket packet) { - foreach (var player in Players.Where(x => !x.LeaveGame)) - { - await player.LobbyPlayer.Player.SendPacket(packet); - } + foreach (var player in Players.Where(x => !x.LeaveGame)) await player.LobbyPlayer.Player.SendPacket(packet); } public async ValueTask EnterGame(int uid) @@ -60,27 +71,20 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance if (player == null) return; player.EnterGame = true; - if (player is MarbleGamePlayerInstance marblePlayer) - { - marblePlayer.Phase = MarblePlayerPhaseEnum.EnterGame; - } + if (player is MarbleGamePlayerInstance marblePlayer) marblePlayer.Phase = MarblePlayerPhaseEnum.EnterGame; if (Players.All(x => x.EnterGame)) - { // send basic info await BroadCastToRoom(new PacketFightGeneralScNotify(MarbleNetWorkMsgEnum.SyncBatch, MarbleNetWorkMsgEnum.GameStart, this)); - } } public async ValueTask OnPlayerHeartBeat() { var curTime = Extensions.GetUnixMs(); if (WaitingOperationEndTime > 0 && curTime >= WaitingOperationEndTime) - { // timeout await SwitchTurn(); - } } public List CheckPlayerWin() @@ -91,9 +95,7 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance List syncData = []; // win foreach (var player in Players.OfType()) - { syncData.Add(new MarbleGameFinishSyncData(player, player == winPlayer)); - } return syncData; } @@ -148,32 +150,29 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance public async ValueTask LoadFinish(MarbleGamePlayerInstance player) { player.Phase = MarblePlayerPhaseEnum.LoadFinish; - if (Players.OfType().ToList().Where(x => !x.LeaveGame).All(x => x.Phase == MarblePlayerPhaseEnum.LoadFinish)) - { + if (Players.OfType().ToList().Where(x => !x.LeaveGame) + .All(x => x.Phase == MarblePlayerPhaseEnum.LoadFinish)) // next phase (performance) await BroadCastToRoom(new PacketFightGeneralScNotify(MarbleNetWorkMsgEnum.SyncBatch, [new MarblePerformanceSyncData(MarbleNetWorkMsgEnum.SyncNotify)])); - } } public async ValueTask PerformanceFinish(MarbleGamePlayerInstance player) { player.Phase = MarblePlayerPhaseEnum.PerformanceFinish; - if (Players.OfType().ToList().Where(x => !x.LeaveGame).All(x => x.Phase == MarblePlayerPhaseEnum.PerformanceFinish)) - { + if (Players.OfType().ToList().Where(x => !x.LeaveGame) + .All(x => x.Phase == MarblePlayerPhaseEnum.PerformanceFinish)) // next phase (round start) await RoundStart(); - } } public async ValueTask HandleSimulateFinish(MarbleGamePlayerInstance player) { player.Phase = MarblePlayerPhaseEnum.SimulateFinish; - if (Players.OfType().ToList().Where(x => !x.LeaveGame).All(x => x.Phase == MarblePlayerPhaseEnum.SimulateFinish)) - { + if (Players.OfType().ToList().Where(x => !x.LeaveGame) + .All(x => x.Phase == MarblePlayerPhaseEnum.SimulateFinish)) // switch turn await SwitchTurn(); - } } #endregion @@ -185,10 +184,7 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance CurRound++; TurnCount = 0; CurMoveTeamType = FirstMoveTeamType; - foreach (var player in Players.OfType()) - { - player.ChangeRound(); - } + foreach (var player in Players.OfType()) player.ChangeRound(); await BroadCastToRoom(new PacketFightGeneralScNotify(MarbleNetWorkMsgEnum.SyncBatch, [ @@ -214,10 +210,7 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance CurMoveTeamType = CurMoveTeamType == MarbleTeamType.TeamA ? MarbleTeamType.TeamB : MarbleTeamType.TeamA; - foreach (var player in Players.OfType()) - { - player.Phase = MarblePlayerPhaseEnum.Gaming; - } + foreach (var player in Players.OfType()) player.Phase = MarblePlayerPhaseEnum.Gaming; await BroadCastToRoom(new PacketFightGeneralScNotify(MarbleNetWorkMsgEnum.SyncBatch, [ @@ -234,10 +227,7 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance { FirstMoveTeamType = FirstMoveTeamType == MarbleTeamType.TeamA ? MarbleTeamType.TeamB : MarbleTeamType.TeamA; - foreach (var player in Players.OfType()) - { - player.Phase = MarblePlayerPhaseEnum.Gaming; - } + foreach (var player in Players.OfType()) player.Phase = MarblePlayerPhaseEnum.Gaming; await BroadCastToRoom(new PacketFightGeneralScNotify(MarbleNetWorkMsgEnum.SyncBatch, [ @@ -268,10 +258,10 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance var speed = sealExcel.MaxSpeed * rotation; var simulator = new CollisionSimulator( - leftBound: -5.25f, - rightBound: 5.25f, - topBound: 3f, - bottomBound: -3f + -5.25f, + 5.25f, + 3f, + -3f ) { LaunchTeam = itemId / 100 @@ -290,10 +280,9 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance foreach (var sealInst in Players.OfType().SelectMany(x => x.SealList.Values) .Where(x => x.OnStage)) - { simulator.AddBall(sealInst.Id, new Vector2(sealInst.Position.X, sealInst.Position.Y), sealInst.Mass, - sealInst.Size, new Vector2(sealInst.Velocity.X, sealInst.Velocity.Y), hp:sealInst.CurHp, atk:sealInst.Attack); - } + sealInst.Size, new Vector2(sealInst.Velocity.X, sealInst.Velocity.Y), hp: sealInst.CurHp, + atk: sealInst.Attack); syncData.AddRange(Players.OfType().SelectMany(x => x.SealList.Values) .Select(sealInst => new MarbleGameSealActionSyncData(sealInst, MarbleFrameType.ActionStart))); @@ -301,8 +290,7 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance syncData.Add(new MarbleGameSealLaunchStopSyncData(seal, MarbleFrameType.Launch)); simulator.Simulate(); - foreach (var recordRaw in simulator.Records) // process record - { + foreach (var recordRaw in simulator.Records) // process record switch (recordRaw) { case CollisionRecord record: @@ -339,13 +327,11 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance { var velocityBNormal = Vector2.Normalize(record.BallB.Velocity); if (record.BallB.Velocity != Vector2.Zero) - { sealInstB.Rotation = new MarbleSealVector { X = velocityBNormal.X, Y = velocityBNormal.Y }; - } sealInstB.Velocity = new MarbleSealVector { @@ -360,24 +346,20 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance }; if (sealInstB.Id / 100 != sealInst.Id / 100) - { // different teams // do damage to b syncData.AddRange(sealInst.Id / 100 == itemId / 100 ? DoDamage(sealInst, sealInstB, record.Time) // do damage to a : DoDamage(sealInstB, sealInst, record.Time)); - } } syncData.Add(new MarbleGameSealCollisionSyncData(sealInst, record.BallA.Id, record.BallB?.Id ?? 1, record.Time, record.CollisionPos, sealInstB?.Velocity)); if (sealInstB != null) - { syncData.Add(new MarbleGameSealCollisionSyncData(sealInstB, record.BallA.Id, record.BallB?.Id ?? 1, record.Time, record.CollisionPos, sealInst.Velocity)); - } break; } @@ -433,7 +415,6 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance break; } } - } foreach (var ball in simulator.Balls) { @@ -464,21 +445,17 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance await BroadCastToRoom(new PacketFightGeneralScNotify(MarbleNetWorkMsgEnum.SyncBatch, [ new MarbleGameInfoLaunchingSyncData(MarbleNetWorkMsgEnum.SyncNotify, MarbleSyncType.SimulateStart, - simulator.CurTime, itemId, this, syncData), ..winData + simulator.CurTime, itemId, this, syncData), + ..winData ])); - foreach (var p in Players.OfType()) - { - p.Phase = MarblePlayerPhaseEnum.Launching; - } + foreach (var p in Players.OfType()) p.Phase = MarblePlayerPhaseEnum.Launching; - if (winData.Count > 0) - { - await EndGame(); - } + if (winData.Count > 0) await EndGame(); } - public List DoDamage(MarbleGameSealInstance attacker, MarbleGameSealInstance target, float time) + public List DoDamage(MarbleGameSealInstance attacker, MarbleGameSealInstance target, + float time) { List syncData = []; var attackerPlayer = Players.OfType().FirstOrDefault(x => @@ -537,7 +514,7 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance seal.Rotation = new MarbleSealVector { - X = posXBaseValue * -1f, + X = posXBaseValue * -1f }; syncData.RemoveAll(x => x.ToProto().Id == seal.Id); @@ -550,30 +527,28 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance // detect collision with seals anyMove = false; for (var i = 0; i < seals.Count; i++) + for (var j = i + 1; j < seals.Count; j++) { - for (var j = i + 1; j < seals.Count; j++) + var sealA = seals[i]; + var sealB = seals[j]; + + var sealAPos = new Vector2(sealA.Position.X, sealA.Position.Y); + var sealBPos = new Vector2(sealB.Position.X, sealB.Position.Y); + if (!(Vector2.Distance(sealBPos, sealAPos) <= sealA.Size + sealB.Size)) continue; + + anyMove = true; + // move sealB away + var normalVec = Vector2.Normalize(sealBPos - sealAPos); + var moveDistance = sealA.Size + sealB.Size - Vector2.Distance(sealBPos, sealAPos) + 0.1f; + var moveVec = normalVec * moveDistance; + sealB.Position = new MarbleSealVector { - var sealA = seals[i]; - var sealB = seals[j]; + X = sealB.Position.X + moveVec.X, + Y = sealB.Position.Y + moveVec.Y + }; - var sealAPos = new Vector2(sealA.Position.X, sealA.Position.Y); - var sealBPos = new Vector2(sealB.Position.X, sealB.Position.Y); - if (!(Vector2.Distance(sealBPos, sealAPos) <= sealA.Size + sealB.Size)) continue; - - anyMove = true; - // move sealB away - var normalVec = Vector2.Normalize(sealBPos - sealAPos); - var moveDistance = sealA.Size + sealB.Size - Vector2.Distance(sealBPos, sealAPos) + 0.1f; - var moveVec = normalVec * moveDistance; - sealB.Position = new MarbleSealVector - { - X = sealB.Position.X + moveVec.X, - Y = sealB.Position.Y + moveVec.Y - }; - - syncData.RemoveAll(x => x.ToProto().Id == sealB.Id); - syncData.Add(new MarbleGameSealActionSyncData(sealB, MarbleFrameType.Revive, time)); - } + syncData.RemoveAll(x => x.ToProto().Id == sealB.Id); + syncData.Add(new MarbleGameSealActionSyncData(sealB, MarbleFrameType.Revive, time)); } } while (anyMove); @@ -581,23 +556,4 @@ public class MarbleGameRoomInstance : BaseMultiPlayerGameRoomInstance } #endregion - - public MarbleGameInfo ToProto() - { - return new MarbleGameInfo - { - LobbyBasicInfo = { ParentLobby.Players.Select(x => x.ToProto()) }, - CurActionTeamType = CurMoveTeamType, - LevelId = 100, - TeamAPlayer = (uint)Players[0].LobbyPlayer.Player.Uid, - TeamBPlayer = (uint)Players[1].LobbyPlayer.Player.Uid, - TeamARank = 1, - TeamBRank = 1, - TeamASealList = { (Players[0] as MarbleGamePlayerInstance)!.SealList.Select(x => (uint)x.Value.SealId) }, - TeamBSealList = { (Players[1] as MarbleGamePlayerInstance)!.SealList.Select(x => (uint)x.Value.SealId) }, - PlayerAScore = (uint)(Players[0] as MarbleGamePlayerInstance)!.Score, - PlayerBScore = (uint)(Players[1] as MarbleGamePlayerInstance)!.Score, - ControlByServer = true - }; - } } \ No newline at end of file diff --git a/GameServer/Game/MultiPlayer/MarbleGame/Physics/Ball.cs b/GameServer/Game/MultiPlayer/MarbleGame/Physics/Ball.cs index ca540201..3cb929f3 100644 --- a/GameServer/Game/MultiPlayer/MarbleGame/Physics/Ball.cs +++ b/GameServer/Game/MultiPlayer/MarbleGame/Physics/Ball.cs @@ -2,7 +2,15 @@ namespace EggLink.DanhengServer.GameServer.Game.MultiPlayer.MarbleGame.Physics; -public class Ball(int id, Vector2 position, float mass, float radius, Vector2? velocity = null, bool isStatic = false, int hp = 100, int atk = 0) +public class Ball( + int id, + Vector2 position, + float mass, + float radius, + Vector2? velocity = null, + bool isStatic = false, + int hp = 100, + int atk = 0) { public int Id { get; } = id; public Vector2 Position { get; set; } = position; diff --git a/GameServer/Game/MultiPlayer/MarbleGame/Physics/CollisionSimulator.cs b/GameServer/Game/MultiPlayer/MarbleGame/Physics/CollisionSimulator.cs index eaa17c90..90f965da 100644 --- a/GameServer/Game/MultiPlayer/MarbleGame/Physics/CollisionSimulator.cs +++ b/GameServer/Game/MultiPlayer/MarbleGame/Physics/CollisionSimulator.cs @@ -2,10 +2,15 @@ namespace EggLink.DanhengServer.GameServer.Game.MultiPlayer.MarbleGame.Physics; -public class CollisionSimulator(float leftBound, float rightBound, float topBound, float bottomBound, float deceleration = 15f) +public class CollisionSimulator( + float leftBound, + float rightBound, + float topBound, + float bottomBound, + float deceleration = 15f) { - public float Deceleration = deceleration; public const float StepTime = 0.001f; + public float Deceleration = deceleration; public List Balls { get; } = []; public int LaunchTeam { get; set; } = 0; public List Records { get; } = []; @@ -15,7 +20,8 @@ public class CollisionSimulator(float leftBound, float rightBound, float topBoun private float TopBound { get; } = topBound; private float BottomBound { get; } = bottomBound; - public void AddBall(int id, Vector2 position, float mass, float radius, Vector2? velocity = null, bool isStatic = false, int hp = 100, int atk = 0) + public void AddBall(int id, Vector2 position, float mass, float radius, Vector2? velocity = null, + bool isStatic = false, int hp = 100, int atk = 0) { Balls.Add(new Ball(id, position, mass, radius, velocity, isStatic, hp, atk)); } @@ -33,6 +39,7 @@ public class CollisionSimulator(float leftBound, float rightBound, float topBoun ball.Velocity = Vector2.Zero; Records.Add(new StopRecord(CurTime, ball.GetSnapshot())); } + continue; } @@ -79,19 +86,14 @@ public class CollisionSimulator(float leftBound, float rightBound, float topBoun public void CheckBallCollision() { for (var i = 0; i < Balls.Count; i++) + for (var j = i + 1; j < Balls.Count; j++) { - for (var j = i + 1; j < Balls.Count; j++) - { - var ballA = Balls[i]; - var ballB = Balls[j]; - if (ballA.IsStatic || ballB.IsStatic) continue; // skip static balls + var ballA = Balls[i]; + var ballB = Balls[j]; + if (ballA.IsStatic || ballB.IsStatic) continue; // skip static balls - var distance = Vector2.Distance(ballA.Position, ballB.Position); - if (distance <= ballA.Radius + ballB.Radius) - { - HandleBallCollision(ballA, ballB); - } - } + var distance = Vector2.Distance(ballA.Position, ballB.Position); + if (distance <= ballA.Radius + ballB.Radius) HandleBallCollision(ballA, ballB); } } @@ -170,12 +172,13 @@ public class CollisionSimulator(float leftBound, float rightBound, float topBoun while (!AllObjectStopped()) { AdvanceTime(StepTime); - foreach (var ball in Balls.Where(x => x.StageInitialVelocity != Vector2.Zero && x.Velocity.Length() > 0.01f)) + foreach (var ball in Balls.Where(x => + x.StageInitialVelocity != Vector2.Zero && x.Velocity.Length() > 0.01f)) { var speed = ball.Velocity.Length(); if (ball.StageInitialVelocity.Length() / 2 > speed) { - ball.StageInitialVelocity = Vector2.Zero; // avoid infinite loop + ball.StageInitialVelocity = Vector2.Zero; // avoid infinite loop Records.Add(new ChangeSpeedRecord(CurTime, ball.GetSnapshot())); } } diff --git a/GameServer/Game/MultiPlayer/MarbleGame/Physics/PhysicsRecord.cs b/GameServer/Game/MultiPlayer/MarbleGame/Physics/PhysicsRecord.cs index 2b03b1f3..4bcc9c9f 100644 --- a/GameServer/Game/MultiPlayer/MarbleGame/Physics/PhysicsRecord.cs +++ b/GameServer/Game/MultiPlayer/MarbleGame/Physics/PhysicsRecord.cs @@ -3,5 +3,7 @@ namespace EggLink.DanhengServer.GameServer.Game.MultiPlayer.MarbleGame.Physics; public record CollisionRecord(float Time, BallSnapshot BallA, BallSnapshot? BallB, Vector2 CollisionPos); + public record StopRecord(float Time, BallSnapshot Ball); + public record ChangeSpeedRecord(float Time, BallSnapshot Ball); \ No newline at end of file diff --git a/GameServer/Game/MultiPlayer/MarbleGame/Seal/MarbleGameSealSyncData.cs b/GameServer/Game/MultiPlayer/MarbleGame/Seal/MarbleGameSealSyncData.cs index fb0974a7..10adecd9 100644 --- a/GameServer/Game/MultiPlayer/MarbleGame/Seal/MarbleGameSealSyncData.cs +++ b/GameServer/Game/MultiPlayer/MarbleGame/Seal/MarbleGameSealSyncData.cs @@ -8,7 +8,8 @@ public abstract class BaseMarbleGameSyncData public abstract MarbleGameSyncData ToProto(); } -public class MarbleGameScoreSyncData(int playerAScore, int playerBScore, MarbleFrameType frameType) : BaseMarbleGameSyncData +public class MarbleGameScoreSyncData(int playerAScore, int playerBScore, MarbleFrameType frameType) + : BaseMarbleGameSyncData { public override MarbleGameSyncData ToProto() { @@ -21,7 +22,11 @@ public class MarbleGameScoreSyncData(int playerAScore, int playerBScore, MarbleF } } -public class MarbleGameHpChangeSyncData(MarbleGameSealInstance inst, MarbleFrameType frameType, int changeValue, float time = 0f) : MarbleGameSealSyncData(inst, frameType) +public class MarbleGameHpChangeSyncData( + MarbleGameSealInstance inst, + MarbleFrameType frameType, + int changeValue, + float time = 0f) : MarbleGameSealSyncData(inst, frameType) { public override MarbleGameSyncData ToProto() { @@ -38,7 +43,11 @@ public class MarbleGameHpChangeSyncData(MarbleGameSealInstance inst, MarbleFrame } } -public class MarbleGameEffectSyncData(MarbleGameSealInstance inst, MarbleFrameType frameType, int skillId, float time = 0f) : MarbleGameSealSyncData(inst, frameType) +public class MarbleGameEffectSyncData( + MarbleGameSealInstance inst, + MarbleFrameType frameType, + int skillId, + float time = 0f) : MarbleGameSealSyncData(inst, frameType) { public override MarbleGameSyncData ToProto() { @@ -75,7 +84,8 @@ public class MarbleGameSealSyncData(MarbleGameSealInstance inst, MarbleFrameType } } -public class MarbleGameSealActionSyncData(MarbleGameSealInstance inst, MarbleFrameType frameType, float time = 0) : MarbleGameSealSyncData(inst, frameType) +public class MarbleGameSealActionSyncData(MarbleGameSealInstance inst, MarbleFrameType frameType, float time = 0) + : MarbleGameSealSyncData(inst, frameType) { public override MarbleGameSyncData ToProto() { @@ -95,8 +105,8 @@ public class MarbleGameSealActionSyncData(MarbleGameSealInstance inst, MarbleFra } } - -public class MarbleGameSealLaunchStopSyncData(MarbleGameSealInstance inst, MarbleFrameType frameType, float time = 0) : MarbleGameSealSyncData(inst, frameType) +public class MarbleGameSealLaunchStopSyncData(MarbleGameSealInstance inst, MarbleFrameType frameType, float time = 0) + : MarbleGameSealSyncData(inst, frameType) { public override MarbleGameSyncData ToProto() { @@ -115,7 +125,13 @@ public class MarbleGameSealLaunchStopSyncData(MarbleGameSealInstance inst, Marbl } } -public class MarbleGameSealCollisionSyncData(MarbleGameSealInstance inst, int collideOwnerId, int collideTargetId, float time, Vector2 collidePos, MarbleSealVector? targetVelocity) : MarbleGameSealSyncData(inst, MarbleFrameType.Collide) +public class MarbleGameSealCollisionSyncData( + MarbleGameSealInstance inst, + int collideOwnerId, + int collideTargetId, + float time, + Vector2 collidePos, + MarbleSealVector? targetVelocity) : MarbleGameSealSyncData(inst, MarbleFrameType.Collide) { public override MarbleGameSyncData ToProto() { @@ -128,7 +144,8 @@ public class MarbleGameSealCollisionSyncData(MarbleGameSealInstance inst, int co SealPosition = Instance.Position, SealRotation = Instance.Rotation, FrameType = MarbleFrameType.Collide, - CollideType = collideTargetId == 1 ? MarbleFactionType.Field : collideTargetId / 100 == collideOwnerId / 100 ? MarbleFactionType.Ally : MarbleFactionType.Enemy, + CollideType = collideTargetId == 1 ? MarbleFactionType.Field : + collideTargetId / 100 == collideOwnerId / 100 ? MarbleFactionType.Ally : MarbleFactionType.Enemy, CollideOwnerId = (uint)collideOwnerId, CollideTargetId = (uint)collideTargetId, CollisionPosition = new MarbleSealVector diff --git a/GameServer/Game/MultiPlayer/MarbleGame/Sync/MarbleGameFinishSyncData.cs b/GameServer/Game/MultiPlayer/MarbleGame/Sync/MarbleGameFinishSyncData.cs index c097e012..0fe08c89 100644 --- a/GameServer/Game/MultiPlayer/MarbleGame/Sync/MarbleGameFinishSyncData.cs +++ b/GameServer/Game/MultiPlayer/MarbleGame/Sync/MarbleGameFinishSyncData.cs @@ -3,7 +3,8 @@ using EggLink.DanhengServer.Proto; namespace EggLink.DanhengServer.GameServer.Game.MultiPlayer.MarbleGame.Sync; -public class MarbleGameFinishSyncData(MarbleGamePlayerInstance player, bool isWin) : MarbleGameBaseSyncData(MarbleNetWorkMsgEnum.GameFinish) +public class MarbleGameFinishSyncData(MarbleGamePlayerInstance player, bool isWin) + : MarbleGameBaseSyncData(MarbleNetWorkMsgEnum.GameFinish) { public override FightGameInfo ToProto() { diff --git a/GameServer/Game/MultiPlayer/MultiPlayerGameServerManager.cs b/GameServer/Game/MultiPlayer/MultiPlayerGameServerManager.cs index 39b7f2c0..7c589241 100644 --- a/GameServer/Game/MultiPlayer/MultiPlayerGameServerManager.cs +++ b/GameServer/Game/MultiPlayer/MultiPlayerGameServerManager.cs @@ -27,12 +27,8 @@ public class MultiPlayerGameServerManager public BaseMultiPlayerGameRoomInstance? GetPlayerJoinedRoom(int uid) { foreach (var room in Rooms.Values) - { if (room.Players.Any(x => !x.LeaveGame && x.LobbyPlayer.Player.Uid == uid)) - { return room; - } - } return null; } diff --git a/GameServer/Game/Player/PlayerInstance.cs b/GameServer/Game/Player/PlayerInstance.cs index 64bcaa9c..78f02008 100644 --- a/GameServer/Game/Player/PlayerInstance.cs +++ b/GameServer/Game/Player/PlayerInstance.cs @@ -1,5 +1,4 @@ using EggLink.DanhengServer.Data; -using EggLink.DanhengServer.Data.Excel; using EggLink.DanhengServer.Database; using EggLink.DanhengServer.Database.Avatar; using EggLink.DanhengServer.Database.Player; @@ -270,9 +269,7 @@ public class PlayerInstance(PlayerData data) if (info.SpecialAvatarId > 0 && GameData.SpecialAvatarData.TryGetValue(info.SpecialAvatarId * 10 + 0, out var e)) - { AvatarManager!.GetTrialAvatar(e.SpecialAvatarID)?.CheckLevel(Data.WorldLevel); - } } await LoadScene(Data.PlaneId, Data.FloorId, Data.EntryId, Data.Pos!, Data.Rot!, false); @@ -358,7 +355,8 @@ public class PlayerInstance(PlayerData data) // check if avatar is in scene if (SceneInstance != null) { - var avatarScene = SceneInstance.AvatarInfo.Values.FirstOrDefault(x => x.AvatarInfo.BaseAvatarId == baseAvatarId); + var avatarScene = + SceneInstance.AvatarInfo.Values.FirstOrDefault(x => x.AvatarInfo.BaseAvatarId == baseAvatarId); if (avatarScene == null) return; await avatarScene.ClearAllBuff(); diff --git a/GameServer/Game/RogueTourn/RogueTournInstance.cs b/GameServer/Game/RogueTourn/RogueTournInstance.cs index 1ede9400..86cf3221 100644 --- a/GameServer/Game/RogueTourn/RogueTournInstance.cs +++ b/GameServer/Game/RogueTourn/RogueTournInstance.cs @@ -191,7 +191,8 @@ public class RogueTournInstance : BaseRogueInstance { RogueTitanBlessInstance.BlessTypeExcel.Add(bless); TitanType = - GameData.RogueTournTitanTypeData.GetValueOrDefault(bless.TitanType)?.RogueTitanType ?? RogueTitanTypeEnum.None; + GameData.RogueTournTitanTypeData.GetValueOrDefault(bless.TitanType)?.RogueTitanType ?? + RogueTitanTypeEnum.None; } else { diff --git a/GameServer/Game/RogueTourn/Titan/RogueTitanBlessSelectMenu.cs b/GameServer/Game/RogueTourn/Titan/RogueTitanBlessSelectMenu.cs index 89af1f31..cd6b3226 100644 --- a/GameServer/Game/RogueTourn/Titan/RogueTitanBlessSelectMenu.cs +++ b/GameServer/Game/RogueTourn/Titan/RogueTitanBlessSelectMenu.cs @@ -27,11 +27,13 @@ public class RogueTitanBlessSelectMenu(RogueTournInstance rogue) // random 2 types var night = GameData.RogueTournTitanBlessData.Values.Where(x => GameData.RogueTournTitanTypeData.GetValueOrDefault(x.TitanType)?.RogueTitanCategory == - RogueTitanCategoryEnum.Night && x.TitanBlessLevel == 1 && !rogue.RogueTitanBlessInstance.BlessTypeExcel.Contains(x)).ToList().RandomElement(); + RogueTitanCategoryEnum.Night && x.TitanBlessLevel == 1 && + !rogue.RogueTitanBlessInstance.BlessTypeExcel.Contains(x)).ToList().RandomElement(); var day = GameData.RogueTournTitanBlessData.Values.Where(x => GameData.RogueTournTitanTypeData.GetValueOrDefault(x.TitanType)?.RogueTitanCategory == - RogueTitanCategoryEnum.Day && x.TitanBlessLevel == 1 && !rogue.RogueTitanBlessInstance.BlessTypeExcel.Contains(x)).ToList().RandomElement(); + RogueTitanCategoryEnum.Day && x.TitanBlessLevel == 1 && + !rogue.RogueTitanBlessInstance.BlessTypeExcel.Contains(x)).ToList().RandomElement(); list.Add(day); list.Add(night); diff --git a/GameServer/Game/Scene/Entity/EntityMonster.cs b/GameServer/Game/Scene/Entity/EntityMonster.cs index 8e47eeee..b7c26caf 100644 --- a/GameServer/Game/Scene/Entity/EntityMonster.cs +++ b/GameServer/Game/Scene/Entity/EntityMonster.cs @@ -26,7 +26,6 @@ public class EntityMonster( public SceneInstance Scene { get; set; } = scene; public NPCMonsterDataExcel MonsterData { get; set; } = excel; public MonsterInfo Info { get; set; } = info; - public List BuffList { get; set; } = []; public SceneBuff? TempBuff { get; set; } public bool IsAlive { get; private set; } = true; @@ -35,6 +34,7 @@ public class EntityMonster( public int RogueMonsterId { get; set; } = 0; public int CustomLevel { get; set; } = 0; + public List BuffList { get; set; } = []; public int EntityId { get; set; } = 0; public int GroupID { get; set; } = GroupID; diff --git a/GameServer/Game/Scene/Entity/EntitySummonUnit.cs b/GameServer/Game/Scene/Entity/EntitySummonUnit.cs index 5d054425..752a8c7d 100644 --- a/GameServer/Game/Scene/Entity/EntitySummonUnit.cs +++ b/GameServer/Game/Scene/Entity/EntitySummonUnit.cs @@ -16,10 +16,10 @@ public class EntitySummonUnit : IGameEntity public MotionInfo Motion { get; set; } = new(); public List TriggerList { get; set; } = []; + public HashSet CaughtEntityIds { get; set; } = []; public int EntityId { get; set; } public int GroupID { get; set; } = 0; public List BuffList { get; set; } = []; - public HashSet CaughtEntityIds { get; set; } = []; public async ValueTask AddBuff(SceneBuff buff) { diff --git a/GameServer/Game/Scene/SceneEntityLoader.cs b/GameServer/Game/Scene/SceneEntityLoader.cs index ae193fb5..f984d0db 100644 --- a/GameServer/Game/Scene/SceneEntityLoader.cs +++ b/GameServer/Game/Scene/SceneEntityLoader.cs @@ -252,7 +252,7 @@ public class SceneEntityLoader(SceneInstance scene) if (info.IsClientOnly || info.IsDelete || !info.LoadOnInitial) return null; GameData.MazePropData.TryGetValue(info.PropID, out var excel); - if (excel == null) return null; + if (excel == null) return null; var prop = new EntityProp(Scene, excel, group, info); @@ -295,11 +295,8 @@ public class SceneEntityLoader(SceneInstance scene) if (prop.PropInfo.MappingInfoID != 2220) return prop; await prop.SetState(PropStateEnum.Open); } - - if (prop.PropInfo.PropID == 104006) - { - await prop.SetState(PropStateEnum.Open); - } + + if (prop.PropInfo.PropID == 104006) await prop.SetState(PropStateEnum.Open); await Scene.AddEntity(prop, sendPacket); diff --git a/GameServer/Game/Scene/SceneInstance.cs b/GameServer/Game/Scene/SceneInstance.cs index 42b856e4..16446d6e 100644 --- a/GameServer/Game/Scene/SceneInstance.cs +++ b/GameServer/Game/Scene/SceneInstance.cs @@ -2,7 +2,6 @@ using EggLink.DanhengServer.Data.Config.Scene; using EggLink.DanhengServer.Data.Excel; using EggLink.DanhengServer.Database.Avatar; -using EggLink.DanhengServer.Database.Player; using EggLink.DanhengServer.Enums.Avatar; using EggLink.DanhengServer.Enums.Scene; using EggLink.DanhengServer.GameServer.Game.Activity.Loaders; @@ -69,18 +68,12 @@ public class SceneInstance playerGroupInfo.EntityList.Add(avatar.Value.ToProto()); if (playerGroupInfo.EntityList.Count > 0) { - if (LeaderEntityId == 0) - { - LeaderEntityId = AvatarInfo.Values.First().EntityId; - } + if (LeaderEntityId == 0) LeaderEntityId = AvatarInfo.Values.First().EntityId; sceneInfo.LeaderEntityId = (uint)LeaderEntityId; } - foreach (var summonUnit in SummonUnit.Values) - { - playerGroupInfo.EntityList.Add(summonUnit.ToProto()); - } + foreach (var summonUnit in SummonUnit.Values) playerGroupInfo.EntityList.Add(summonUnit.ToProto()); sceneInfo.EntityGroupList.Add(playerGroupInfo); @@ -247,21 +240,21 @@ public class SceneInstance var removeAvatar = new List(); var avatars = Player.LineupManager?.GetAvatarsFromCurTeam() ?? []; foreach (var sceneInfo in oldAvatarInfo) - { - if (avatars.FindIndex(x => x.AvatarInfo.BaseAvatarId == sceneInfo.AvatarInfo.BaseAvatarId) != -1) // avatar still in team + if (avatars.FindIndex(x => x.AvatarInfo.BaseAvatarId == sceneInfo.AvatarInfo.BaseAvatarId) != + -1) // avatar still in team { AvatarInfo.Add(sceneInfo.EntityId, sceneInfo); } - else // avatar leave + else // avatar leave { removeAvatar.Add(sceneInfo); sendPacket = true; } - } - foreach (var avatar in avatars) // check team avatar + foreach (var avatar in avatars) // check team avatar { - if (AvatarInfo.Any(x => x.Value.AvatarInfo.BaseAvatarId == avatar.AvatarInfo.BaseAvatarId)) continue; // avatar already in team + if (AvatarInfo.Any(x => x.Value.AvatarInfo.BaseAvatarId == avatar.AvatarInfo.BaseAvatarId)) + continue; // avatar already in team var avatarInfo = new AvatarSceneInfo(avatar.AvatarInfo, avatar.AvatarType, Player) { // assign entity id @@ -277,10 +270,7 @@ public class SceneInstance { Entities.Remove(avatar.EntityId); - if (avatar is AvatarSceneInfo info) - { - await info.OnDestroyInstance(); - } + if (avatar is AvatarSceneInfo info) await info.OnDestroyInstance(); } foreach (var avatar in addAvatar) Entities.Add(avatar.EntityId, avatar); @@ -317,10 +307,8 @@ public class SceneInstance // get modifier info if (!GameData.AdventureModifierData.TryGetValue(modifier, out var config)) continue; if (config.OnAfterLocalPlayerUseSkill.Count > 0) - { await Player.TaskManager!.AbilityLevelTask.TriggerTasks(avatarAbility, config.OnAfterLocalPlayerUseSkill, entity, [], req, modifier); - } } } } @@ -340,23 +328,18 @@ public class SceneInstance // get modifier info if (!GameData.AdventureModifierData.TryGetValue(modifier, out var config)) continue; if (config.OnUnstage.Count > 0) - { await Player.TaskManager!.AbilityLevelTask.TriggerTasks(avatarAbility, config.OnUnstage, entity, [], new SceneCastSkillCsReq { - CastEntityId = (uint)entity.EntityId, + CastEntityId = (uint)entity.EntityId }, modifier); - } } } } public async ValueTask OnDestroy() { - foreach (var value in AvatarInfo.Values) - { - await value.OnDestroyInstance(); - } + foreach (var value in AvatarInfo.Values) await value.OnDestroyInstance(); } #endregion @@ -382,7 +365,8 @@ public class SceneInstance if (entity.EntityId != 0) return Retcode.RetServerInternalError; entity.EntityId = ++LastEntityId; // get summon unit excel - if (!GameData.SummonUnitDataData.TryGetValue(entity.SummonUnitId, out var summonUnitExcel)) return Retcode.RetMonsterConfigNotExist; + if (!GameData.SummonUnitDataData.TryGetValue(entity.SummonUnitId, out var summonUnitExcel)) + return Retcode.RetMonsterConfigNotExist; IGameEntity? removeEntity = null; // get old summon unit @@ -581,6 +565,10 @@ public class SceneInstance public class AvatarSceneInfo : IGameEntity, IGameModifier { + public BaseAvatarInfo AvatarInfo; + public AvatarType AvatarType; + public PlayerInstance Player; + public AvatarSceneInfo(BaseAvatarInfo avatarInfo, AvatarType avatarType, PlayerInstance player) { AvatarInfo = avatarInfo; @@ -605,10 +593,6 @@ public class AvatarSceneInfo : IGameEntity, IGameModifier } } - public BaseAvatarInfo AvatarInfo; - public AvatarType AvatarType; - public PlayerInstance Player; - public List BuffList { get; set; } = []; public int EntityId { get; set; } @@ -745,17 +729,10 @@ public class AvatarSceneInfo : IGameEntity, IGameModifier public async ValueTask OnDestroyInstance() { - foreach (var modifier in Modifiers.ToArray()) - { - await RemoveModifier(modifier); - } + foreach (var modifier in Modifiers.ToArray()) await RemoveModifier(modifier); foreach (var monsterInfo in Player.SceneInstance!.Entities.OfType().ToArray()) - { - foreach (var buff in monsterInfo.BuffList.Where(x => x.OwnerAvatarId == AvatarInfo.BaseAvatarId).ToArray()) - { - await monsterInfo.RemoveBuff(buff.BuffId); - } - } + foreach (var buff in monsterInfo.BuffList.Where(x => x.OwnerAvatarId == AvatarInfo.BaseAvatarId).ToArray()) + await monsterInfo.RemoveBuff(buff.BuffId); } } \ No newline at end of file diff --git a/GameServer/Game/Task/AvatarTask/AbilityLevelTask.cs b/GameServer/Game/Task/AvatarTask/AbilityLevelTask.cs index bc5e9417..75477ae8 100644 --- a/GameServer/Game/Task/AvatarTask/AbilityLevelTask.cs +++ b/GameServer/Game/Task/AvatarTask/AbilityLevelTask.cs @@ -1,6 +1,7 @@ using EggLink.DanhengServer.Data; using EggLink.DanhengServer.Data.Config; using EggLink.DanhengServer.Data.Config.Task; +using EggLink.DanhengServer.Enums.Avatar; using EggLink.DanhengServer.Enums.RogueMagic; using EggLink.DanhengServer.Enums.Scene; using EggLink.DanhengServer.GameServer.Game.Battle; @@ -12,8 +13,6 @@ using EggLink.DanhengServer.GameServer.Game.Scene.Entity; using EggLink.DanhengServer.GameServer.Server.Packet.Send.Scene; using EggLink.DanhengServer.Proto; using EggLink.DanhengServer.Util; -using System.Threading; -using EggLink.DanhengServer.Enums.Avatar; namespace EggLink.DanhengServer.GameServer.Game.Task.AvatarTask; @@ -27,14 +26,12 @@ public class AbilityLevelTask(PlayerInstance player) List targetEntities) { if (selector is TargetAlias target) - { return target.Alias switch { "Caster" or "ModifierOwnerEntity" => [casterEntity], "ParamEntity" or "AllEnemy" or "AbilityTargetEntity" => targetEntities, - _ => targetEntities, + _ => targetEntities }; - } return []; } @@ -44,14 +41,16 @@ public class AbilityLevelTask(PlayerInstance player) #region Manage public async ValueTask TriggerTasks(AdventureAbilityConfigListInfo abilities, - List tasks, IGameEntity casterEntity, List targetEntities, SceneCastSkillCsReq req, string? modifierName = null) + List tasks, IGameEntity casterEntity, List targetEntities, SceneCastSkillCsReq req, + string? modifierName = null) { BattleInstance? instance = null; List battleInfos = []; foreach (var task in tasks) try { - var res = await TriggerTask(new AbilityLevelParam(abilities, task, casterEntity, targetEntities, req, modifierName)); + var res = await TriggerTask(new AbilityLevelParam(abilities, task, casterEntity, targetEntities, req, + modifierName)); if (res.BattleInfos != null) battleInfos.AddRange(res.BattleInfos); if (res.Instance != null) instance = res.Instance; @@ -104,10 +103,7 @@ public class AbilityLevelTask(PlayerInstance player) if (method != null) { var resp = method.Invoke(this, [param with { Act = predicateTaskList.Predicate }]); - if (resp is not bool res) - { - return new AbilityLevelResult(instance, battleInfos); - } + if (resp is not bool res) return new AbilityLevelResult(instance, battleInfos); res = predicateTaskList.Predicate.Inverse ? !res : res; if (res) @@ -206,9 +202,7 @@ public class AbilityLevelTask(PlayerInstance player) Dictionary dynamic = []; foreach (var dynamicValue in addMazeBuff.DynamicValues) - { dynamic.Add(dynamicValue.Key, dynamicValue.Value.GetValue()); - } if (resp is not List target) return new AbilityLevelResult(instance, battleInfos); @@ -312,7 +306,8 @@ public class AbilityLevelTask(PlayerInstance player) public async ValueTask DestroySummonUnit(AbilityLevelParam param) { - if (param.Act is DestroySummonUnit destroySummonUnit) await Player.SceneInstance!.RemoveSummonUnitById(destroySummonUnit.SummonUnit.SummonUnitID); // TODO + if (param.Act is DestroySummonUnit destroySummonUnit) + await Player.SceneInstance!.RemoveSummonUnitById(destroySummonUnit.SummonUnit.SummonUnitID); // TODO return new AbilityLevelResult(); } @@ -346,9 +341,8 @@ public class AbilityLevelTask(PlayerInstance player) public async ValueTask RemoveSelfModifier(AbilityLevelParam param) { if (param.ModifierName != null) - { - if (param.CasterEntity is IGameModifier mod) await mod.RemoveModifier(param.ModifierName); - } + if (param.CasterEntity is IGameModifier mod) + await mod.RemoveModifier(param.ModifierName); return new AbilityLevelResult(); } @@ -370,7 +364,6 @@ public class AbilityLevelTask(PlayerInstance player) public async ValueTask AdvModifyMaxMazeMP(AbilityLevelParam param) { if (param.Act is AdvModifyMaxMazeMP advModifyMaxMazeMp) - { switch (advModifyMaxMazeMp.ModifyFunction) { case PropertyModifyFunctionEnum.Add: @@ -380,7 +373,6 @@ public class AbilityLevelTask(PlayerInstance player) Player.LineupManager!.LineupData.ExtraMpCount = advModifyMaxMazeMp.ModifyValue.GetValue() - 5; break; } - } return new AbilityLevelResult(); } @@ -479,9 +471,7 @@ public class AbilityLevelTask(PlayerInstance player) public bool AdventureByPlayerCurrentSkillType(AbilityLevelParam param) { if (param.Act is AdventureByPlayerCurrentSkillType byPlayerCurrentSkillType) - { return param.Request.SkillIndex == (uint)byPlayerCurrentSkillType.SkillType; - } return false; } @@ -489,9 +479,7 @@ public class AbilityLevelTask(PlayerInstance player) public bool ByCompareCarryMazebuff(AbilityLevelParam param) { if (param.Act is ByCompareCarryMazebuff byCompareCarryMazebuff) - { return param.CasterEntity.BuffList.Any(x => x.BuffId == byCompareCarryMazebuff.BuffID); - } return false; } @@ -529,4 +517,5 @@ public record AbilityLevelParam( TaskConfigInfo Act, IGameEntity CasterEntity, List TargetEntities, - SceneCastSkillCsReq Request, string? ModifierName); \ No newline at end of file + SceneCastSkillCsReq Request, + string? ModifierName); \ No newline at end of file diff --git a/GameServer/Server/Packet/Recv/Avatar/HandlerSetAvatarEnhancedIdCsReq.cs b/GameServer/Server/Packet/Recv/Avatar/HandlerSetAvatarEnhancedIdCsReq.cs index 16a190eb..be4f207a 100644 --- a/GameServer/Server/Packet/Recv/Avatar/HandlerSetAvatarEnhancedIdCsReq.cs +++ b/GameServer/Server/Packet/Recv/Avatar/HandlerSetAvatarEnhancedIdCsReq.cs @@ -1,5 +1,4 @@ using EggLink.DanhengServer.GameServer.Server.Packet.Send.Avatar; -using EggLink.DanhengServer.GameServer.Server.Packet.Send.PlayerSync; using EggLink.DanhengServer.Kcp; using EggLink.DanhengServer.Proto; diff --git a/GameServer/Server/Packet/Recv/Challenge/HandlerLeaveChallengeCsReq.cs b/GameServer/Server/Packet/Recv/Challenge/HandlerLeaveChallengeCsReq.cs index aacd2748..7b665489 100644 --- a/GameServer/Server/Packet/Recv/Challenge/HandlerLeaveChallengeCsReq.cs +++ b/GameServer/Server/Packet/Recv/Challenge/HandlerLeaveChallengeCsReq.cs @@ -30,7 +30,8 @@ public class HandlerLeaveChallengeCsReq : Handler // Leave scene await player.LineupManager.SetCurLineup(0); // Heal avatars (temproary solution) - foreach (var avatar in player.LineupManager.GetCurLineup()!.AvatarData!.FormalAvatars) avatar.CurrentHp = 10000; + foreach (var avatar in player.LineupManager.GetCurLineup()!.AvatarData!.FormalAvatars) + avatar.CurrentHp = 10000; var leaveEntryId = GameConstants.CHALLENGE_ENTRANCE; if (player.SceneInstance.LeaveEntryId != 0) leaveEntryId = player.SceneInstance.LeaveEntryId; diff --git a/GameServer/Server/Packet/Recv/Chat/HandlerSendMsgCsReq.cs b/GameServer/Server/Packet/Recv/Chat/HandlerSendMsgCsReq.cs index 3334db93..d2de86c0 100644 --- a/GameServer/Server/Packet/Recv/Chat/HandlerSendMsgCsReq.cs +++ b/GameServer/Server/Packet/Recv/Chat/HandlerSendMsgCsReq.cs @@ -19,6 +19,7 @@ public class HandlerSendMsgCsReq : Handler await connection.Player!.FriendManager!.SendMessage(connection.Player!.Uid, (int)req.TargetList[0], null, (int)req.ExtraId); else if (req.MessageType == MsgType.Invite) - await connection.Player!.FriendManager!.SendInviteMessage(connection.Player!.Uid, (int)req.TargetList[0], req.InviteInfo); + await connection.Player!.FriendManager!.SendInviteMessage(connection.Player!.Uid, (int)req.TargetList[0], + req.InviteInfo); } } \ No newline at end of file diff --git a/GameServer/Server/Packet/Recv/EraFlipper/HandlerChangeEraFlipperDataCsReq.cs b/GameServer/Server/Packet/Recv/EraFlipper/HandlerChangeEraFlipperDataCsReq.cs index 8dd34c58..3f318770 100644 --- a/GameServer/Server/Packet/Recv/EraFlipper/HandlerChangeEraFlipperDataCsReq.cs +++ b/GameServer/Server/Packet/Recv/EraFlipper/HandlerChangeEraFlipperDataCsReq.cs @@ -1,13 +1,8 @@ -using EggLink.DanhengServer.Database.Scene; -using EggLink.DanhengServer.Enums.Mission; -using EggLink.DanhengServer.GameServer.Game.Mission; -using EggLink.DanhengServer.GameServer.Game.Scene; -using EggLink.DanhengServer.GameServer.Game.Task; +using EggLink.DanhengServer.Enums.Mission; using EggLink.DanhengServer.GameServer.Server.Packet.Send.EraFlipper; using EggLink.DanhengServer.GameServer.Server.Packet.Send.Scene; using EggLink.DanhengServer.Kcp; using EggLink.DanhengServer.Proto; -using Microsoft.EntityFrameworkCore.Metadata.Internal; namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.EraFlipper; @@ -20,7 +15,8 @@ public class HandlerChangeEraFlipperDataCsReq : Handler var floorId = connection.Player!.SceneInstance!.FloorId; - if (connection.Player.SceneInstance.FloorInfo?.FloorSavedValue.Find(x => x.Name == "FSV_FlashBackCount") != null) + if (connection.Player.SceneInstance.FloorInfo?.FloorSavedValue.Find(x => x.Name == "FSV_FlashBackCount") != + null) { // should save var plane = connection.Player.SceneInstance.PlaneId; @@ -33,8 +29,10 @@ public class HandlerChangeEraFlipperDataCsReq : Handler } value["FSV_FlashBackCount"] = 0; - value["FSV_FlashBackCount"] = value.GetValueOrDefault("FSV_FlashBackCount", 0) + 1; // ParamString[2] is the key - await connection.SendPacket(new PacketUpdateFloorSavedValueNotify("FSV_FlashBackCount", value["FSV_FlashBackCount"], connection.Player)); + value["FSV_FlashBackCount"] = + value.GetValueOrDefault("FSV_FlashBackCount", 0) + 1; // ParamString[2] is the key + await connection.SendPacket(new PacketUpdateFloorSavedValueNotify("FSV_FlashBackCount", + value["FSV_FlashBackCount"], connection.Player)); connection.Player.TaskManager?.SceneTaskTrigger.TriggerFloor(plane, floor); connection.Player.MissionManager?.HandleFinishType(MissionFinishTypeEnum.FloorSavedValue); diff --git a/GameServer/Server/Packet/Recv/Fight/HandlerFightEnterCsReq.cs b/GameServer/Server/Packet/Recv/Fight/HandlerFightEnterCsReq.cs index 1ab673fa..61371bfc 100644 --- a/GameServer/Server/Packet/Recv/Fight/HandlerFightEnterCsReq.cs +++ b/GameServer/Server/Packet/Recv/Fight/HandlerFightEnterCsReq.cs @@ -1,11 +1,9 @@ -using EggLink.DanhengServer.GameServer.Game.MultiPlayer; +using EggLink.DanhengServer.GameServer.Game.MultiPlayer.MarbleGame; using EggLink.DanhengServer.GameServer.Server.Packet.Send.Fight; using EggLink.DanhengServer.Kcp; using EggLink.DanhengServer.Proto; -using EggLink.DanhengServer.Util.Security; using EggLink.DanhengServer.Util; -using System.Security.Cryptography; -using EggLink.DanhengServer.GameServer.Game.MultiPlayer.MarbleGame; +using EggLink.DanhengServer.Util.Security; namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.Fight; @@ -54,9 +52,7 @@ public class HandlerFightEnterCsReq : Handler await connection.SendPacket(new PacketFightEnterScRsp(connection.ClientSecretKeySeed)); if (ConfigManager.Config.GameServer.UsePacketEncryption) - { connection.XorKey = Crypto.GenerateXorKey(connection.ClientSecretKeySeed); - } await marbleGame.EnterGame(player.LobbyPlayer.Player.Uid); } diff --git a/GameServer/Server/Packet/Recv/Fight/HandlerFightHeartBeatCsReq.cs b/GameServer/Server/Packet/Recv/Fight/HandlerFightHeartBeatCsReq.cs index 09ede0ba..e27dc976 100644 --- a/GameServer/Server/Packet/Recv/Fight/HandlerFightHeartBeatCsReq.cs +++ b/GameServer/Server/Packet/Recv/Fight/HandlerFightHeartBeatCsReq.cs @@ -11,10 +11,7 @@ public class HandlerFightHeartBeatCsReq : Handler { var req = FightHeartBeatCsReq.Parser.ParseFrom(data); - if (connection.MarbleRoom != null) - { - await connection.MarbleRoom.OnPlayerHeartBeat(); - } + if (connection.MarbleRoom != null) await connection.MarbleRoom.OnPlayerHeartBeat(); await connection.SendPacket(new PacketFightHeartBeatScRsp(req.ClientTimeMs)); } diff --git a/GameServer/Server/Packet/Recv/Lobby/HandlerLobbyCreateCsReq.cs b/GameServer/Server/Packet/Recv/Lobby/HandlerLobbyCreateCsReq.cs index cf7639d2..cc7a0f15 100644 --- a/GameServer/Server/Packet/Recv/Lobby/HandlerLobbyCreateCsReq.cs +++ b/GameServer/Server/Packet/Recv/Lobby/HandlerLobbyCreateCsReq.cs @@ -1,5 +1,4 @@ -using EggLink.DanhengServer.GameServer.Game.Lobby; -using EggLink.DanhengServer.GameServer.Server.Packet.Send.Lobby; +using EggLink.DanhengServer.GameServer.Server.Packet.Send.Lobby; using EggLink.DanhengServer.Kcp; using EggLink.DanhengServer.Proto; diff --git a/GameServer/Server/Packet/Recv/Lobby/HandlerLobbyJoinCsReq.cs b/GameServer/Server/Packet/Recv/Lobby/HandlerLobbyJoinCsReq.cs index 48d483d1..439384f3 100644 --- a/GameServer/Server/Packet/Recv/Lobby/HandlerLobbyJoinCsReq.cs +++ b/GameServer/Server/Packet/Recv/Lobby/HandlerLobbyJoinCsReq.cs @@ -32,7 +32,8 @@ public class HandlerLobbyJoinCsReq : Handler return; } - await room.AddPlayer(connection.Player!, req.LobbyGameInfo.LobbyMarbleInfo.LobbySealList.Select(x => (int)x).ToList(), + await room.AddPlayer(connection.Player!, + req.LobbyGameInfo.LobbyMarbleInfo.LobbySealList.Select(x => (int)x).ToList(), LobbyCharacterType.LobbyCharacterMember); await connection.SendPacket(new PacketLobbyJoinScRsp(room)); diff --git a/GameServer/Server/Packet/Recv/Match/HandlerGetCrossInfoCsReq.cs b/GameServer/Server/Packet/Recv/Match/HandlerGetCrossInfoCsReq.cs index 9e1e798f..19c92532 100644 --- a/GameServer/Server/Packet/Recv/Match/HandlerGetCrossInfoCsReq.cs +++ b/GameServer/Server/Packet/Recv/Match/HandlerGetCrossInfoCsReq.cs @@ -7,7 +7,7 @@ namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.Match; public class HandlerGetCrossInfoCsReq : Handler { public override async Task OnHandle(Connection connection, byte[] header, byte[] data) - { + { await connection.SendPacket(new PacketGetCrossInfoScRsp()); } } \ No newline at end of file diff --git a/GameServer/Server/Packet/Recv/Player/HandlerPlayerLogoutCsReq.cs b/GameServer/Server/Packet/Recv/Player/HandlerPlayerLogoutCsReq.cs index 5c9899ca..21bd33ce 100644 --- a/GameServer/Server/Packet/Recv/Player/HandlerPlayerLogoutCsReq.cs +++ b/GameServer/Server/Packet/Recv/Player/HandlerPlayerLogoutCsReq.cs @@ -8,10 +8,7 @@ public class HandlerPlayerLogoutCsReq : Handler public override async Task OnHandle(Connection connection, byte[] header, byte[] data) { var room = ServerUtils.LobbyServerManager.GetPlayerJoinedRoom(connection.Player!.Uid); - if (room != null) - { - await room.RemovePlayer(connection.Player.Uid); - } + if (room != null) await room.RemovePlayer(connection.Player.Uid); await connection.SendPacket(CmdIds.PlayerLogoutScRsp); connection.Stop(); diff --git a/GameServer/Server/Packet/Recv/Scene/HandlerRefreshTriggerByClientCsReq.cs b/GameServer/Server/Packet/Recv/Scene/HandlerRefreshTriggerByClientCsReq.cs index 9d96c549..5fe36ee9 100644 --- a/GameServer/Server/Packet/Recv/Scene/HandlerRefreshTriggerByClientCsReq.cs +++ b/GameServer/Server/Packet/Recv/Scene/HandlerRefreshTriggerByClientCsReq.cs @@ -12,7 +12,8 @@ public class HandlerRefreshTriggerByClientCsReq : Handler var req = RefreshTriggerByClientCsReq.Parser.ParseFrom(data); var player = connection.Player!; - var ret = await player.SceneInstance!.TriggerSummonUnit((int)req.TriggerEntityId, req.TriggerName, req.TriggerTargetIdList.ToList()); + var ret = await player.SceneInstance!.TriggerSummonUnit((int)req.TriggerEntityId, req.TriggerName, + req.TriggerTargetIdList.ToList()); await connection.SendPacket(new PacketRefreshTriggerByClientScRsp(ret, req.TriggerName, req.TriggerEntityId)); } diff --git a/GameServer/Server/Packet/Send/Avatar/PacketGetAvatarDataScRsp.cs b/GameServer/Server/Packet/Send/Avatar/PacketGetAvatarDataScRsp.cs index e750b0a2..b9f533fb 100644 --- a/GameServer/Server/Packet/Send/Avatar/PacketGetAvatarDataScRsp.cs +++ b/GameServer/Server/Packet/Send/Avatar/PacketGetAvatarDataScRsp.cs @@ -17,10 +17,7 @@ public class PacketGetAvatarDataScRsp : BasePacket player.PlayerUnlockData!.Skins.Values.ToList().ForEach(skin => proto.SkinList.AddRange(skin.Select(x => (uint)x))); - player.AvatarManager?.AvatarData?.FormalAvatars?.ForEach(avatar => - { - proto.AvatarList.Add(avatar.ToProto()); - }); + player.AvatarManager?.AvatarData?.FormalAvatars?.ForEach(avatar => { proto.AvatarList.Add(avatar.ToProto()); }); foreach (var baseAvatarId in GameData.MultiplePathAvatarConfigData.Values.Select(x => x.BaseAvatarID) .ToHashSet()) @@ -31,10 +28,7 @@ public class PacketGetAvatarDataScRsp : BasePacket proto.CurAvatarPath.Add((uint)avatar.BaseAvatarId, (MultiPathAvatarType)avatar.AvatarId); proto.MultiPathAvatarInfoList.AddRange(avatar.ToAvatarPathProto()); - if (baseAvatarId == 8001) - { - proto.BasicTypeIdList.Add((uint)avatar.AvatarId); - } + if (baseAvatarId == 8001) proto.BasicTypeIdList.Add((uint)avatar.AvatarId); } SetData(proto); diff --git a/GameServer/Server/Packet/Send/Chat/PacketGetChatFriendHistoryScRsp.cs b/GameServer/Server/Packet/Send/Chat/PacketGetChatFriendHistoryScRsp.cs index a233a397..14fa90af 100644 --- a/GameServer/Server/Packet/Send/Chat/PacketGetChatFriendHistoryScRsp.cs +++ b/GameServer/Server/Packet/Send/Chat/PacketGetChatFriendHistoryScRsp.cs @@ -7,18 +7,16 @@ namespace EggLink.DanhengServer.GameServer.Server.Packet.Send.Chat; public class PacketGetChatFriendHistoryScRsp : BasePacket { public PacketGetChatFriendHistoryScRsp(Dictionary history) - : base(CmdIds.GetChatFriendHistoryScRsp) + : base(CmdIds.GetChatFriendHistoryScRsp) { var proto = new GetChatFriendHistoryScRsp(); foreach (var item in history) - { proto.FriendHistoryInfo.Add(new FriendHistoryInfo { ContactSide = (uint)item.Key, LastSendTime = item.Value.MessageList.Last().SendTime }); - } SetData(proto); } diff --git a/GameServer/Server/Packet/Send/Fight/PacketFightGeneralScNotify.cs b/GameServer/Server/Packet/Send/Fight/PacketFightGeneralScNotify.cs index 9051a1c9..817b2a96 100644 --- a/GameServer/Server/Packet/Send/Fight/PacketFightGeneralScNotify.cs +++ b/GameServer/Server/Packet/Send/Fight/PacketFightGeneralScNotify.cs @@ -8,43 +8,52 @@ namespace EggLink.DanhengServer.GameServer.Server.Packet.Send.Fight; public class PacketFightGeneralScNotify : BasePacket { - public PacketFightGeneralScNotify(MarbleNetWorkMsgEnum msgType, MarbleNetWorkMsgEnum syncType, MarbleGameRoomInstance game) : base(CmdIds.FightGeneralScNotify) + public PacketFightGeneralScNotify(MarbleNetWorkMsgEnum msgType, MarbleNetWorkMsgEnum syncType, + MarbleGameRoomInstance game) : base(CmdIds.FightGeneralScNotify) { var proto = new FightGeneralScNotify { NetworkMsgType = (uint)msgType, FightGeneralInfo = new FightGeneralServerInfo { - FightGameInfo = { new FightGameInfo + FightGameInfo = { - MarbleGameInfo = game.ToProto(), - GameMessageType = (uint)syncType - } } + new FightGameInfo + { + MarbleGameInfo = game.ToProto(), + GameMessageType = (uint)syncType + } + } } }; SetData(proto); } - public PacketFightGeneralScNotify(MarbleNetWorkMsgEnum msgType, MarbleNetWorkMsgEnum syncType, FightMarbleSealInfo sealInfo) : base(CmdIds.FightGeneralScNotify) + public PacketFightGeneralScNotify(MarbleNetWorkMsgEnum msgType, MarbleNetWorkMsgEnum syncType, + FightMarbleSealInfo sealInfo) : base(CmdIds.FightGeneralScNotify) { var proto = new FightGeneralScNotify { NetworkMsgType = (uint)msgType, FightGeneralInfo = new FightGeneralServerInfo { - FightGameInfo = { new FightGameInfo + FightGameInfo = { - FightMarbleSealInfo = sealInfo, - GameMessageType = (uint)syncType - } } + new FightGameInfo + { + FightMarbleSealInfo = sealInfo, + GameMessageType = (uint)syncType + } + } } }; SetData(proto); } - public PacketFightGeneralScNotify(MarbleNetWorkMsgEnum msgType, List sync) : base(CmdIds.FightGeneralScNotify) + public PacketFightGeneralScNotify(MarbleNetWorkMsgEnum msgType, List sync) : base( + CmdIds.FightGeneralScNotify) { var proto = new FightGeneralScNotify { diff --git a/GameServer/Server/Packet/Send/Friend/PacketGetFriendRecommendListInfoScRsp.cs b/GameServer/Server/Packet/Send/Friend/PacketGetFriendRecommendListInfoScRsp.cs index 822f3773..4568f84d 100644 --- a/GameServer/Server/Packet/Send/Friend/PacketGetFriendRecommendListInfoScRsp.cs +++ b/GameServer/Server/Packet/Send/Friend/PacketGetFriendRecommendListInfoScRsp.cs @@ -7,14 +7,17 @@ namespace EggLink.DanhengServer.GameServer.Server.Packet.Send.Friend; public class PacketGetFriendRecommendListInfoScRsp : BasePacket { public PacketGetFriendRecommendListInfoScRsp(List friends) - : base(CmdIds.GetFriendRecommendListInfoScRsp) + : base(CmdIds.GetFriendRecommendListInfoScRsp) { var proto = new GetFriendRecommendListInfoScRsp { - PlayerInfoList = { friends.Select(x => new FriendRecommendInfo + PlayerInfoList = { - PlayerInfo = x.ToSimpleProto(FriendOnlineStatus.Online) - })} + friends.Select(x => new FriendRecommendInfo + { + PlayerInfo = x.ToSimpleProto(FriendOnlineStatus.Online) + }) + } }; SetData(proto); diff --git a/GameServer/Server/Packet/Send/Friend/PacketSetFriendRemarkNameScRsp.cs b/GameServer/Server/Packet/Send/Friend/PacketSetFriendRemarkNameScRsp.cs index 1bea1e20..8dc82c15 100644 --- a/GameServer/Server/Packet/Send/Friend/PacketSetFriendRemarkNameScRsp.cs +++ b/GameServer/Server/Packet/Send/Friend/PacketSetFriendRemarkNameScRsp.cs @@ -6,7 +6,7 @@ namespace EggLink.DanhengServer.GameServer.Server.Packet.Send.Friend; public class PacketSetFriendRemarkNameScRsp : BasePacket { public PacketSetFriendRemarkNameScRsp(uint uid, string remarkName) - : base(CmdIds.SetFriendRemarkNameScRsp) + : base(CmdIds.SetFriendRemarkNameScRsp) { var proto = new SetFriendRemarkNameScRsp { diff --git a/GameServer/Server/Packet/Send/Friend/PacketSyncAddBlacklistScNotify.cs b/GameServer/Server/Packet/Send/Friend/PacketSyncAddBlacklistScNotify.cs index c8a9bfdc..7479326e 100644 --- a/GameServer/Server/Packet/Send/Friend/PacketSyncAddBlacklistScNotify.cs +++ b/GameServer/Server/Packet/Send/Friend/PacketSyncAddBlacklistScNotify.cs @@ -6,7 +6,7 @@ namespace EggLink.DanhengServer.GameServer.Server.Packet.Send.Friend; public class PacketSyncAddBlacklistScNotify : BasePacket { public PacketSyncAddBlacklistScNotify(int uid) - : base(CmdIds.SyncAddBlacklistScNotify) + : base(CmdIds.SyncAddBlacklistScNotify) { var proto = new SyncAddBlacklistScNotify { diff --git a/GameServer/Server/Packet/Send/Friend/PacketSyncDeleteFriendScNotify.cs b/GameServer/Server/Packet/Send/Friend/PacketSyncDeleteFriendScNotify.cs index 3e457a65..6dca9534 100644 --- a/GameServer/Server/Packet/Send/Friend/PacketSyncDeleteFriendScNotify.cs +++ b/GameServer/Server/Packet/Send/Friend/PacketSyncDeleteFriendScNotify.cs @@ -6,7 +6,7 @@ namespace EggLink.DanhengServer.GameServer.Server.Packet.Send.Friend; public class PacketSyncDeleteFriendScNotify : BasePacket { public PacketSyncDeleteFriendScNotify(int uid) - : base(CmdIds.SyncDeleteFriendScNotify) + : base(CmdIds.SyncDeleteFriendScNotify) { var proto = new SyncDeleteFriendScNotify { diff --git a/GameServer/Server/Packet/Send/Multiplayer/PacketMultiplayerFightGameFinishScNotify.cs b/GameServer/Server/Packet/Send/Multiplayer/PacketMultiplayerFightGameFinishScNotify.cs index 57263417..db858e57 100644 --- a/GameServer/Server/Packet/Send/Multiplayer/PacketMultiplayerFightGameFinishScNotify.cs +++ b/GameServer/Server/Packet/Send/Multiplayer/PacketMultiplayerFightGameFinishScNotify.cs @@ -6,7 +6,8 @@ namespace EggLink.DanhengServer.GameServer.Server.Packet.Send.Multiplayer; public class PacketMultiplayerFightGameFinishScNotify : BasePacket { - public PacketMultiplayerFightGameFinishScNotify(BaseMultiPlayerGameRoomInstance room) : base(CmdIds.MultiplayerFightGameFinishScNotify) + public PacketMultiplayerFightGameFinishScNotify(BaseMultiPlayerGameRoomInstance room) : base( + CmdIds.MultiplayerFightGameFinishScNotify) { var proto = new MultiplayerFightGameFinishScNotify { diff --git a/GameServer/Server/Packet/Send/Multiplayer/PacketMultiplayerFightGameStartScNotify.cs b/GameServer/Server/Packet/Send/Multiplayer/PacketMultiplayerFightGameStartScNotify.cs index 8b5b7212..9442ca26 100644 --- a/GameServer/Server/Packet/Send/Multiplayer/PacketMultiplayerFightGameStartScNotify.cs +++ b/GameServer/Server/Packet/Send/Multiplayer/PacketMultiplayerFightGameStartScNotify.cs @@ -6,7 +6,8 @@ namespace EggLink.DanhengServer.GameServer.Server.Packet.Send.Multiplayer; public class PacketMultiplayerFightGameStartScNotify : BasePacket { - public PacketMultiplayerFightGameStartScNotify(BaseMultiPlayerGameRoomInstance room) : base(CmdIds.MultiplayerFightGameStartScNotify) + public PacketMultiplayerFightGameStartScNotify(BaseMultiPlayerGameRoomInstance room) : base( + CmdIds.MultiplayerFightGameStartScNotify) { var proto = new MultiplayerFightGameStartScNotify { diff --git a/GameServer/Server/Packet/Send/Multiplayer/PacketMultiplayerGetFightGateScRsp.cs b/GameServer/Server/Packet/Send/Multiplayer/PacketMultiplayerGetFightGateScRsp.cs index 2e0f76ba..de39119e 100644 --- a/GameServer/Server/Packet/Send/Multiplayer/PacketMultiplayerGetFightGateScRsp.cs +++ b/GameServer/Server/Packet/Send/Multiplayer/PacketMultiplayerGetFightGateScRsp.cs @@ -17,7 +17,8 @@ public class PacketMultiplayerGetFightGateScRsp : BasePacket SetData(proto); } - public PacketMultiplayerGetFightGateScRsp(BaseMultiPlayerGameRoomInstance room) : base(CmdIds.MultiplayerGetFightGateScRsp) + public PacketMultiplayerGetFightGateScRsp(BaseMultiPlayerGameRoomInstance room) : base( + CmdIds.MultiplayerGetFightGateScRsp) { var proto = new MultiplayerGetFightGateScRsp { diff --git a/Program/Handbook/HandbookGenerator.cs b/Program/Handbook/HandbookGenerator.cs index 76833649..92cebd7d 100644 --- a/Program/Handbook/HandbookGenerator.cs +++ b/Program/Handbook/HandbookGenerator.cs @@ -230,6 +230,18 @@ public static class HandbookGenerator } } + public static string GetNameFromTextMap(long key, Dictionary map, Dictionary fallback) + { + if (map.TryGetValue(key, out var value)) return value; + if (fallback.TryGetValue(key, out value)) return value; + return $"[{key}]"; + } + + public static void WriteToFile(string lang, string content) + { + File.WriteAllText($"GM Handbook/GM Handbook {lang}.txt", content); + } + #if DEBUG public static void GenerateRogueDiceSurfaceDisplay(StringBuilder builder, Dictionary map, Dictionary fallback) @@ -288,16 +300,4 @@ public static class HandbookGenerator } } #endif - - public static string GetNameFromTextMap(long key, Dictionary map, Dictionary fallback) - { - if (map.TryGetValue(key, out var value)) return value; - if (fallback.TryGetValue(key, out value)) return value; - return $"[{key}]"; - } - - public static void WriteToFile(string lang, string content) - { - File.WriteAllText($"GM Handbook/GM Handbook {lang}.txt", content); - } } \ No newline at end of file diff --git a/Program/Program/EntryPoint.cs b/Program/Program/EntryPoint.cs index a3631097..e914bb30 100644 --- a/Program/Program/EntryPoint.cs +++ b/Program/Program/EntryPoint.cs @@ -422,4 +422,4 @@ public class EntryPoint DanhengConnection.LogMap.TryAdd(value, name); } } -} +} \ No newline at end of file