---@class MiniGameMode_Jigsaw ---@field IsGameEnd bool ---@field PlayerAddScore table 玩家获取的分数 ---@type MiniGameMode_Jigsaw local MiniGameMode_Jigsaw = { IsGameEnd = false; bIsInGame = false; -- 给玩家结算添加的得分{[PlayerKey] = AddScore, ...} PlayerAddScore = {}; MiniGameScore = {}; } --- 游戏初始化 function MiniGameMode_Jigsaw:Init() -- self:InitMiniGameScore() -- UGCEventSystem.AddListener(EventEnum.AddMiniGameScore, self.PlayerAddMiniGameScore, self) UGCEventSystem.AddListener(EventEnum.MiniGameEndNotify, self.SetMiniGameModeEnd, self) self.JigsawManager = UGCSystemLibrary.GetUniqueInstanceFromPath(MiniGameConfig.MiniGameInfo[MiniGameConfig.MiniGameType.Jigsaw].GameParam.JigsawManagerPath) end --- 准备时间结束游戏开始 function MiniGameMode_Jigsaw:GameBegin() self.bIsInGame = true local AllPawn = UGCGameSystem.GetAllPlayerPawn() for i, v in pairs(AllPawn) do if v.PlayerKey then v:SetNowCameraType(CustomEnum.EPlayerPawnCameraType.JumpCamera) -- UGCSendRPCSystem.ActorRPCNotify(v.PlayerKey, v, "SetJumpCamera", true) end end end function MiniGameMode_Jigsaw:Update(DeltaTime) -- 判断该玩法是否已结束 if self.IsGameEnd then return end -- Update逻辑 -- Update逻辑 End end --- 设置游戏结束,手动触发会结束该玩法,倒计时结束将自动触发该函数 function MiniGameMode_Jigsaw:SetMiniGameModeEnd() if not self.IsGameEnd then self.IsGameEnd = true self:MiniGameEnd() end end --- 获取当前回合游戏结算, ---@return "{[PlayerKey] = AddScore, ...}" function MiniGameMode_Jigsaw:GetPlayerAddScore() return self.PlayerAddScore end --- 外层调用,判断该玩法是否已结束 function MiniGameMode_Jigsaw:CheckGameFinish() return self.IsGameEnd end --- 结束触发 function MiniGameMode_Jigsaw:MiniGameEnd() self.PlayerAddScore = UGCGameSystem.GameState:GetPlayerMiniGameAddScore() -- UGCEventSystem.RemoveListener(EventEnum.AddMiniGameScore, self.PlayerAddMiniGameScore, self) UGCEventSystem.RemoveListener(EventEnum.MiniGameEndNotify, self.SetMiniGameModeEnd, self) end ------------------------------------------ Player ------------------------------------------ --- 玩家死亡 function MiniGameMode_Jigsaw:PlayerDead(VictimKey, CauserKey, WeaponID, DamageType, IsHeadShotDamage, Distance, DamageValue, Assister) end --- 玩家伤害修改 function MiniGameMode_Jigsaw:PlayerDamageModify(DamageAmount, VictimPawn, CauserPC) if VictimPawn ~= nil and CauserPC ~= nil and CauserPC.PlayerKey ~= nil and VictimPawn.PlayerKey ~= CauserPC.PlayerKey then SkillConfig.ExeSkill(SkillConfig.ESkillType.Stun, VictimPawn) self.JigsawManager:ProhibitPickupTime(VictimPawn.PlayerKey, 1) end return 0 end --- 玩家受控时 function MiniGameMode_Jigsaw:PlayerPossessed(PlayerKey) end --- 玩家BeginPlay触发 function MiniGameMode_Jigsaw:PlayerBeginPlay(PlayerPawn) end ---------------------------------------- Player End ---------------------------------------- return MiniGameMode_Jigsaw