301 lines
7.7 KiB
Lua
301 lines
7.7 KiB
Lua
local spacing = 10
|
|
local topoffset = 15
|
|
|
|
local extrawidth = 50
|
|
local extraheight1 = 0
|
|
|
|
local function makelink(element, link)
|
|
element:setHandleMouseMove(true)
|
|
element:setHandleMouseButton(true)
|
|
element:registerAnimationState("focused", {
|
|
color = {
|
|
r = 1,
|
|
g = 1,
|
|
b = 1
|
|
}
|
|
})
|
|
|
|
local entered = false
|
|
element:registerEventHandler("mouseenter", function()
|
|
if (not entered) then
|
|
Engine.PlaySound(CoD.SFX.MouseOver)
|
|
entered = true
|
|
end
|
|
|
|
element:animateToState("focused")
|
|
end)
|
|
|
|
element:registerEventHandler("mouseleave", function()
|
|
entered = false
|
|
element:animateToState("default")
|
|
end)
|
|
|
|
element:registerEventHandler("leftmousedown", function()
|
|
Engine.PlaySound(CoD.SFX.MouseClick)
|
|
game:openlink(link)
|
|
end)
|
|
end
|
|
|
|
local addlinkinfo = function(menu, key, value, link)
|
|
local text = Engine.Localize(value)
|
|
local element = menu:AddInfo(Engine.Localize(key), function()
|
|
return text
|
|
end)
|
|
|
|
local linkelement = element:getFirstChild():getNextSibling()
|
|
makelink(linkelement, link)
|
|
end
|
|
|
|
local function getnumcredits()
|
|
local csv = "credits.csv"
|
|
local rowcount = Engine.TableGetRowCount(csv)
|
|
return rowcount
|
|
end
|
|
|
|
local extraheight2 = getnumcredits() * 25 / 2
|
|
|
|
local function addcredits(menu)
|
|
local cols = {
|
|
name = 0,
|
|
link = 1
|
|
}
|
|
|
|
local csv = "credits.csv"
|
|
local rowcount = Engine.TableGetRowCount(csv)
|
|
|
|
local num = 0
|
|
local creditselement = LUI.UIElement.new({
|
|
topAnchor = true,
|
|
leftAnchor = true,
|
|
left = 500,
|
|
width = 30,
|
|
top = 255
|
|
})
|
|
|
|
menu:addElement(creditselement)
|
|
|
|
menu:AddInfo(Engine.Localize("MENU_CREDITS"), function()
|
|
return ""
|
|
end)
|
|
|
|
local num = 0
|
|
local addcredit = function(name, link)
|
|
local row = num % 4
|
|
local col = num >= 4 and 0 or 1
|
|
local text = Engine.Localize(name)
|
|
|
|
local element = LUI.UIText.new({
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
right = -10 + (col * -100),
|
|
top = 25 * row,
|
|
width = 90,
|
|
height = LUI.MenuGenericButtons.ButtonLabelFont.Height * 0.8,
|
|
font = LUI.MenuGenericButtons.ButtonLabelFont.Font,
|
|
color = Colors.h1.light_grey,
|
|
alignment = Engine.IsRightToLeftLanguage() and LUI.Alignment.None or LUI.Alignment.Right
|
|
})
|
|
|
|
element.id = "credits_" .. num
|
|
element:setText(text)
|
|
creditselement:addElement(element)
|
|
makelink(element, link)
|
|
|
|
num = num + 1
|
|
end
|
|
|
|
for i = 0, rowcount - 1 do
|
|
local name = Engine.TableLookupByRow(csv, i, cols.name)
|
|
local link = Engine.TableLookupByRow(csv, i, cols.link)
|
|
addcredit(name, link)
|
|
end
|
|
end
|
|
|
|
LUI.MenuBuilder.m_types_build["SystemInfo"] = function (f6_arg0, f6_arg1)
|
|
local f6_local0 = LUI.MenuTemplate.spMenuOffset
|
|
local title = "LUA_MENU_SYSTEM_INFO_CAPS"
|
|
|
|
local f6_local2 = false
|
|
local f6_local3 = 0
|
|
|
|
local menu = LUI.MenuTemplate.new(f6_arg0, {
|
|
menu_title = title,
|
|
menu_top_indent = f6_local0 + f6_local3,
|
|
showSelectButton = false,
|
|
skipAnim = f6_local2
|
|
})
|
|
|
|
menu:setClass(LUI.SystemInfo)
|
|
menu:PopulateMissingProps(f6_arg1)
|
|
menu:ValidateProps(f6_arg1)
|
|
menu.id = "systemInfo_id"
|
|
|
|
local f6_local5 = 300
|
|
local f6_local6 = LUI.MenuTemplate.ListTop + f6_local0
|
|
local f6_local7 = f6_arg1.menu_height
|
|
if not f6_local7 then
|
|
f6_local7 = f6_local5
|
|
end
|
|
|
|
f6_local7 = f6_local7 + f6_local6 - extraheight1
|
|
|
|
local f6_local9 = luiglobals.GenericMenuDims.OptionMenuWidth + 100
|
|
local f6_local10 = menu.properties
|
|
local topoffset2 = LUI.MenuTemplate.ListTop + LUI.MenuTemplate.spMenuOffset
|
|
|
|
local decobox = LUI.MenuBuilder.BuildRegisteredType("h1_box_deco", {
|
|
decoTopOffset = topoffset2 - topoffset + 15,
|
|
decoBottomOffset = -f6_local7,
|
|
decoRightOffset = -665 + extrawidth
|
|
})
|
|
|
|
menu:addElement(decobox)
|
|
|
|
local decoleft = CoD.CreateState(0, 0.5, 8, 0.5, CoD.AnchorTypes.TopLeft)
|
|
decoleft.color = luiglobals.Colors.h1.light_grey
|
|
decobox:addElement(LUI.UILine.new(decoleft))
|
|
|
|
local decoright = CoD.CreateState(0, 0.5, -8, 0.5, CoD.AnchorTypes.TopRight)
|
|
decoright.color = luiglobals.Colors.h1.light_grey
|
|
decobox:addElement(LUI.UILine.new(decoright))
|
|
|
|
local element = LUI.UIVerticalList.new({
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
left = spacing,
|
|
right = 100,
|
|
top = topoffset2 + 15,
|
|
bottom = 0,
|
|
spacing = spacing * 0.8
|
|
})
|
|
|
|
element.id = "systemInfoList_id"
|
|
menu.vlist = element
|
|
menu:addElement(element)
|
|
|
|
local optionmenuwidth = luiglobals.GenericMenuDims.OptionMenuWidth
|
|
luiglobals.GenericMenuDims.OptionMenuWidth = optionmenuwidth + extrawidth
|
|
|
|
menu:AddInfo(Engine.Localize("MENU_SYSINFO_VERSION"), function()
|
|
return Engine.GetBuildNumber()
|
|
end)
|
|
|
|
addlinkinfo(menu, "MENU_SYSINFO_CUSTOMER_SUPPORT_LINK", "MENU_SYSINFO_CUSTOMER_SUPPORT_URL", "github")
|
|
|
|
luiglobals.GenericMenuDims.OptionMenuWidth = optionmenuwidth
|
|
|
|
menu:AddBackButton()
|
|
menu:registerEventHandler("menu_close", LUI.SystemInfo.LeaveMenu)
|
|
|
|
return menu
|
|
end
|
|
|
|
local startmap = Engine.StreamingInstallMap
|
|
Engine.StreamingInstallMap = function(map, args, ...)
|
|
if (args == "set ui_play_credits 1; devmap ending;") then
|
|
LUI.FlowManager.RequestAddMenu(nil, "credits_menu")
|
|
else
|
|
startmap(map, args, ...)
|
|
end
|
|
end
|
|
|
|
local creditsmap = function()
|
|
LUI.FlowManager.PushMenuStackToDVar()
|
|
|
|
if LUI.LevelSelect.IsAllLevelCompleted() then
|
|
Engine.SetDvarString("ui_char_museum_mode", "credits_2", true)
|
|
else
|
|
Engine.SetDvarString("ui_char_museum_mode", "credits_black", true)
|
|
end
|
|
|
|
startmap("ending", "set ui_play_credits 1; devmap ending;")
|
|
end
|
|
|
|
LUI.MenuBuilder.registerType("credits_menu", function(f6_arg0, f6_arg1)
|
|
local f6_local0 = LUI.MenuTemplate.spMenuOffset
|
|
local title = "MENU_SP_CREDITS_CAPS"
|
|
|
|
local f6_local2 = false
|
|
local f6_local3 = 0
|
|
|
|
local menu = LUI.MenuTemplate.new(f6_arg0, {
|
|
menu_title = title,
|
|
menu_top_indent = f6_local0 + f6_local3,
|
|
showSelectButton = false,
|
|
skipAnim = f6_local2
|
|
})
|
|
|
|
PersistentBackground.ChangeBackground(nil, CoD.Background.CampaignRegular)
|
|
|
|
menu:AddButton("MENU_SP_CREDITS_CAPS", creditsmap, nil, true, nil, {
|
|
desc_text = Engine.Localize("@LUA_MENU_CREDITS_DESC")
|
|
})
|
|
|
|
menu:setClass(LUI.SystemInfo)
|
|
menu:PopulateMissingProps(f6_arg1)
|
|
menu:ValidateProps(f6_arg1)
|
|
menu.id = "systemInfo_id"
|
|
|
|
local f6_local5 = 300
|
|
local f6_local6 = LUI.MenuTemplate.ListTop + f6_local0
|
|
local f6_local7 = f6_arg1.menu_height
|
|
if not f6_local7 then
|
|
f6_local7 = f6_local5
|
|
end
|
|
|
|
f6_local7 = f6_local7 + f6_local6 - extraheight2
|
|
|
|
local f6_local9 = luiglobals.GenericMenuDims.OptionMenuWidth + 100
|
|
local f6_local10 = menu.properties
|
|
local topoffset2 = LUI.MenuTemplate.ListTop + LUI.MenuTemplate.spMenuOffset + 50
|
|
|
|
local decobox = LUI.MenuBuilder.BuildRegisteredType("h1_box_deco", {
|
|
decoTopOffset = topoffset2 - topoffset + 15,
|
|
decoBottomOffset = -f6_local7,
|
|
decoRightOffset = -665 + extrawidth
|
|
})
|
|
|
|
menu:addElement(decobox)
|
|
|
|
local decoleft = CoD.CreateState(0, 0.5, 8, 0.5, CoD.AnchorTypes.TopLeft)
|
|
decoleft.color = luiglobals.Colors.h1.light_grey
|
|
decobox:addElement(LUI.UILine.new(decoleft))
|
|
|
|
local decoright = CoD.CreateState(0, 0.5, -8, 0.5, CoD.AnchorTypes.TopRight)
|
|
decoright.color = luiglobals.Colors.h1.light_grey
|
|
decobox:addElement(LUI.UILine.new(decoright))
|
|
|
|
local element = LUI.UIVerticalList.new({
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
left = spacing,
|
|
right = 100,
|
|
top = topoffset2 + 15,
|
|
bottom = 0,
|
|
spacing = spacing * 0.8
|
|
})
|
|
|
|
element.id = "systemInfoList_id"
|
|
menu.vlist = element
|
|
menu:addElement(element)
|
|
|
|
local optionmenuwidth = luiglobals.GenericMenuDims.OptionMenuWidth
|
|
luiglobals.GenericMenuDims.OptionMenuWidth = optionmenuwidth + extrawidth
|
|
|
|
addlinkinfo(menu, "MENU_SYSINFO_CUSTOMER_SUPPORT_LINK", "MENU_SYSINFO_CUSTOMER_SUPPORT_URL", "github")
|
|
addlinkinfo(menu, "MENU_SYSINFO_DONATION_LINK", "MENU_SYSINFO_DONATION_URL", "donate")
|
|
|
|
addcredits(menu)
|
|
|
|
luiglobals.GenericMenuDims.OptionMenuWidth = optionmenuwidth
|
|
|
|
menu:AddBackButton()
|
|
menu:registerEventHandler("menu_close", LUI.SystemInfo.LeaveMenu)
|
|
|
|
return menu
|
|
end)
|