56 lines
1.6 KiB
Lua
56 lines
1.6 KiB
Lua
local EventAction_RoundEnd = {
|
||
GameTime = 0;
|
||
GameEndEvent = -1;
|
||
NewRoundEvent = -1
|
||
}
|
||
|
||
-- 触发器激活时,将执行Action的Execute
|
||
function EventAction_RoundEnd:Execute(...)
|
||
if not UGCGameSystem.IsServer() then return end
|
||
|
||
self.GameTimeInst = self.GameTime
|
||
-- 临时保存当前地图信息
|
||
UGCGameSystem.GameState:UpdateLastPlayMapInfo()
|
||
local IsAttackSucceed = UGCGameSystem.GameState:IsAttackSucceed()
|
||
-- 显示回合结束界面UI
|
||
UGCGameSystem.GameState:ShowSimplePlayModeUI(WidgetConfig.EUIType.RoundFinish, { IsAttackSucceed, UGCGameSystem.GameState:GetNowDefenderSelectMap() })
|
||
|
||
-- 设置无敌状态
|
||
local AllPawn = UGCGameSystem.GetAllPlayerPawn()
|
||
for i, v in pairs(AllPawn) do
|
||
UGCPawnSystem.SetIsInvincible(v, true)
|
||
end
|
||
|
||
self.bEnableActionTick = true
|
||
return true
|
||
end
|
||
|
||
function EventAction_RoundEnd:GameFinish()
|
||
self.bEnableActionTick = false
|
||
-- 判断游戏是否结束
|
||
if UGCGameSystem.GameState:IsFinishPlayer() or self:CheckGameEnd() then
|
||
UGCGameSystem.GameState:GameFinish()
|
||
-- 发送游戏结束事件
|
||
UGCEventSystem.SendEvent(self.GameEndEvent)
|
||
else
|
||
-- 触发新的回合事件
|
||
UGCEventSystem.SendEvent(self.NewRoundEvent)
|
||
end
|
||
end
|
||
|
||
function EventAction_RoundEnd:Update(DeltaSeconds)
|
||
self.GameTimeInst = self.GameTimeInst - DeltaSeconds
|
||
if self.GameTimeInst <= 0 then
|
||
self:GameFinish()
|
||
end
|
||
end
|
||
|
||
|
||
--- 检查玩法人数是否足够
|
||
function EventAction_RoundEnd:CheckGameEnd()
|
||
return #UGCGameSystem.GetAllPlayerController() <= 1
|
||
end
|
||
|
||
|
||
|
||
return EventAction_RoundEnd |