diff --git a/GameServer/Game/Mission/FinishType/Handler/MissionHandlerMatchThreeFinishLevel.cs b/GameServer/Game/Mission/FinishType/Handler/MissionHandlerMatchThreeFinishLevel.cs new file mode 100644 index 00000000..4bdb05f8 --- /dev/null +++ b/GameServer/Game/Mission/FinishType/Handler/MissionHandlerMatchThreeFinishLevel.cs @@ -0,0 +1,25 @@ +using EggLink.DanhengServer.Data.Config; +using EggLink.DanhengServer.Data.Excel; +using EggLink.DanhengServer.Enums.Mission; +using EggLink.DanhengServer.GameServer.Game.Player; +using EggLink.DanhengServer.Proto; +using EggLink.DanhengServer.Util; + +namespace EggLink.DanhengServer.GameServer.Game.Mission.FinishType.Handler; + +[MissionFinishType(MissionFinishTypeEnum.MatchThreeFinishLevel)] +public class MissionHandlerMatchThreeFinishLevel : MissionFinishTypeHandler +{ + public override async ValueTask HandleMissionFinishType(PlayerInstance player, SubMissionInfo info, object? arg) + { + if(arg is MatchThreeLevelEndCsReq req) + if(req.LevelId == info.ParamInt1) + await player.MissionManager!.FinishSubMission(info.ID); + } + + public override async ValueTask HandleQuestFinishType(PlayerInstance player, QuestDataExcel quest, + FinishWayExcel excel, object? arg) + { + await ValueTask.CompletedTask; + } +} \ No newline at end of file diff --git a/GameServer/Server/Packet/Recv/MatchThreeModule/HandlerMatchThreeLevelEndCsReq.cs b/GameServer/Server/Packet/Recv/MatchThreeModule/HandlerMatchThreeLevelEndCsReq.cs index 3e80b515..b397dd5f 100644 --- a/GameServer/Server/Packet/Recv/MatchThreeModule/HandlerMatchThreeLevelEndCsReq.cs +++ b/GameServer/Server/Packet/Recv/MatchThreeModule/HandlerMatchThreeLevelEndCsReq.cs @@ -1,4 +1,5 @@ -using EggLink.DanhengServer.GameServer.Server.Packet.Send.MatchThreeModule; +using EggLink.DanhengServer.Enums.Mission; +using EggLink.DanhengServer.GameServer.Server.Packet.Send.MatchThreeModule; using EggLink.DanhengServer.Kcp; using EggLink.DanhengServer.Proto; @@ -11,6 +12,8 @@ public class HandlerMatchThreeLevelEndCsReq : Handler { var req = MatchThreeLevelEndCsReq.Parser.ParseFrom(data); + await connection.Player!.MissionManager!.HandleFinishType(MissionFinishTypeEnum.MatchThreeFinishLevel, req); + await connection.SendPacket(new PacketMatchThreeLevelEndScRsp(req.LevelId, req.ModeId)); } } \ No newline at end of file