ESOUI SVN TaosGroupUltimate

[/] [trunk/] [TaosGroupUltimate/] [ui/] [SwimlaneList.lua] - Rev 11

Go to most recent revision | Compare with Previous | Blame | View Log

--[[
        Addon: Taos Group Ultimate
        Author: TProg Taonnor
        Created by @Taonnor
]]--

--[[
        Global variables
]]--
local LOG_ACTIVE = true
local SWIMLANES = 6

--[[
        Class SwimlaneList
]]--
SwimlaneList = {}
SwimlaneList.__index = SwimlaneList

--[[
        Class Members
]]--
SwimlaneList.Swimlanes = {}


--[[
        Sets visibility of labels
]]--
function SwimlaneList.RefreshList()
        if (LOG_ACTIVE) then logTrace("SwimlaneList.RefreshList") end

--      for i=1, GROUP_SIZE_MAX, 1 do
--              local row = SwimlaneListControlContainerScrollChild:GetNamedChild("Row" .. i)

--        if (row ~= nil) then
--                  if (DoesUnitExist("group" .. i) == false) then
--                          row:SetHidden(true)
--                          row:GetNamedChild("SenderNameValueLabel"):SetText("-")
--                          row:GetNamedChild("UltimateValueLabel"):SetText("-")
--                          row:GetNamedChild("ReadyValueLabel"):SetText("0")
--                  end
--        else
--            if (LOG_ACTIVE) then logError("SwimlaneList.RefreshList, row nil " .. i) end
--        end
--      end
end

--[[
        Updates list row
]]--
function SwimlaneList.UpdateListRow(player)
        if (LOG_ACTIVE) then 
--        logTrace("SwimlaneList.UpdateListRow")
--        logDebug("player.PingTag: " .. tostring(player.PingTag),
--                 "player.GroupNumber: " .. tostring(player.GroupNumber), 
--                 "player.PlayerName: " .. tostring(player.PlayerName), 
--                 "player.IsPlayerDead: " .. tostring(player.IsPlayerDead), 
--                 "player.AbilityID: " .. tostring(player.AbilityID), 
--                 "player.UltimateName: " .. tostring(player.UltimateName), 
--                 "player.UltimateIcon: " .. tostring(player.UltimateIcon), 
--                 "player.RelativeUltimate: " .. tostring(player.RelativeUltimate))
    end

        if (player) then
--        local ultimateGroupId = UltimateGroupHandler.GetUltimateGroupByAbilityId(player.AbilityID)
--        local swimLane = SwimlaneList.GetSwimLane(ultimateGroupId)
--        local row = nil

--        if (swimLane) then
--            local playerRowId = SwimlaneList.GetSwimLaneRow(swimLane, player.PlayerName)

--            if (playerRowId ~= -1) then
--                row = swimLane.SwimLaneControl:GetNamedChild("Row" .. playerRowId)
--            else
--                local nextFreeRow = 1

--                for i,player in ipairs(swimLane.Players) do
--                          nextFreeRow = nextFreeRow + 1
--                  end

--                row = CreateControlFromVirtual("$(parent)Row", swimLane.SwimLaneControl, "GroupUltimateSwimlaneListRow", nextFreeRow)
--            end
--        end

--              if (row ~= nil) then
--            row:SetHidden(false)

--            -- TODO: Update RelativeUltimateStatusBar
--            row:GetNamedChild("SenderNameValueLabel"):SetText(player.PlayerName)

--                      if (player.IsPlayerDead) then
--                row:GetNamedChild("SenderNameValueLabel"):SetColor(1.0, 0.0, 0.0, 1)
--            elseif (player.RelativeUltimate == 100) then
--                              row:GetNamedChild("SenderNameValueLabel"):SetColor(0.0, 1.0, 0.0, 1)
--                      else
--                              row:GetNamedChild("SenderNameValueLabel"):SetColor(1.0, 1.0, 1.0, 1)
--                      end
--              else
--                      if (LOG_ACTIVE) then logError("SwimlaneList.UpdateListRow, row nil " .. tostring(player.GroupNumber)) end
--              end
        end
end

--[[
        Get swimlane from current SwimLanes
]]--
function SwimlaneList.GetSwimLane(ultimateGroupId)
    if (LOG_ACTIVE) then 
        logTrace("SwimlaneList.GetSwimLane")
        logDebug("ultimateGroupId: " .. tostring(ultimateGroupId))
    end

    if (ultimateGroupId ~= 0) then
        for i,swimLane in ipairs(SwimlaneList.Swimlanes) do
                    if (swimLane.UltimateGroupId == ultimateGroupId) then
                return swimLane
            end
            end

        if (LOG_ACTIVE) then logDebug("SwimlaneList.GetSwimLane, swimLane not found " .. tostring(ultimateGroupId)) end
        return nil
    else
        if (LOG_ACTIVE) then logError("SwimlaneList.GetSwimLane, ultimateGroupId is 0") end
        return nil
    end
end

--[[
        Get Player Row from current players in swimlane
]]--
function SwimlaneList.GetSwimLaneRow(swimLane, playerName)
    if (LOG_ACTIVE) then 
        logTrace("SwimlaneList.GetSwimLaneRow")
        logDebug("swimLane ID: " .. tostring(swimLane.Id))
    end

    if (swimLane) then
        for i,player in ipairs(swimLane.Players) do
                    if (player.PlayerName == playerName) then
                return i
            end
            end

        if (LOG_ACTIVE) then logDebug("SwimlaneList.GetSwimLane, player not found " .. tostring(playerName)) end
        return -1
    else
        if (LOG_ACTIVE) then logError("SwimlaneList.GetSwimLane, swimLane is nil") end
        return -1
    end
end

--[[
        SetControlMovable sets the Movable and MouseEnabled flag in UI elements
]]--
function SwimlaneList.SetControlMovable(isMovable)
    if (LOG_ACTIVE) then 
        logTrace("SwimlaneList.SetControlMovable")
        logDebug("isMovable: " .. tostring(isMovable))
    end

    SwimlaneListControl:SetMovable(isMovable)
        SwimlaneListControl:SetMouseEnabled(isMovable)
end

--[[
        RestorePosition sets SwimlaneList on settings position
]]--
function SwimlaneList.RestorePosition(posX, posY)
    if (LOG_ACTIVE) then 
        logTrace("SwimlaneList.RestorePosition")
        logDebug("posX: " .. tostring(posX), 
                 "posY: " .. tostring(posY))
    end

        SwimlaneListControl:ClearAnchors()
        SwimlaneListControl:SetAnchor(TOPLEFT, GuiRoot, TOPLEFT, posX, posY)
end

--[[
        OnSwimlaneListMoveStop saves current SwimlaneList position to settings
]]--
function SwimlaneList.OnSwimlaneListMoveStop()
    if (LOG_ACTIVE) then logTrace("SwimlaneList.OnSwimlaneListMoveStop") end

        local left = SwimlaneListControl:GetLeft()
        local top = SwimlaneListControl:GetTop()
        
    SettingsHandler.SavedVariables.PosX = left
    SettingsHandler.SavedVariables.PosY = top

    if (LOG_ACTIVE) then 
        logDebug("PosX set: " .. tostring(SettingsHandler.SavedVariables.PosX), 
                 "PosY set: " .. tostring(SettingsHandler.SavedVariables.PosY))
    end
end

--[[
        SetControlHidden sets hidden on control
]]--
function SwimlaneList.SetControlHidden(isHidden)
    if (LOG_ACTIVE) then 
        logTrace("SwimlaneList.SetControlHidden")
        logDebug("isHidden: " .. tostring(isHidden))
    end

    SwimlaneListControl:SetHidden(isHidden)
end

--[[
        CreateSwimLaneListHeaders creates swimlane list headers
]]--
function SwimlaneList.CreateSwimLaneListHeaders()
    if (LOG_ACTIVE) then logTrace("SwimlaneList.CreateSwimLaneListHeaders") end

        for i=1, SWIMLANES, 1 do
        local ultimateGroupId = SettingsHandler.SavedVariables.SwimlaneUltimateGroupIds[i]
        local headerIconName = "Swimlane" .. tostring(i) .."HeaderIcon"
        local swimLaneControlName = "Container" .. tostring(i) .."ScrollChild"
        local icon = SwimlaneListControl:GetNamedChild(headerIconName)
        local swimLaneControl = SwimlaneListControl:GetNamedChild(swimLaneControlName)

        if (icon ~= nil and swimLaneControl ~= nil) then
            if (ultimateGroupId ~= 0) then
                if (LOG_ACTIVE) then 
                    logDebug("Create Swimlane: " .. tostring(i),
                             "ultimateGroupId: " .. tostring(ultimateGroupId),
                             "headerIconName: " .. tostring(headerIconName),
                             "swimLaneControlName: " .. tostring(swimLaneControlName))
                end

                icon:SetHidden(false)
                icon:SetTexture(GetAbilityIcon(ultimateGroupId))

                local swimLane = {}
                swimLane.Id = i
                swimLane.UltimateGroupId = ultimateGroupId
                swimLane.SwimLaneControl = swimLaneControl
                swimLane.Players = {}

                    SwimlaneList.Swimlanes[i] = swimLane
            else
                header:SetHidden(true)
                icon:SetHidden(true)
            end
        else
            if (LOG_ACTIVE) then 
                logError("SwimlaneList.CreateSwimLaneListHeaders, controls nil " .. tostring(header) .. ";" .. tostring(icon) .. ";" .. tostring(swimLaneControl))
            end
        end
        end

    logDebug("Create TestRow")
    local row = CreateControlFromVirtual("$(parent)Row", SwimlaneListControlContainer1ScrollChild, "GroupUltimateSwimlaneListRow", 1)
    row:SetAnchor(TOPLEFT, SwimlaneListControlContainer1ScrollChild, TOPLEFT, 0, 0)
    row:GetNamedChild("SenderNameValueLabel"):SetText("Test")
    row:GetNamedChild("RelativeUltimateStatusBar"):SetValue(50)
end

--[[
        CreateSwimlaneListRows creates swimlane lsit rows
]]--
function SwimlaneList.CreateSwimlaneListRows()
    if (LOG_ACTIVE) then logTrace("SwimlaneList.CreateSwimlaneListRows") end

--      for i=1, GROUP_SIZE_MAX, 1 do
--              local row = CreateControlFromVirtual("$(parent)Row", SwimlaneListControlContainerScrollChild, "GroupUltimateSwimlaneListRow", i)
--        logDebug("Row created " .. row:GetName())
--              --row:SetHidden(true) -- initial not visible

--              if i == 1 then
--            row:SetAnchor(TOPLEFT, SwimlaneListControlContainerScrollChild, TOPLEFT, 0, 0)
--        else
--            row:SetAnchor(TOP, lastRow, BOTTOM, 0, 0)
--        end

--              lastRow = row
--      end
end

--[[
        Initialize initializes SwimlaneList
]]--
function SwimlaneList.Initialize(isHidden, isMovable, posX, posY)
    if (LOG_ACTIVE) then 
        logTrace("SwimlaneList.Initialize")
        logDebug("isHidden: " .. tostring(isHidden), 
                 "isMovable: " .. tostring(isMovable), 
                 "posX: " .. tostring(posX), 
                 "posY: " .. tostring(posY))
    end

    SwimlaneList.SetControlHidden(isHidden)
    SwimlaneList.SetControlMovable(isMovable)
    SwimlaneList.RestorePosition(posX, posY)
    SwimlaneList.CreateSwimLaneListHeaders()
    SwimlaneList.CreateSwimlaneListRows()

    CALLBACK_MANAGER:RegisterCallback("TGU-GroupChanged", SwimlaneList.RefreshList)
    CALLBACK_MANAGER:RegisterCallback("TGU-MapPingChanged", SwimlaneList.UpdateListRow)
end

Go to most recent revision | Compare with Previous | Blame