базовый encounter journal
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
--[[----------------------------------------------------------------------------
|
||||
patches/Custom_EncounterJournal.lua.patch
|
||||
─────────────────────────────────────────────────────────────────────────────
|
||||
Патч-сниппеты для существующего Custom_EncounterJournal.lua. Эти куски
|
||||
добавляют routing новой вкладки и hide-show поведение по требованиям:
|
||||
|
||||
«при выборе guide tab:
|
||||
- hide instance cards
|
||||
- hide Encounter Journal detail panel
|
||||
- hide suggested content panel
|
||||
- hide loot journal panel
|
||||
- hide or disable the expansion/tier dropdown unless explicitly needed
|
||||
- show PlayerGuideFrame»
|
||||
------------------------------------------------------------------------------]]
|
||||
|
||||
-- ─── ПАТЧ #1 ───────────────────────────────────────────────────────────────
|
||||
-- НАЙТИ функцию EJ_ContentTab_Select (или ту, что переключает вкладки в
|
||||
-- Encounter Journal). Обычно она выглядит как switch по id вкладки.
|
||||
-- ДОБАВИТЬ ветку для нашей вкладки. Пример полностью переписанной функции:
|
||||
|
||||
local PLAYERGUIDE_TAB_ID = 1 -- должен совпадать с id="1" в XML патче
|
||||
|
||||
function EJ_ContentTab_Select(id)
|
||||
EncounterJournal.suggestTab:UnlockHighlight()
|
||||
EncounterJournal.dungeonsTab:UnlockHighlight()
|
||||
EncounterJournal.raidsTab:UnlockHighlight()
|
||||
if EncounterJournal.lootJournalTab then
|
||||
EncounterJournal.lootJournalTab:UnlockHighlight()
|
||||
end
|
||||
if EncounterJournal.guideTab then
|
||||
EncounterJournal.guideTab:UnlockHighlight()
|
||||
end
|
||||
|
||||
-- Прячем «обычные» панели EJ. Этот хелпер уже есть в Custom_EncounterJournal:
|
||||
-- EncounterJournal_HideAllPanels()
|
||||
-- Если его нет — выньте тело сюда (Hide instance list, encounter, loot).
|
||||
EncounterJournal_HideAllPanels()
|
||||
|
||||
-- Прячем PlayerGuideFrame — он показывается только на guide-вкладке.
|
||||
if PlayerGuideFrame then PlayerGuideFrame:Hide() end
|
||||
|
||||
if id == PLAYERGUIDE_TAB_ID then
|
||||
-- НАША ВКЛАДКА -----------------------------------------------------
|
||||
EncounterJournal.guideTab:LockHighlight()
|
||||
EncounterJournal.instanceSelect:Hide()
|
||||
EncounterJournal.encounter:Hide()
|
||||
if EncounterJournalSuggestFrame then EncounterJournalSuggestFrame:Hide() end
|
||||
if LootJournal then LootJournal:Hide() end
|
||||
-- Скрыть/задисейблить дропдаун расширений, как просят требования:
|
||||
if EJTierDropDown then EJTierDropDown:Hide() end
|
||||
|
||||
if PlayerGuideFrame then PlayerGuideFrame:Show() end
|
||||
return
|
||||
end
|
||||
|
||||
-- ── Остальные вкладки — оригинальная логика ──
|
||||
if EJTierDropDown then EJTierDropDown:Show() end
|
||||
|
||||
if id == 2 then -- SuggestTab (было 1)
|
||||
EncounterJournal.suggestTab:LockHighlight()
|
||||
EncounterJournal_ListInstances() -- или ваш Suggest-Show
|
||||
elseif id == 3 then -- DungeonTab
|
||||
EncounterJournal.dungeonsTab:LockHighlight()
|
||||
EJ_HideNonInstancePanels()
|
||||
EncounterJournal_ListInstances()
|
||||
elseif id == 4 then -- RaidTab
|
||||
EncounterJournal.raidsTab:LockHighlight()
|
||||
EJ_HideNonInstancePanels()
|
||||
EncounterJournal_ListInstances()
|
||||
elseif id == 5 then -- LootJournalTab
|
||||
if EncounterJournal.lootJournalTab then
|
||||
EncounterJournal.lootJournalTab:LockHighlight()
|
||||
end
|
||||
if LootJournal_Show then LootJournal_Show() end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- ─── ПАТЧ #2 ───────────────────────────────────────────────────────────────
|
||||
-- В EJ_ContentTab_OnClick добавить вызов нашего Select для tab id=1
|
||||
-- (если у вас один централизованный _OnClick — он уже передаёт id и
|
||||
-- ничего дополнительно делать не нужно):
|
||||
|
||||
function EJ_ContentTab_OnClick(self)
|
||||
EJ_ContentTab_Select(self:GetID())
|
||||
PlaySound("igCharacterInfoTab")
|
||||
end
|
||||
|
||||
|
||||
-- ─── ПАТЧ #3 ───────────────────────────────────────────────────────────────
|
||||
-- Защита: при открытии EJ через EncounterJournal_OpenJournal — переключиться
|
||||
-- НА dungeon/raid таб, а не оставлять guide-таб выбранным.
|
||||
-- Найдите вашу EncounterJournal_OpenJournal и убедитесь, что в начале:
|
||||
|
||||
local _orig_EncounterJournal_OpenJournal = EncounterJournal_OpenJournal
|
||||
function EncounterJournal_OpenJournal(instanceID, encounterID, ...)
|
||||
-- При прямом открытии конкретного instance — переключиться на Dungeon/Raid
|
||||
if instanceID then
|
||||
EJ_ContentTab_Select(3) -- Dungeon по умолчанию; ваша логика может выбрать Raid
|
||||
end
|
||||
return _orig_EncounterJournal_OpenJournal(instanceID, encounterID, ...)
|
||||
end
|
||||
|
||||
|
||||
-- ─── ПАТЧ #4 ───────────────────────────────────────────────────────────────
|
||||
-- Init: статика для разработки (можно убрать перед релизом). Если AIO
|
||||
-- ещё не успел прислать payload — покажем dev-payload через 1с после
|
||||
-- первого открытия EJ.
|
||||
|
||||
local _devInjected = false
|
||||
EncounterJournal:HookScript("OnShow", function()
|
||||
if not _devInjected and not C_PlayerGuide.HasData() then
|
||||
_devInjected = true
|
||||
C_Timer.After(1.0, function()
|
||||
if not C_PlayerGuide.HasData() then
|
||||
C_PlayerGuide._InjectDevPayload()
|
||||
end
|
||||
end)
|
||||
end
|
||||
end)
|
||||
Reference in New Issue
Block a user