From fbce2b267fd4737bc99ba8d1505c1f6921075c68 Mon Sep 17 00:00:00 2001 From: Somebody Date: Mon, 5 Aug 2024 12:52:21 +0800 Subject: [PATCH] Enhancement: Better Gamemode Type --- Common/Enums/Scene/GameModeTypeEnum.cs | 24 ++++++++++++++++++++++++ Common/Enums/Scene/PlaneTypeEnum.cs | 18 +++++++++--------- GameServer/Game/Battle/BattleManager.cs | 10 +++++----- GameServer/Game/Scene/SceneInstance.cs | 7 ++++--- 4 files changed, 42 insertions(+), 17 deletions(-) create mode 100644 Common/Enums/Scene/GameModeTypeEnum.cs diff --git a/Common/Enums/Scene/GameModeTypeEnum.cs b/Common/Enums/Scene/GameModeTypeEnum.cs new file mode 100644 index 00000000..898910fd --- /dev/null +++ b/Common/Enums/Scene/GameModeTypeEnum.cs @@ -0,0 +1,24 @@ +namespace EggLink.DanhengServer.Enums.Scene; + +public enum GameModeTypeEnum +{ + Unknown = 0, + Town = 1, + Maze = 2, + Train = 3, + Challenge = 4, + RogueExplore = 5, + RogueChallenge = 6, + TownRoom = 7, + Raid = 8, + FarmRelic = 9, + Client = 10, + ChallengeActivity = 11, + ActivityPunkLord = 12, + RogueAeonRoom = 13, + TrialActivity = 14, + AetherDivide = 15, + ChessRogue = 16, + TournRogue = 17, + RelicRogue = 18 +} \ No newline at end of file diff --git a/Common/Enums/Scene/PlaneTypeEnum.cs b/Common/Enums/Scene/PlaneTypeEnum.cs index 20698767..e32a0070 100644 --- a/Common/Enums/Scene/PlaneTypeEnum.cs +++ b/Common/Enums/Scene/PlaneTypeEnum.cs @@ -2,13 +2,13 @@ public enum PlaneTypeEnum { - Unknown = 0, - Town = 1, - Maze = 2, - Train = 3, - Challenge = 4, - Rogue = 5, - Raid = 8, - AetherDivide = 15, - TrialActivity = 14 + Unknown = GameModeTypeEnum.Unknown, + Town = GameModeTypeEnum.Town, + Maze = GameModeTypeEnum.Maze, + Train = GameModeTypeEnum.Train, + Challenge = GameModeTypeEnum.Challenge, + Rogue = GameModeTypeEnum.RogueExplore, + Raid = GameModeTypeEnum.Raid, + AetherDivide = GameModeTypeEnum.AetherDivide, + TrialActivity = GameModeTypeEnum.TrialActivity, } \ No newline at end of file diff --git a/GameServer/Game/Battle/BattleManager.cs b/GameServer/Game/Battle/BattleManager.cs index 1d208422..070f5f3d 100644 --- a/GameServer/Game/Battle/BattleManager.cs +++ b/GameServer/Game/Battle/BattleManager.cs @@ -346,16 +346,16 @@ public class BattleManager(PlayerInstance player) : BasePlayerManager(player) } } - DatabaseHelper.Instance?.UpdateInstance(Player.AvatarManager!.AvatarData!); + DatabaseHelper.Instance?.UpdateInstance(Player.AvatarManager!.AvatarData); await Player.SendPacket(new PacketSyncLineupNotify(lineup)); } if (teleportToAnchor) { var anchorProp = Player.SceneInstance?.GetNearestSpring(long.MaxValue); - if (anchorProp != null && anchorProp.PropInfo != null) + if (anchorProp != null) { - var anchor = Player!.SceneInstance?.FloorInfo?.GetAnchorInfo( + var anchor = Player.SceneInstance?.FloorInfo?.GetAnchorInfo( anchorProp.PropInfo.AnchorGroupID, anchorProp.PropInfo.AnchorID ); @@ -376,8 +376,8 @@ public class BattleManager(PlayerInstance player) : BasePlayerManager(player) if (Player.ChallengeManager?.ChallengeInstance != null) await Player.ChallengeManager!.ChallengeInstance.OnBattleEnd(battle, req); - if (player.ActivityManager!.TrialActivityInstance != null && req.EndStatus == BattleEndStatus.BattleEndWin) - await player.ActivityManager.TrialActivityInstance.EndActivity(TrialActivityStatus.Finish); + if (Player.ActivityManager!.TrialActivityInstance != null && req.EndStatus == BattleEndStatus.BattleEndWin) + await Player.ActivityManager.TrialActivityInstance.EndActivity(TrialActivityStatus.Finish); await Player.SendPacket(new PacketPVEBattleResultScRsp(req, Player, battle)); } diff --git a/GameServer/Game/Scene/SceneInstance.cs b/GameServer/Game/Scene/SceneInstance.cs index 4e9cf3be..32dd35a7 100644 --- a/GameServer/Game/Scene/SceneInstance.cs +++ b/GameServer/Game/Scene/SceneInstance.cs @@ -50,7 +50,7 @@ public class SceneInstance SceneInfo sceneInfo = new() { WorldId = (uint)(Excel.WorldID == 100 ? Player.LastWorldId : Excel.WorldID), - GameModeType = (uint)(CustomGameModeId > 0 ? CustomGameModeId : (int)Excel.PlaneType), + GameModeType = (uint)GameModeType, PlaneId = (uint)PlaneId, FloorId = (uint)FloorId, EntryId = (uint)EntryId, @@ -172,7 +172,7 @@ public class SceneInstance public SceneEntityLoader? EntityLoader; - public int CustomGameModeId; + public GameModeTypeEnum GameModeType; public SceneInstance(PlayerInstance player, MazePlaneExcel excel, int floorId, int entryId) { @@ -188,13 +188,14 @@ public class SceneInstance GameData.GetFloorInfo(PlaneId, FloorId, out FloorInfo); if (FloorInfo == null) return; + GameModeType = (GameModeTypeEnum)excel.PlaneType; switch (Excel.PlaneType) { case PlaneTypeEnum.Rogue: if (Player.ChessRogueManager!.RogueInstance != null) { EntityLoader = new ChessRogueEntityLoader(this); - CustomGameModeId = 16; // ChessRogue + GameModeType = GameModeTypeEnum.ChessRogue; // ChessRogue } else {