50 lines
1.7 KiB
Lua
50 lines
1.7 KiB
Lua
local Action_WaitPlayerJoin = {
|
|
WaitTime = 0,
|
|
}
|
|
|
|
function Action_WaitPlayerJoin:Execute(...)
|
|
local GameState = UGCGameSystem.GameState
|
|
GameState.GameStage = EGameStage.WaitForPlayer
|
|
|
|
self.EnterStateTime = GameplayStatics.GetRealTimeSeconds(self)
|
|
self.LastUpdateRemainTime = self.WaitTime
|
|
self.JoinedPlayerNum = 0
|
|
self.bOverBigWorld = false
|
|
|
|
self.bEnableActionTick = true
|
|
|
|
EventSystem:AddListener(EventType.UpdateInitialWidget, self.OnUpdateInitialWidget, self)
|
|
print(string.format("[Action_WaitPlayerJoin:Execute] WaitTime = %d", self.WaitTime))
|
|
|
|
return true
|
|
end
|
|
|
|
function Action_WaitPlayerJoin:OnUpdateInitialWidget()
|
|
print(string.format("[Action_WaitPlayerJoin:OnUpdateInitialWidget] 执行"))
|
|
self.EnterStateTime = 0
|
|
self.bOverBigWorld = true
|
|
end
|
|
|
|
function Action_WaitPlayerJoin:Update(DeltaSeconds)
|
|
local CurrentRealTime = GameplayStatics.GetRealTimeSeconds(self);
|
|
|
|
-- 表示剩余时间
|
|
local RemainTime = self.WaitTime - (CurrentRealTime - self.EnterStateTime);
|
|
RemainTime = RemainTime >= 0 and RemainTime or 0
|
|
|
|
local CurrentUpdateRemainTime = math.ceil(RemainTime)
|
|
|
|
if self.LastUpdateRemainTime - CurrentUpdateRemainTime >= 1 then
|
|
self.JoinedPlayerNum = #UGCGameSystem.GetAllPlayerState(false)
|
|
self.LastUpdateRemainTime = CurrentUpdateRemainTime
|
|
end
|
|
if self.bOverBigWorld or CurrentUpdateRemainTime <= 0 or self.JoinedPlayerNum >= 4 then
|
|
self.LastUpdateRemainTime = 0
|
|
self.bEnableActionTick = false
|
|
UGCGameSystem.SendModeCustomEvent("EnterGameReadyStage")
|
|
end
|
|
--更新GameState.WaitPlayerJoinTime
|
|
UGCGameSystem.GameState.WaitPlayerJoinTime = self.LastUpdateRemainTime
|
|
end
|
|
|
|
return Action_WaitPlayerJoin |