diff --git a/esoui/ingame/group/keyboard/zo_groupingtools_keyboard.lua b/esoui/ingame/group/keyboard/zo_groupingtools_keyboard.lua
deleted file mode 100755
index c7677ba..0000000
--- a/esoui/ingame/group/keyboard/zo_groupingtools_keyboard.lua
+++ /dev/null
@@ -1,425 +0,0 @@
-----------------------------------
---Grouping Tools Keyboard
-----------------------------------
-
-local LFM_MODE = 1
-local LFG_MODE = 2
-
-local MODE_STRINGS =
-{
- [LFM_MODE] = GetString(SI_GROUPING_TOOLS_PANEL_FIND_MEMBERS),
- [LFG_MODE] = GetString(SI_GROUPING_TOOLS_PANEL_JOIN_A_GROUP),
-}
-
-local function GetLFGEntryString(name, levelMin, levelMax, veteranRankMin, veteranRankMax)
- local minString
- local maxString
-
- if levelMin < GetMaxLevel() then
- minString = tostring(levelMin)
- else
- minString = GetLevelOrVeteranRankString(levelMin, veteranRankMin, 28)
- end
-
- if veteranRankMax > 0 then
- local maxRank = GetMaxVeteranRank()
- local rank = veteranRankMax < maxRank and veteranRankMax or maxRank
- maxString = GetLevelOrVeteranRankString(levelMax, rank, 28)
- else
- maxString = tostring(levelMax)
- end
-
- if minString and maxString then
- if minString == maxString then
- return zo_strformat(SI_GROUPING_TOOLS_PANEL_LOCATION_FORMAT_NO_RANGE_STRING, maxString, name)
- else
- return zo_strformat(SI_GROUPING_TOOLS_PANEL_LOCATION_FORMAT_STRING, minString, maxString, name)
- end
- else
- return name
- end
-end
-
-
-local ZO_GroupingToolsManager_Keyboard = ZO_Object:Subclass()
-
-function ZO_GroupingToolsManager_Keyboard:New(...)
- local manager = ZO_Object.New(self)
- manager:Initialize(...)
- return manager
-end
-
---Initialization
-function ZO_GroupingToolsManager_Keyboard:Initialize(control)
- self.control = control
- self.notLeaderLabel = control:GetNamedChild("NotLeader")
-
- local leaderSectionControl = control:GetNamedChild("LeaderSection")
- self.leaderSectionControl = leaderSectionControl
- self.activityTypeMenuControl = leaderSectionControl:GetNamedChild("ActivityTypeMenu")
- self.locationMenuControl = leaderSectionControl:GetNamedChild("LocationMenu")
-
- self.modeLabel = leaderSectionControl:GetNamedChild("ModeLabel")
- self.activityTypeHeaderLabel = self.activityTypeMenuControl:GetNamedChild("Text")
- self.loactionHeaderLabel = self.locationMenuControl:GetNamedChild("Text")
- self.groupSizeLabel = leaderSectionControl:GetNamedChild("GroupSize")
-
- self:InitializeKeybindDescriptors()
- self:InitializeMenus()
- self:InitializeEvents()
- self:InitializeScene()
-
- self.activityTypeMenu:SelectFirstItem()
-end
-
-function ZO_GroupingToolsManager_Keyboard:InitializeKeybindDescriptors()
- self.keybindStripDescriptor =
- {
- alignment = KEYBIND_STRIP_ALIGN_CENTER,
-
- -- Invite to Group
- {
- name = GetString(SI_GROUP_WINDOW_INVITE_PLAYER),
- keybind = "UI_SHORTCUT_PRIMARY",
-
- callback = function()
- ZO_Dialogs_ShowDialog("GROUP_INVITE")
- end,
-
- visible = function()
- local playerIsLeader = IsUnitGroupLeader("player")
- return not self.playerIsGrouped or (playerIsLeader and GetGroupSize() < GROUP_SIZE_MAX)
- end
- },
-
- -- Start Search
- {
- name = GetString(SI_GROUPING_TOOLS_PANEL_START_SEARCH),
- keybind = "UI_SHORTCUT_SECONDARY",
-
- callback = function()
- local entry = self.locationsMenu:GetSelectedItemData()
- local data = entry.data
-
- if self.currentMode == LFG_MODE then
- StartLFGSearch(data.activityType, data.activityIndex, data.groupType)
- else
- ClearGroupFinderSearch()
- AddGroupFinderSearchEntry(data.activityType, data.activityIndex)
- StartGroupFinderSearch()
- end
- end,
-
- visible = function()
- local entry = self.locationsMenu:GetSelectedItemData()
- local data = entry and entry.data
- if not data then
- return false
- end
-
- if data.isEmptyEntry then
- return false
- end
-
- local groupFull = GetGroupSize() >= ZO_GROUP_TYPE_TO_SIZE[data.groupType]
- local playerIsLeader = IsUnitGroupLeader("player")
-
- return not IsCurrentlySearchingForGroup() and not groupFull and (not self.playerIsGrouped or playerIsLeader)
- end
- },
-
- -- Cancel Search
- {
- name = GetString(SI_GROUP_WINDOW_CANCEL_SEARCH),
- keybind = "UI_SHORTCUT_NEGATIVE",
-
- callback = function()
- ZO_Dialogs_ShowDialog("LFG_LEAVE_QUEUE_CONFIRMATION")
- end,
-
- visible = function()
- local playerIsLeader = IsUnitGroupLeader("player")
- return IsCurrentlySearchingForGroup() and (not self.playerIsGrouped or playerIsLeader)
- end
- },
- }
-end
-
-function ZO_GroupingToolsManager_Keyboard:InitializeMenus()
- --Activity Types
- local function OnActivityTypeChanged(comboBox, name, entry)
- self.previouslySelectedLocation = nil
- self:UpdateLocationMenu()
- end
-
- local activityTypeMenu = ZO_ComboBox:New(self.activityTypeMenuControl:GetNamedChild("Dropdown"))
- self.activityTypeMenu = activityTypeMenu
- activityTypeMenu:SetSortsItems(false)
-
- local function AddActivityTypeEntry(activityType)
- local text = GetString("SI_LFGACTIVITY", activityType)
- local entry = activityTypeMenu:CreateItemEntry(text, OnActivityTypeChanged)
-
- entry.data = {activityType = activityType}
- activityTypeMenu:AddItem(entry)
- end
- AddActivityTypeEntry(LFG_ACTIVITY_CYRODIIL)
- AddActivityTypeEntry(LFG_ACTIVITY_IMPERIAL_CITY)
- AddActivityTypeEntry(LFG_ACTIVITY_DUNGEON)
- AddActivityTypeEntry(LFG_ACTIVITY_MASTER_DUNGEON)
-
- --Activities
- self.locationsMenu = ZO_ComboBox:New(self.locationMenuControl:GetNamedChild("Dropdown"))
- self.locationsMenu:SetSortsItems(false)
-end
-
-function ZO_GroupingToolsManager_Keyboard:InitializeEvents()
- local function Update()
- self:Update()
- end
-
- local function OnGroupChanged()
- local isGrouped = IsUnitGrouped("player")
- local groupedStateChanged = self.playerIsGrouped ~= isGrouped
-
- if groupedStateChanged and isGrouped and GROUPING_TOOLS_SCENE:IsShowing() then
- MAIN_MENU_KEYBOARD:ShowScene("groupList")
- else
- Update()
- end
- end
-
- local function OnGroupMemberJoined(event, rawCharacterName)
- if GetRawUnitName("player") == rawCharacterName then
- --Set selected location to the one the LFG group just formed for.
- if IsInLFGGroup() then
- local activityType, activityIndex = GetCurrentLFGActivity()
- self.previouslySelectedLocation = {activityType = activityType, activityIndex = activityIndex}
- end
- end
-
- OnGroupChanged()
- end
-
- local control = self.control
- control:RegisterForEvent(EVENT_PLAYER_ACTIVATED, Update)
- control:RegisterForEvent(EVENT_UNIT_CREATED, OnGroupChanged)
- control:RegisterForEvent(EVENT_UNIT_DESTROYED, Update)
- control:RegisterForEvent(EVENT_GROUP_UPDATE, OnGroupChanged)
- control:RegisterForEvent(EVENT_GROUP_MEMBER_JOINED, OnGroupMemberJoined)
- control:RegisterForEvent(EVENT_GROUP_MEMBER_LEFT, Update)
- control:RegisterForEvent(EVENT_LEADER_UPDATE, Update)
- control:RegisterForEvent(EVENT_GROUPING_TOOLS_STATUS_UPDATE, Update)
-end
-
-function ZO_GroupingToolsManager_Keyboard:InitializeScene()
- local function OnStateChange(oldState, newState)
- if newState == SCENE_SHOWING then
- KEYBIND_STRIP:AddKeybindButtonGroup(self.keybindStripDescriptor)
- self:Update()
- elseif newState == SCENE_HIDDEN then
- KEYBIND_STRIP:RemoveKeybindButtonGroup(self.keybindStripDescriptor)
- end
- end
-
- GROUPING_TOOLS_SCENE = ZO_Scene:New("groupingToolsKeyboard", SCENE_MANAGER)
- GROUPING_TOOLS_SCENE:RegisterCallback("StateChange", OnStateChange)
-end
-
---Updates
-function ZO_GroupingToolsManager_Keyboard:Update()
- if not GROUPING_TOOLS_SCENE:IsShowing() then
- return
- end
-
- self.playerIsGrouped = IsUnitGrouped("player")
-
- self:UpdateMode()
- self:UpdateEnabledState()
- self:UpdateVisibileState()
-
- self:UpdateActivityTypeMenu()
- self:UpdateLocationMenu()
-
- KEYBIND_STRIP:UpdateKeybindButtonGroup(self.keybindStripDescriptor)
-end
-
-function ZO_GroupingToolsManager_Keyboard:UpdateMode()
- local mode = self.playerIsGrouped and LFM_MODE or LFG_MODE
- self.currentMode = mode
- self.modeLabel:SetText(MODE_STRINGS[mode])
-end
-
-function ZO_GroupingToolsManager_Keyboard:UpdateEnabledState()
- local enabled = not IsCurrentlySearchingForGroup()
-
- self.activityTypeMenu:SetEnabled(enabled)
- self.locationsMenu:SetEnabled(enabled)
-
- local color = enabled and ZO_SELECTED_TEXT or ZO_DISABLED_TEXT
-
- self.activityTypeMenu:SetSelectedColor(color:UnpackRGBA())
- self.locationsMenu:SetSelectedColor(color:UnpackRGBA())
-
- self.modeLabel:SetColor(color:UnpackRGBA())
- self.activityTypeHeaderLabel:SetColor(color:UnpackRGBA())
- self.loactionHeaderLabel:SetColor(color:UnpackRGBA())
-
-
- if PREFERRED_ROLES then
- PREFERRED_ROLES:DisableRoleButtons(not enabled)
- end
-end
-
-function ZO_GroupingToolsManager_Keyboard:UpdateVisibileState()
- local playerIsLeader = IsUnitGroupLeader("player")
- local visible = not self.playerIsGrouped or playerIsLeader
-
- self.notLeaderLabel:SetHidden(visible)
- self.leaderSectionControl:SetHidden(not visible)
-end
-
-function ZO_GroupingToolsManager_Keyboard:UpdateActivityTypeMenu()
- --Select activity type from current search
- if GetNumLFGRequests() > 0 then
- local activityType = GetLFGRequestInfo(1) -- assumes all requests are for the same activity
-
- local function IsActivityByEval(entry)
- return entry.data.activityType == activityType
- end
- self.activityTypeMenu:SetSelectedItemByEval(IsActivityByEval)
- end
-end
-
-function ZO_GroupingToolsManager_Keyboard:UpdateLocationData()
- self.lfgOptions = {}
- local activityType = self.activityTypeMenu:GetSelectedItemData().data.activityType
- local activityIsAvA = activityType == LFG_ACTIVITY_CYRODIIL or activityType == LFG_ACTIVITY_IMPERIAL_CITY
- if IsInAvAZone() then
- if IsInLFGGroup() or not activityIsAvA then
- return
- end
- elseif activityIsAvA then
- return
- end
-
- local playerLevel = GetUnitLevel("player")
- local playerVeteranRank = GetUnitVeteranRank("player")
-
- for i = 1, GetNumLFGOptions(activityType) do
- local name, levelMin, levelMax, veteranRankMin, veteranRankMax, groupType, passedReqs = GetLFGOption(activityType, i)
- if passedReqs then
- local passesLevelorRankCheck = false
- if playerVeteranRank == 0 then
- passesLevelorRankCheck = playerLevel >= levelMin and playerLevel <= levelMax
- else
- passesLevelorRankCheck = playerVeteranRank >= veteranRankMin and playerVeteranRank <= veteranRankMax
- end
-
- local requiredCollectible = GetRequiredLFGCollectibleId(activityType, i)
- local passesCollectibleRequirement = requiredCollectible == 0 or IsCollectibleUnlocked(requiredCollectible)
- local passesAVAZoneCheck = (not activityIsAvA) or IsInLFGAVAZone(activityType, i)
-
- if passesLevelorRankCheck and passesCollectibleRequirement and passesAVAZoneCheck then
- local data = {
- activityType = activityType,
- activityIndex = i,
- name = name,
- levelMin = levelMin,
- levelMax = levelMax,
- veteranRankMin = veteranRankMin,
- veteranRankMax = veteranRankMax,
- groupType = groupType,
- displayText = GetLFGEntryString(name, levelMin, levelMax, veteranRankMin, veteranRankMax),
- }
- table.insert(self.lfgOptions, data)
- end
- end
- end
-
- table.sort(self.lfgOptions, LFGLevelSort)
-end
-
-function ZO_GroupingToolsManager_Keyboard:OnLocationChanged(comboBox, name, entry)
- local data = entry.data
-
- local text
- if data then
- local groupSize = ZO_GROUP_TYPE_TO_SIZE[data.groupType]
- text = zo_strformat(SI_LFG_LOCATION_GROUP_SIZE, groupSize)
- end
- self.groupSizeLabel:SetText(text)
-
- KEYBIND_STRIP:UpdateKeybindButtonGroup(self.keybindStripDescriptor)
-
- self.previouslySelectedLocation = data
-end
-
-function ZO_GroupingToolsManager_Keyboard:AddLocationEntry(data)
- local entry = self.locationsMenu:CreateItemEntry(data.displayText, function(...) self:OnLocationChanged(...) end)
- entry.data = data
- self.locationsMenu:AddItem(entry)
- return entry
-end
-
-function ZO_GroupingToolsManager_Keyboard:UpdateLocationMenu()
- self:UpdateLocationData()
-
- self.locationsMenu:ClearItems()
-
- local lfgMode = self.currentMode == LFG_MODE
- local activityType = self.activityTypeMenu:GetSelectedItemData().data.activityType
- local numLfgOptions = GetNumLFGOptions(activityType)
-
- if #self.lfgOptions > 0 then
- -- Addition of entry for the fake 'all' option to cause the c++ to queue for all entries in that activity type
- if lfgMode and DoesLFGActivityHasAllOption(activityType) then
- local allString = ""
- if activityType == LFG_ACTIVITY_DUNGEON then
- allString = GetString(SI_LFG_ANY_DUNGEON)
- elseif activityType == LFG_ACTIVITY_MASTER_DUNGEON then
- allString = GetString(SI_LFG_ANY_VETERAN_DUNGEON)
- end
- local allIndex = numLfgOptions + 1
- local entry = self:AddLocationEntry({activityType = activityType, activityIndex = allIndex, groupType = LFG_GROUP_TYPE_REGULAR, displayText = allString})
- end
-
- for i = 1, #self.lfgOptions do
- local data = self.lfgOptions[i]
- local entry = self:AddLocationEntry(data)
- end
-
- local numRequests = GetNumLFGRequests()
- if numRequests > 1 then --all is the only option that searches on multiple locations
- self.locationsMenu:SelectFirstItem()
- elseif numRequests > 0 then
- local activityType, activityIndex = GetLFGRequestInfo(1)
- local function IsLocationByEval(entry)
- local data = entry.data
- return data.activityType == activityType and data.activityIndex == activityIndex
- end
- self.locationsMenu:SetSelectedItemByEval(IsLocationByEval)
- else
- local previouslySelectedLocation = self.previouslySelectedLocation
- if previouslySelectedLocation then
- local function IsLocationByEval(entry)
- local data = entry.data
- return data.activityType == previouslySelectedLocation.activityType and data.activityIndex == previouslySelectedLocation.activityIndex
- end
- if not self.locationsMenu:SetSelectedItemByEval(IsLocationByEval) then
- self.locationsMenu:SelectFirstItem()
- end
- else
- self.locationsMenu:SelectFirstItem()
- end
- end
- else
- self:AddLocationEntry({displayText = GetString(SI_GROUPING_TOOLS_PANEL_NONE_AVAILABLE), isEmptyEntry = true})
- self.locationsMenu:SelectFirstItem()
- end
-end
-
---Global XML
-function ZO_GroupingToolsKeyboard_OnInitialized(control)
- GROUPING_TOOLS_KEYBOARD = ZO_GroupingToolsManager_Keyboard:New(control)
-end