iw7-mod/data/cdata/ui_scripts/EndGame/__init__.lua

238 lines
6.3 KiB
Lua
Raw Normal View History

if Engine.InFrontend() then
return
end
local RequestLeaveMenu = function(f1_arg0, f1_arg1)
LUI.FlowManager.RequestLeaveMenu(f1_arg0)
end
local PopupMessage = function(f2_arg0, f2_arg1)
f2_arg0:setText(f2_arg1.message_text)
f2_arg0:dispatchEventToRoot({
name = "resize_popup",
})
end
local Backout = function(f3_arg0)
Engine.ExecFirstClient("xpartybackout")
Engine.ExecFirstClient("disconnect")
end
local DisbandAfterRound = function(f4_arg0)
Engine.ExecFirstClient("xpartydisbandafterround")
Engine.ExecFirstClient("disconnect")
end
local OnlineGame = function(f5_arg0)
return Engine.GetDvarBool("onlinegame")
end
local Quit1 = function(f6_arg0)
if OnlineGame(f6_arg0) then
Engine.ExecFirstClient("xstopprivateparty")
Engine.ExecFirstClient("disconnect")
Engine.ExecFirstClient("xblive_privatematch 0")
Engine.ExecFirstClient("onlinegame 1")
Engine.ExecFirstClient("xstartprivateparty")
else
Engine.ExecFirstClient("disconnect")
end
end
local Quit2 = function(f7_arg0)
Engine.ExecFirstClient("xstopprivateparty")
Engine.ExecFirstClient("xpartydisbandafterround")
if Engine.GetDvarBool("sv_running") then
Engine.NotifyServer("end_game", 1)
Engine.ExecFirstClient("xblive_privatematch 0")
Engine.ExecFirstClient("onlinegame 1")
Engine.ExecFirstClient("xstartprivateparty")
else
Quit1(f7_arg0)
end
end
local Quit3 = function(f7_arg0, f7_arg1)
if Engine.GetDvarBool("sv_running") then
if Engine.IsAliensMode() then
Engine.Unpause()
if Engine.IsAliensMode() and not IsSystemLink() then
for f7_local0 = 0, Engine.GetMaxControllerCount() - 1, 1 do
if Engine.HasActiveLocalClient(f7_local0) then
Loot.ConsumeAll(f7_local0)
end
end
end
end
Engine.NotifyServer("end_game", 1)
Engine.ExecNow("set endgame_called 1")
else
if Engine.IsAliensMode() and not IsSystemLink() then
for f7_local0 = 0, Engine.GetMaxControllerCount() - 1, 1 do
if Engine.HasActiveLocalClient(f7_local0) then
Loot.ConsumeAll(f7_local0)
end
end
end
Quit1(f7_arg0)
end
LUI.FlowManager.RequestCloseAllMenus()
end
local LeaveWithParty = function(f8_arg0, f8_arg1)
LUI.FlowManager.RequestLeaveMenu(f8_arg0)
Engine.Exec("onPlayerQuit")
if Engine.GetDvarBool("sv_running") then
DisbandAfterRound(f8_arg0)
else
Backout(f8_arg0)
end
LUI.FlowManager.RequestCloseAllMenus()
end
local LeaveSolo = function(f9_arg0, f9_arg1)
LUI.FlowManager.RequestLeaveMenu(f9_arg0)
Engine.Exec("onPlayerQuit")
if Engine.GetDvarBool("sv_running") then
Engine.NotifyServer("end_game", 2)
Quit2(f9_arg0)
else
Quit1(f9_arg0)
end
LUI.FlowManager.RequestCloseAllMenus()
end
local IsPartyHost = function(f10_arg0)
local f10_local0 = Lobby.IsInPrivateParty()
if f10_local0 then
f10_local0 = Lobby.IsPrivatePartyHost()
if f10_local0 then
f10_local0 = not Lobby.IsAloneInPrivateParty()
end
end
return f10_local0
end
local ManualQuit = function(f11_arg0, f11_arg1)
Engine.ExecNow("uploadStats")
if Engine.IsAliensMode() and not IsSystemLink() then
for f11_local0 = 0, Engine.GetMaxControllerCount() - 1, 1 do
if Engine.HasActiveLocalClient(f11_local0) then
Loot.ConsumeAll(f11_local0)
end
end
end
if IsPartyHost(f11_arg0) then
LUI.FlowManager.RequestLeaveMenu(f11_arg0, true)
LUI.FlowManager.RequestPopupMenu(f11_arg0, "PullPartyPopup", false)
else
Engine.Exec("onPlayerQuit")
if Engine.GetDvarBool("sv_running") then
Quit2(f11_arg0)
else
Quit1(f11_arg0)
end
LUI.FlowManager.RequestCloseAllMenus()
end
end
local EndGamePopup = function()
local self = LUI.UIElement.new()
self.id = "end_game_id"
self:registerAnimationState("default", {
topAnchor = true,
leftAnchor = true,
bottomAnchor = true,
rightAnchor = true,
top = -50,
left = 0,
bottom = 0,
right = 0,
alpha = 1,
})
self:animateToState("default", 0)
local f12_local1 = Engine.Localize("@LUA_MENU_END_GAME_DESC")
local f12_local2 = Engine.Localize("@LUA_MENU_LEAVE_GAME_TITLE")
if Engine.IsAliensMode() and Game.GetOmnvar("zm_ui_is_solo") then
f12_local1 = Engine.Localize("@CP_ZMB_LEAVE_GAME_DESC")
f12_local2 = Engine.Localize("@MENU_NOTICE")
end
MenuBuilder.BuildAddChild(self, {
type = "generic_yesno_popup",
id = "privateGame_options_list_id",
properties = {
message_text_alignment = LUI.Alignment.Center,
message_text = f12_local1,
popup_title = f12_local2,
padding_top = 12,
yes_action = Quit3,
},
})
local f12_local3 = LUI.UIBindButton.new()
f12_local3.id = "endBackToGameStartButton"
f12_local3:registerEventHandler("button_start", RequestLeaveMenu)
self:addElement(f12_local3)
return self
end
local LeaveGamePopup = function()
local self = LUI.UIElement.new()
self.id = "leave_game_id"
self:registerAnimationState("default", {
topAnchor = true,
leftAnchor = true,
bottomAnchor = true,
rightAnchor = true,
top = -50,
left = 0,
bottom = 0,
right = 0,
alpha = 1,
})
self:animateToState("default", 0)
MenuBuilder.BuildAddChild(self, {
type = "generic_yesno_popup",
id = "publicGame_options_list_id",
properties = {
message_text_alignment = LUI.Alignment.Center,
message_text = Engine.IsAliensMode() and Engine.Localize("@CP_ZMB_LEAVE_GAME_DESC")
or Engine.Localize("@LUA_MENU_LEAVE_GAME_DESC"),
popup_title = Engine.IsAliensMode() and Engine.Localize("@MENU_NOTICE")
or Engine.Localize("@LUA_MENU_LEAVE_GAME_TITLE"),
padding_top = 12,
yes_action = ManualQuit,
},
})
local f13_local1 = LUI.UIBindButton.new()
f13_local1.id = "leaveBackToGameStartButton"
f13_local1:registerEventHandler("button_start", RequestLeaveMenu)
self:addElement(f13_local1)
return self
end
local PullPartyPopup = function(f14_arg0, f14_arg1)
local f14_local0 = MenuBuilder.BuildRegisteredType("PopupMessageAndButtons", {
title = Engine.Localize("LUA_MENU_LEAVE_GAME_TITLE"),
message = Engine.Localize("LUA_MENU_PULL_PARTY_DESC"),
defaultFocusIndex = 2,
cancelClosesPopup = true,
buttonsClosePopup = true,
buttons = {
{
label = Engine.Localize("LUA_MENU_YES"),
action = LeaveWithParty,
},
{
label = Engine.Localize("LUA_MENU_NO"),
action = LeaveSolo,
},
},
})
f14_local0.id = "PullPartyPopup"
return f14_local0
end
MenuBuilder.m_types["popup_end_game"] = EndGamePopup
MenuBuilder.m_types["popup_leave_game"] = LeaveGamePopup
MenuBuilder.m_types["PullPartyPopup"] = PullPartyPopup