Untitled

 avatar
unknown
plain_text
a year ago
27 kB
12
Indexable
require( "ui.uieditor.widgets.ZMInventory.ZMMapSelection.List1ButtonLarge_ZM" )
require( "ui.uieditor.widgets.Scrollbars.verticalScrollbar" )
require( "ui.uieditor.widgets.verticalScrollingTextBox" )
require( "ui.uieditor.widgets.Scrollbars.verticalCounter" )
require( "ui.uieditor.widgets.BackgroundFrames.GenericMenuFrame" ) -- modified to remove background elements !
require( "ui.uieditor.widgets.ZMInventory.ZMMapSelection.ZMMissionTile" )
--require( "ui.uieditor.widgets.Lobby.Common.FE_TitleLine" )
require( "ui.uieditor.widgets.DLC_Free_weekend" )
require( "ui.uieditor.widgets.Lobby.Common.FE_Menu_LeftGraphics" )
require( "ui.uieditor.widgets.ZMInventory.ZMMapSelection.ZMLobbyEEWidget" )
local PrintDebugCustom = function(message)
    Engine.ComError(Enum.errorCode.ERROR_UI, message)
end
local PreLoadFunc = function ( self, controller )
	self.preLoadImageModel = Engine.CreateModel( Engine.GetModelForController( controller ), "ZMMapSelectionPreloadImage" )
end

local PostLoadFunc = function ( f2_arg0, f2_arg1 )
	f2_arg0.StreamedImagePreloader:subscribeToModel( f2_arg0.preLoadImageModel, function ( model )
		local modelValue = Engine.GetModelValue( model )
		if modelValue and CoD.GetMapValue( modelValue, "dlc_pack", 0 ) == 7 then
			f2_arg0.StreamedImagePreloader:setImage( RegisterImage( MapNameToMapLoadingImage( modelValue ) ) )
		end
	end, false )
	LUI.OverrideFunction_CallOriginalSecond( f2_arg0, "close", function ( element )
		Engine.UnsubscribeAndFreeModel( element.preLoadImageModel )
	end )
end

LUI.createMenu.ZMMapSelection = function ( controller )
	local self = CoD.Menu.NewForUIEditor( "ZMMapSelection" )
	if PreLoadFunc then
		PreLoadFunc( self, controller )
	end
	self.soundSet = "MultiplayerMain"
	self:setOwner( controller )
	self:setLeftRight( true, true, 0, 0 )
	self:setTopBottom( true, true, 0, 0 )
	self:playSound( "menu_open", controller )
	self.buttonModel = Engine.CreateModel( Engine.GetModelForController( controller ), "ZMMapSelection.buttonPrompts" )
	local f5_local1 = self
	self.anyChildUsesUpdateState = true
	
	local Bkg = LUI.UIImage.new() -- BLACK BACKGROUND
	Bkg:setLeftRight( true, false, 0, 1280 )
	Bkg:setTopBottom( true, false, -16.5, 720 )
	Bkg:setRGB( 0, 0, 0 )
	Bkg:setAlpha( 0.95 )
	self:addElement( Bkg )
	self.Bkg = Bkg
	
	local MapList = LUI.UIList.new( f5_local1, controller, 2, 0, nil, false, false, 0, 0, false, false )
	MapList:makeFocusable()
	MapList:setLeftRight( true, false, 64, 344 )
	MapList:setTopBottom( true, false, 134, 540 )
	MapList:setWidgetType( CoD.List1ButtonLarge_ZM )
	MapList:setVerticalCount( 12 )
	MapList:setVerticalCounter( CoD.verticalCounter )
	MapList:setVerticalScrollbar( CoD.verticalScrollbar )
	MapList:setDataSource( "ZMMapsList" )
	MapList:linkToElementModel( MapList, "disabled", true, function ( model )
		local f6_local0 = MapList
		local f6_local1 = {
			controller = controller,
			name = "model_validation",
			modelValue = Engine.GetModelValue( model ),
			modelName = "disabled"
		}
		CoD.Menu.UpdateButtonShownState( f6_local0, f5_local1, controller, Enum.LUIButton.LUI_KEY_XBA_PSCROSS )
	end )
	MapList:registerEventHandler( "list_item_gain_focus", function ( element, event )
		local f7_local0 = nil
		SetElementPropertyOnPerControllerTable( controller, "zmLobbyEEMapRef", element, "mapId" )
		UpdateElementDataSource( self, "ZMLobbyEEList" )
		SetControllerModelValue( controller, "ZMMapSelectionPreloadImage", element.mapId )
		return f7_local0
	end )
	MapList:registerEventHandler( "gain_focus", function ( element, event )
		local f8_local0 = nil
		if element.gainFocus then
			f8_local0 = element:gainFocus( event )
		elseif element.super.gainFocus then
			f8_local0 = element.super:gainFocus( event )
		end
		CoD.Menu.UpdateButtonShownState( element, f5_local1, controller, Enum.LUIButton.LUI_KEY_XBA_PSCROSS )
		CoD.Menu.UpdateButtonShownState( element, f5_local1, controller, Enum.LUIButton.LUI_KEY_XBX_PSSQUARE )
		return f8_local0
	end )
	MapList:registerEventHandler( "lose_focus", function ( element, event )
		local f9_local0 = nil
		if element.loseFocus then
			f9_local0 = element:loseFocus( event )
		elseif element.super.loseFocus then
			f9_local0 = element.super:loseFocus( event )
		end
		return f9_local0
	end )
	f5_local1:AddButtonCallbackFunction( MapList, controller, Enum.LUIButton.LUI_KEY_XBA_PSCROSS, "ENTER", function ( f10_arg0, f10_arg1, f10_arg2, f10_arg3 )
		if IsPerControllerTablePropertyValue( f10_arg2, "choosingZMPlaylist", true ) and IsElementPropertyValue( f10_arg0, "purchasable", true ) then
			OpenPurchaseMapPackConfirmation( f10_arg2, f10_arg0, "ZMMapSelect", f10_arg1 )
			return true
		elseif IsPerControllerTablePropertyValue( f10_arg2, "choosingZMPlaylist", true ) and not IsDisabled( f10_arg0, f10_arg2 ) then
			PlaylistSelected( f10_arg1, f10_arg0, f10_arg2 )
			ClearSavedState( self, f10_arg2 )
			return true
		elseif IsElementPropertyValue( f10_arg0, "purchasable", true ) then
			OpenPurchaseMapPackConfirmation( f10_arg2, f10_arg0, "ZMMapSelect", f10_arg1 )
			return true
		elseif not IsDisabled( f10_arg0, f10_arg2 ) then
			ProcessZMMapSelectListAction( self, f10_arg0, f10_arg2, f10_arg1 )
			return true
		else
			
		end
	end, function ( f11_arg0, f11_arg1, f11_arg2 )
		if IsPerControllerTablePropertyValue( f11_arg2, "choosingZMPlaylist", true ) and IsElementPropertyValue( f11_arg0, "purchasable", true ) then
			CoD.Menu.SetButtonLabel( f11_arg1, Enum.LUIButton.LUI_KEY_XBA_PSCROSS, "MENU_SELECT" )
			return true
		elseif IsPerControllerTablePropertyValue( f11_arg2, "choosingZMPlaylist", true ) and not IsDisabled( f11_arg0, f11_arg2 ) then
			CoD.Menu.SetButtonLabel( f11_arg1, Enum.LUIButton.LUI_KEY_XBA_PSCROSS, "MENU_SELECT" )
			return true
		elseif IsElementPropertyValue( f11_arg0, "purchasable", true ) then
			CoD.Menu.SetButtonLabel( f11_arg1, Enum.LUIButton.LUI_KEY_XBA_PSCROSS, "MENU_SELECT" )
			return true
		elseif not IsDisabled( f11_arg0, f11_arg2 ) then
			CoD.Menu.SetButtonLabel( f11_arg1, Enum.LUIButton.LUI_KEY_XBA_PSCROSS, "MENU_SELECT" )
			return true
		else
			return false
		end
	end, false )
	f5_local1:AddButtonCallbackFunction( MapList, controller, Enum.LUIButton.LUI_KEY_XBX_PSSQUARE, nil, function ( f12_arg0, f12_arg1, f12_arg2, f12_arg3 )
		if IsDvarValueEqualTo( "ui_freeDLC1", "1" ) and ShouldShowDLCWidget( f12_arg2, "mp_rise" ) and IsElementPropertyValue( f12_arg0, "purchasable", true ) then
			OpenPurchaseMapPackConfirmation( f12_arg2, f12_arg0, "ZMMapSelect", f12_arg1 )
			return true
		else
			
		end
	end, function ( f13_arg0, f13_arg1, f13_arg2 )
		if IsDvarValueEqualTo( "ui_freeDLC1", "1" ) and ShouldShowDLCWidget( f13_arg2, "mp_rise" ) and IsElementPropertyValue( f13_arg0, "purchasable", true ) then
			CoD.Menu.SetButtonLabel( f13_arg1, Enum.LUIButton.LUI_KEY_XBX_PSSQUARE, "" )
			return false
		else
			return false
		end
	end, false )
	self:addElement( MapList )
	self.MapList = MapList
	

	-- KJ MAP LIST 2 

	local MapList2 = LUI.UIList.new( f5_local1, controller, 2, 0, nil, false, false, 0, 0, false, false )
	MapList2:makeFocusable()
	MapList2:setLeftRight( true, false, 214, 494 ) -- 64, 344
	MapList2:setTopBottom( true, false, 134, 540 )
	MapList2:setWidgetType( CoD.List1ButtonLarge_ZM )
	MapList2:setVerticalCount( 12 )
	MapList2:setVerticalCounter( CoD.verticalCounter )
	MapList2:setVerticalScrollbar( CoD.verticalScrollbar )
	MapList2:setDataSource( "ZMMapsList" )
	MapList2:linkToElementModel( MapList2, "disabled", true, function ( model )
		local f6_local0 = MapList2
		local f6_local1 = {
			controller = controller,
			name = "model_validation",
			modelValue = Engine.GetModelValue( model ),
			modelName = "disabled"
		}
		CoD.Menu.UpdateButtonShownState( f6_local0, f5_local1, controller, Enum.LUIButton.LUI_KEY_XBA_PSCROSS )
	end )
	MapList2:registerEventHandler( "list_item_gain_focus", function ( element, event )
		local f7_local0 = nil
		SetElementPropertyOnPerControllerTable( controller, "zmLobbyEEMapRef", element, "mapId" )
		UpdateElementDataSource( self, "ZMLobbyEEList" )
		SetControllerModelValue( controller, "ZMMapSelectionPreloadImage", element.mapId )
		return f7_local0
	end )
	MapList2:registerEventHandler( "gain_focus", function ( element, event )
		local f8_local0 = nil
		if element.gainFocus then
			f8_local0 = element:gainFocus( event )
		elseif element.super.gainFocus then
			f8_local0 = element.super:gainFocus( event )
		end
		CoD.Menu.UpdateButtonShownState( element, f5_local1, controller, Enum.LUIButton.LUI_KEY_XBA_PSCROSS )
		CoD.Menu.UpdateButtonShownState( element, f5_local1, controller, Enum.LUIButton.LUI_KEY_XBX_PSSQUARE )
		return f8_local0
	end )
	MapList2:registerEventHandler( "lose_focus", function ( element, event )
		local f9_local0 = nil
		if element.loseFocus then
			f9_local0 = element:loseFocus( event )
		elseif element.super.loseFocus then
			f9_local0 = element.super:loseFocus( event )
		end
		return f9_local0
	end )
	f5_local1:AddButtonCallbackFunction( MapList2, controller, Enum.LUIButton.LUI_KEY_XBA_PSCROSS, "ENTER", function ( f10_arg0, f10_arg1, f10_arg2, f10_arg3 )
		if IsPerControllerTablePropertyValue( f10_arg2, "choosingZMPlaylist", true ) and IsElementPropertyValue( f10_arg0, "purchasable", true ) then
			OpenPurchaseMapPackConfirmation( f10_arg2, f10_arg0, "ZMMapSelect", f10_arg1 )
			return true
		elseif IsPerControllerTablePropertyValue( f10_arg2, "choosingZMPlaylist", true ) and not IsDisabled( f10_arg0, f10_arg2 ) then
			PlaylistSelected( f10_arg1, f10_arg0, f10_arg2 )
			ClearSavedState( self, f10_arg2 )
			return true
		elseif IsElementPropertyValue( f10_arg0, "purchasable", true ) then
			OpenPurchaseMapPackConfirmation( f10_arg2, f10_arg0, "ZMMapSelect", f10_arg1 )
			return true
		elseif not IsDisabled( f10_arg0, f10_arg2 ) then
			ProcessZMMapSelectListAction( self, f10_arg0, f10_arg2, f10_arg1 )
			return true
		else
			
		end
	end, function ( f11_arg0, f11_arg1, f11_arg2 )
		if IsPerControllerTablePropertyValue( f11_arg2, "choosingZMPlaylist", true ) and IsElementPropertyValue( f11_arg0, "purchasable", true ) then
			CoD.Menu.SetButtonLabel( f11_arg1, Enum.LUIButton.LUI_KEY_XBA_PSCROSS, "MENU_SELECT" )
			return true
		elseif IsPerControllerTablePropertyValue( f11_arg2, "choosingZMPlaylist", true ) and not IsDisabled( f11_arg0, f11_arg2 ) then
			CoD.Menu.SetButtonLabel( f11_arg1, Enum.LUIButton.LUI_KEY_XBA_PSCROSS, "MENU_SELECT" )
			return true
		elseif IsElementPropertyValue( f11_arg0, "purchasable", true ) then
			CoD.Menu.SetButtonLabel( f11_arg1, Enum.LUIButton.LUI_KEY_XBA_PSCROSS, "MENU_SELECT" )
			return true
		elseif not IsDisabled( f11_arg0, f11_arg2 ) then
			CoD.Menu.SetButtonLabel( f11_arg1, Enum.LUIButton.LUI_KEY_XBA_PSCROSS, "MENU_SELECT" )
			return true
		else
			return false
		end
	end, false )
	f5_local1:AddButtonCallbackFunction( MapList2, controller, Enum.LUIButton.LUI_KEY_XBX_PSSQUARE, nil, function ( f12_arg0, f12_arg1, f12_arg2, f12_arg3 )
		if IsDvarValueEqualTo( "ui_freeDLC1", "1" ) and ShouldShowDLCWidget( f12_arg2, "mp_rise" ) and IsElementPropertyValue( f12_arg0, "purchasable", true ) then
			OpenPurchaseMapPackConfirmation( f12_arg2, f12_arg0, "ZMMapSelect", f12_arg1 )
			return true
		else
			
		end
	end, function ( f13_arg0, f13_arg1, f13_arg2 )
		if IsDvarValueEqualTo( "ui_freeDLC1", "1" ) and ShouldShowDLCWidget( f13_arg2, "mp_rise" ) and IsElementPropertyValue( f13_arg0, "purchasable", true ) then
			CoD.Menu.SetButtonLabel( f13_arg1, Enum.LUIButton.LUI_KEY_XBX_PSSQUARE, "" )
			return false
		else
			return false
		end
	end, false )
	self:addElement( MapList2 )
	self.MapList2 = MapList2



	local MapPreview = LUI.UIImage.new()
	MapPreview:setLeftRight( true, false, 450.38, 1216 )
	MapPreview:setTopBottom( true, false, 131, 453 )
	self:addElement( MapPreview )
	self.MapPreview = MapPreview
	
	local MissionBriefTitle = LUI.UIText.new() -- TITLE UNDER THE MAP NAME, RIGHT ABOVE THE MAP DESC(MISSION BRIEFING)
	MissionBriefTitle:setLeftRight( true, false, 469.38, 802.34 )
	MissionBriefTitle:setTopBottom( true, false, 469.84, 493.84 )
	--MissionBriefTitle:setText( Engine.Localize( "MENU_MISSION_BRIEFING_CAPS" ) )
	MissionBriefTitle:setText( Engine.Localize( "^9[^5PZM^9]^7 PEG^9A^7SUS ^1ZOMBIE ^9MOD" ) )
	MissionBriefTitle:setTTF( "fonts/RefrigeratorDeluxe-Regular.ttf" )
	MissionBriefTitle:setAlignment( Enum.LUIAlignment.LUI_ALIGNMENT_LEFT )
	MissionBriefTitle:setAlignment( Enum.LUIAlignment.LUI_ALIGNMENT_TOP )
	self:addElement( MissionBriefTitle )
	self.MissionBriefTitle = MissionBriefTitle
	
	local MissionBriefText = CoD.verticalScrollingTextBox.new( f5_local1, controller )
	MissionBriefText:setLeftRight( true, false, 469.38, 1211 )
	MissionBriefText:setTopBottom( true, false, 503.23, 675.23 )
	MissionBriefText.textBox:setTTF( "fonts/RefrigeratorDeluxe-Regular.ttf" )
	MissionBriefText.textBox:setAlignment( Enum.LUIAlignment.LUI_ALIGNMENT_LEFT )
	self:addElement( MissionBriefText )
	self.MissionBriefText = MissionBriefText
	
	local Banner = LUI.UIImage.new()
	Banner:setLeftRight( true, false, 2450.38, 2216 ) -- 450.38, 1216
	Banner:setTopBottom( true, false, 2395, 2453 )   -- 395.5, 453
	Banner:setRGB( 0, 0, 0 )
	Banner:setAlpha( 0.7 )
	self:addElement( Banner )
	self.Banner = Banner
	
	local PlayCount = LUI.UIText.new()
	PlayCount:setLeftRight( true, false, 876.04, 1211 )
	PlayCount:setTopBottom( true, false, 375.5, 394.5 )
	PlayCount:setTTF( "fonts/UnitedSansSmCdMd.ttf" )
	PlayCount:setAlignment( Enum.LUIAlignment.LUI_ALIGNMENT_RIGHT )
	PlayCount:setAlignment( Enum.LUIAlignment.LUI_ALIGNMENT_TOP )
	self:addElement( PlayCount )
	self.PlayCount = PlayCount
	
	local MenuFrame = CoD.GenericMenuFrame.new( f5_local1, controller ) -- controls backbutton.. also controls map txt top left
	MenuFrame:setLeftRight( true, true, 0, 0 )
	MenuFrame:setTopBottom( true, true, -2, -2 )
	--MenuFrame.titleLabel:setText( Engine.Localize( "" ) ) -- "MPUI_MAPS_CAPS"
	--MenuFrame.cac3dTitleIntermediary0.FE3dTitleContainer0.MenuTitle.TextBox1.Label0:setText( Engine.Localize( "" ) ) -- "MPUI_MAPS_CAPS"
	--MenuFrame.cac3dTitleIntermediary0.FE3dTitleContainer0.MenuTitle.TextBox1.FeatureIcon.FeatureIcon:setImage( RegisterImage( "uie_t7_mp_icon_header_bubblebuffs" ) )
	self:addElement( MenuFrame )
	self.MenuFrame = MenuFrame
	
	local ZMMissionTile = CoD.ZMMissionTile.new( f5_local1, controller ) -- MAP NAME
	ZMMissionTile:setLeftRight( true, false, 463.38, 757.34 )
	ZMMissionTile:setTopBottom( true, false, 405, 444 )
	self:addElement( ZMMissionTile )
	self.ZMMissionTile = ZMMissionTile
	
	local DLCFreeweekend = CoD.DLC_Free_weekend.new( f5_local1, controller )
	DLCFreeweekend:setLeftRight( true, false, 74, 447.87 )
	DLCFreeweekend:setTopBottom( true, false, 494, 660 )
	DLCFreeweekend.DLCFreeTitleAndText.Title:setText( Engine.Localize( "MENU_DLC1_TRY_AWAKENING_FREE" ) )
	DLCFreeweekend.DLCFreeTitleAndText.Body:setText( Engine.Localize( "MENU_DLC1_ZM_TRY_AWAKENING_FREE_DESC" ) )
	DLCFreeweekend:mergeStateConditions( {
		{
			stateName = "Visible",
			condition = function ( menu, element, event )
				local f14_local0 = IsDvarValueEqualTo( "ui_freeDLC1", "1" )
				if f14_local0 then
					f14_local0 = ShouldShowDLCWidget( controller, "mp_rise" )
					if f14_local0 then
						f14_local0 = IsPerControllerTablePropertyValue( controller, "choosingZMPlaylist", true )
					end
				end
				return f14_local0
			end
		}
	} )
	self:addElement( DLCFreeweekend )
	self.DLCFreeweekend = DLCFreeweekend

	
	local ZMLobbyEEList = LUI.UIList.new( f5_local1, controller, -8, 0, nil, false, false, 0, 0, false, false )
	ZMLobbyEEList:makeFocusable()
	ZMLobbyEEList:setLeftRight( false, true, -331.49, -63.49 )
	ZMLobbyEEList:setTopBottom( false, true, -324, -264 )
	ZMLobbyEEList:setAlpha( 0.9 )
	ZMLobbyEEList:setWidgetType( CoD.ZMLobbyEEWidget )
	ZMLobbyEEList:setHorizontalCount( 5 )
	ZMLobbyEEList:setSpacing( -8 )
	ZMLobbyEEList:setDataSource( "ZMLobbyEEMapSelect" )
	self:addElement( ZMLobbyEEList )
	self.ZMLobbyEEList = ZMLobbyEEList
	
	local StreamedImagePreloader = LUI.UIImage.new()
	StreamedImagePreloader:setLeftRight( true, false, 1280, 1408 )
	StreamedImagePreloader:setTopBottom( true, false, 351.75, 479.75 )
	StreamedImagePreloader:setAlpha( 0 )
	StreamedImagePreloader:setupUIStreamedImage( 0 )
	self:addElement( StreamedImagePreloader )
	self.StreamedImagePreloader = StreamedImagePreloader
	

-- Keep track of which tab is selected
local tabSelected = 1
local tabNames = {"STOCK MAPS", "CUSTOM MAPS"}

-- Function to update all tab appearances
-- Update all tabs + show the right list
local function UpdateTabAppearance(self)
    if not self.tabButtons then return end

    for i, btn in ipairs(self.tabButtons) do
        local isSel = (i == tabSelected)
        btn.m_selected = isSel
        if isSel then
            btn:setState("Selected")
            btn:playClip("DefaultClip")
        else
            btn:setState("DefaultState")
            btn:playClip("DefaultClip")
        end
    end

    -- toggle lists
    local tabName = tabNames[tabSelected]
    if tabName == "STOCK MAPS" then
        if self.MapList  then self.MapList:setAlpha(1)  end
        if self.MapList2 then self.MapList2:setAlpha(0) end
    else -- "CUSTOM MAPS"
        if self.MapList  then self.MapList:setAlpha(0) end
        if self.MapList2 then self.MapList2:setAlpha(1) end
    end
end


-- CreateTabButton
local function CreateTabButton(self, index, labelText, x, y, width, height)
    local btn = LUI.UIButton.new()
    btn:setLeftRight(true, false, x, x + width)
    btn:setTopBottom(true, false, y, y + height)
    btn:makeFocusable()
    btn:setHandleMouse(true)
    btn:setForceMouseEventDispatch(true)
    btn.m_button = true  -- helps mouse routing in some menus

    -- background
    local bg = LUI.UIImage.new()
    bg:setLeftRight(true, true, 0, 0)
    bg:setTopBottom(true, true, 0, 0)
    bg:setImage(RegisterImage("uie_t7_hud_loadingscreen_factionbox_codcaster"))
    bg:setRGB(0.65, 0.0, 0.0)
    btn:addElement(bg)
    btn.bg = bg

    -- label
    local label = LUI.UIText.new()
    label:setLeftRight(true, true, 0, 0)
    label:setTopBottom(true, true, 0, 0)
    label:setTTF("fonts/escom.ttf")
    label:setAlignment(Enum.LUIAlignment.LUI_ALIGNMENT_CENTER)
    label:setText(labelText or "")
    btn:addElement(label)
    btn.label = label

    ----------------------------------------------------------------
    -- CLIPS: Default (idle), Over (hover), Selected (active)
    ----------------------------------------------------------------
-- inside your CreateTabButton function, *after* adding bg + label

btn.clipsPerState = {
    DefaultState = {
        DefaultClip = function (element)
            element:setupElementClipCounter(2)

            element.bg:completeAnimation()
            element.bg:setAlpha(0.5)
            element.clipFinished(element.bg, {})

            element.label:completeAnimation()
            element.label:setRGB(0.7, 0.7, 0.7)
            element.clipFinished(element.label, {})
        end
    },
    Over = {
        DefaultClip = function (element)
            element:setupElementClipCounter(2)

            element.bg:completeAnimation()
            element.bg:setAlpha(0.8)
            element.clipFinished(element.bg, {})

            element.label:completeAnimation()
            element.label:setRGB(1, 1, 1)
            element.clipFinished(element.label, {})
        end
    },
    Selected = {
        DefaultClip = function (element)
            element:setupElementClipCounter(2)

            element.bg:completeAnimation()
            element.bg:setAlpha(1)
            element.clipFinished(element.bg, {})

            element.label:completeAnimation()
            element.label:setRGB(1, 1, 1)
            element.clipFinished(element.label, {})
        end
    }
}

    -- initial state
    btn.m_selected = (index == tabSelected)
    btn:setState(btn.m_selected and "Selected" or "DefaultState")
    btn:playClip("DefaultClip")

    ----------------------------------------------------------------
    -- EVENTS: click to select, focus/mouse to hover
    ----------------------------------------------------------------
btn:registerEventHandler("gain_focus", function(element, event)
    if not element.m_selected then
        element:setState("Over")
    end
    return true
end)

btn:registerEventHandler("lose_focus", function(element, event)
    if not element.m_selected then
        element:setState("DefaultState")
    end
    return true
end)

btn:registerEventHandler("mouseenter", function(element, event)
    if not element.m_selected then
        element:setState("Over")
    end
    return true
end)

btn:registerEventHandler("mouseleave", function(element, event)
    if not element.m_selected then
        element:setState("DefaultState")
    end
    return true
end)

btn:registerEventHandler("leftmouseup", function(element, event) -- click the button -- only one working
    tabSelected = index
    element.m_selected = true
    UpdateTabAppearance(self)
    element:setState("Selected")
    return true
end)


    -- add + track
    self:addElement(btn)
    self.tabButtons = self.tabButtons or {}
    self.tabButtons[index] = btn
    return btn
end



-- Create two tabs
--local tabWidth, tabHeight = 200, 30
local tabWidth = 100
local tabHeight = 20
--CreateTabButton( self, index, labelText, x, y, width, height )
CreateTabButton(self, 1, "STOCK MAPS", 0, 20, tabWidth, tabHeight)
CreateTabButton(self, 2, "CUSTOM MAPS", 100, 20, tabWidth, tabHeight)

-- initialize appearance
UpdateTabAppearance(self)


	MapPreview:linkToElementModel( MapList, "Image", true, function ( model )
		local Image = Engine.GetModelValue( model )
		if Image then
			MapPreview:setImage( RegisterImage( MapImageToModPreview( Image ) ) )
		end
	end )
	MissionBriefText:linkToElementModel( MapList, "mapDescription", true, function ( model )
		local mapDescription = Engine.GetModelValue( model )
		if mapDescription then
			MissionBriefText.textBox:setText( Engine.Localize( mapDescription ) )
		end
	end )
	PlayCount:linkToElementModel( MapList, "playingCount", true, function ( model )
		local playingCount = Engine.GetModelValue( model )
		if playingCount then
			PlayCount:setText( Engine.Localize( playingCount ) )
		end
	end )
	ZMMissionTile:linkToElementModel( MapList, "mapName", true, function ( model )
		local mapName = Engine.GetModelValue( model )
		if mapName then
			ZMMissionTile.MapName:setText( Engine.Localize( mapName ) )
		end
	end )

	MapPreview:linkToElementModel( MapList2, "Image", true, function ( model )
		local Image = Engine.GetModelValue( model )
		if Image then
			MapPreview:setImage( RegisterImage( MapImageToModPreview( Image ) ) )
		end
	end )
	MissionBriefText:linkToElementModel( MapList2, "mapDescription", true, function ( model )
		local mapDescription = Engine.GetModelValue( model )
		if mapDescription then
			MissionBriefText.textBox:setText( Engine.Localize( mapDescription ) )
		end
	end )
	PlayCount:linkToElementModel( MapList2, "playingCount", true, function ( model )
		local playingCount = Engine.GetModelValue( model )
		if playingCount then
			PlayCount:setText( Engine.Localize( playingCount ) )
		end
	end )
	ZMMissionTile:linkToElementModel( MapList2, "mapName", true, function ( model )
		local mapName = Engine.GetModelValue( model )
		if mapName then
			ZMMissionTile.MapName:setText( Engine.Localize( mapName ) )
		end
	end )

	MapList.navigation = {
		right = ZMLobbyEEList
	}
	MapList2.navigation = {
		right = ZMLobbyEEList
	}
	--ZMLobbyEEList.navigation = { // KJ DO WE NEED THIS
	--	left = MapList
	--}
	self.clipsPerState = {
		DefaultState = {
			DefaultClip = function ()
				self:setupElementClipCounter( 2 )
				Banner:completeAnimation()
				self.Banner:setAlpha( 0.65 )
				self.clipFinished( Banner, {} )
				PlayCount:completeAnimation()
				self.PlayCount:setAlpha( 1 )
				self.clipFinished( PlayCount, {} )
			end
		},
		Playlists = {
			DefaultClip = function ()
				self:setupElementClipCounter( 2 )
				Banner:completeAnimation()
				self.Banner:setAlpha( 0.65 )
				self.clipFinished( Banner, {} )
				PlayCount:completeAnimation()
				self.PlayCount:setAlpha( 1 )
				self.clipFinished( PlayCount, {} )
			end
		}
	}
	self:mergeStateConditions( {
		{
			stateName = "Playlists",
			condition = function ( menu, element, event )
				return IsPerControllerTablePropertyValue( controller, "choosingZMPlaylist", true )
			end
		}
	} )
	CoD.Menu.AddNavigationHandler( f5_local1, self, controller )
	f5_local1:AddButtonCallbackFunction( self, controller, Enum.LUIButton.LUI_KEY_XBB_PSCIRCLE, nil, function ( f22_arg0, f22_arg1, f22_arg2, f22_arg3 )
		GoBack( self, f22_arg2 )
		return true
	end, function ( f23_arg0, f23_arg1, f23_arg2 )
		CoD.Menu.SetButtonLabel( f23_arg1, Enum.LUIButton.LUI_KEY_XBB_PSCIRCLE, "MENU_BACK" )
		return true
	end, false )
	MapList.id = "MapList"
	MapList2.id = "MapList2"
	MenuFrame:setModel( self.buttonModel, controller )
	ZMLobbyEEList.id = "ZMLobbyEEList"
	self:processEvent( {
		name = "menu_loaded",
		controller = controller
	} )
	self:processEvent( {
		name = "update_state",
		menu = f5_local1
	} )
	if not self:restoreState() then
		self.MapList:processEvent( {
			name = "gain_focus",
			controller = controller
		} )
	end
	if not self:restoreState() then
		self.MapList2:processEvent( {
			name = "gain_focus",
			controller = controller
		} )
	end
	LUI.OverrideFunction_CallOriginalSecond( self, "close", function ( element )
		element.MapList:close()
		element.MapList2:close()
		element.MissionBriefText:close()
		element.MenuFrame:close()
		element.ZMMissionTile:close()
		element.DLCFreeweekend:close()
		element.ZMLobbyEEList:close()
		element.MapPreview:close()
		element.PlayCount:close()
		Engine.UnsubscribeAndFreeModel( Engine.GetModel( Engine.GetModelForController( controller ), "ZMMapSelection.buttonPrompts" ) )
	end )
	if PostLoadFunc then
		PostLoadFunc( self, controller )
	end
	
	return self
end
Editor is loading...
Leave a Comment