diff --git a/.gitignore b/.gitignore index c4a3f81c..3f4cb8ab 100644 --- a/.gitignore +++ b/.gitignore @@ -47,4 +47,4 @@ CLAUDE.md -/AddOns/*/.classicapi-dev +/src/embed/AddOns/*/.classicapi-dev diff --git a/AddOns/AoELootTest/AoELootTest.lua b/AddOns/AoELootTest/AoELootTest.lua deleted file mode 100644 index 59f62609..00000000 --- a/AddOns/AoELootTest/AoELootTest.lua +++ /dev/null @@ -1,217 +0,0 @@ --- AoE Loot Test --- --- /aoeloot opens a picker window listing every item in every lootable --- corpse within click range. Clicking a row hands the (guid, itemID) --- pair to C_Loot.LootUnitItem and re-scans so the picker refreshes --- with whatever's left. --- --- Known visual: each scan opens / closes loot windows in rapid --- succession, so the Blizzard LootFrame flickers during the scan. This --- addon intentionally doesn't suppress that — the goal is to exercise --- the C++ surface, not to ship polished UI. - -local MAX_ROWS = 24 -local RESCAN_DELAY = 0.3 -- seconds; lets LootUnitItem complete before re-scan - --- ---------- UI scaffolding ---------- - --- Frame geometry. Height is recomputed dynamically per scan so the --- window only takes up as much screen real estate as the result count --- needs — see `ResizeForRows`. -local FRAME_WIDTH = 320 -local HEADER_HEIGHT = 64 -- title + status + insets; minimum frame height -local ROW_HEIGHT = 22 - -local frame = CreateFrame("Frame", "AoELootTestFrame", UIParent) -frame:SetWidth(FRAME_WIDTH) -frame:SetHeight(HEADER_HEIGHT) -frame:SetPoint("CENTER", UIParent, "CENTER", 0, 0) -frame:SetBackdrop({ - bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background", - edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", - tile = true, tileSize = 32, edgeSize = 32, - insets = { left = 11, right = 12, top = 12, bottom = 11 }, -}) -frame:SetMovable(true) -frame:EnableMouse(true) -frame:RegisterForDrag("LeftButton") --- Vanilla 1.12 fires script handlers with the frame set as the global --- `this`, not as a `self` arg to the function. Passing `frame.StartMoving` --- directly (the modern shortcut) breaks because the C method has no --- `self` to operate on. Wrap in closures so `this:method()` resolves --- correctly inside the handler. -frame:SetScript("OnDragStart", function() this:StartMoving() end) -frame:SetScript("OnDragStop", function() this:StopMovingOrSizing() end) -frame:Hide() - -local title = frame:CreateFontString(nil, "OVERLAY", "GameFontNormal") -title:SetPoint("TOP", frame, "TOP", 0, -16) -title:SetText("AoE Loot") - -local status = frame:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall") -status:SetPoint("TOPLEFT", frame, "TOPLEFT", 18, -36) -status:SetText("") - -local closeBtn = CreateFrame("Button", nil, frame, "UIPanelCloseButton") -closeBtn:SetPoint("TOPRIGHT", frame, "TOPRIGHT", -6, -6) - --- ---------- Row pool ---------- - -local rows = {} - -local function CreateRow(parent, idx) - local row = CreateFrame("Button", nil, parent) - row:SetWidth(290) - row:SetHeight(20) - row:SetPoint("TOPLEFT", parent, "TOPLEFT", 15, - -54 - (idx - 1) * ROW_HEIGHT) - - local icon = row:CreateTexture(nil, "ARTWORK") - icon:SetWidth(18); icon:SetHeight(18) - icon:SetPoint("LEFT", row, "LEFT", 0, 0) - row.icon = icon - - local text = row:CreateFontString(nil, "OVERLAY", "GameFontNormal") - text:SetPoint("LEFT", icon, "RIGHT", 6, 0) - text:SetPoint("RIGHT", row, "RIGHT", 0, 0) - text:SetJustifyH("LEFT") - row.text = text - - local hl = row:CreateTexture(nil, "HIGHLIGHT") - hl:SetTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight") - hl:SetBlendMode("ADD") - hl:SetAllPoints(row) - - -- Tooltip on hover. The engine's native `SetHyperlink` does a - -- literal `SStrCmpI` of the input's first 5 chars against the - -- string `"item:"` at `.rdata` VA `0x00842D60` — anything that - -- starts with `|c...` (full link with color) or `|Hitem` (full - -- link without color) fails the prefix check with "Unknown link - -- type". Only the bare payload form survives. - -- - -- We extract the payload from the engine's full link rather than - -- composing `item:ID:0:0:0` ourselves, so per-instance fields - -- (enchant / random-suffix / unique) survive round-trip and - -- "Stringy Wolf Meat of the Bear" tooltips correctly instead of - -- collapsing to the un-suffixed itemID. - row:SetScript("OnEnter", function() - if this.payload then - GameTooltip:SetOwner(this, "ANCHOR_RIGHT") - GameTooltip:SetHyperlink(this.payload) - GameTooltip:Show() - end - end) - row:SetScript("OnLeave", function() GameTooltip:Hide() end) - - row:Hide() - return row -end - -for i = 1, MAX_ROWS do - rows[i] = CreateRow(frame, i) -end - --- ---------- Render ---------- - --- Tail of a GUID string — last 4 hex chars of the low dword. Lets the --- user tell apart two rows of "Stringy Wolf Meat x1" coming from --- different corpses, without occupying a whole column with the full --- 16-digit GUID. -local function ShortGuidSuffix(guid) - return "[.." .. string.sub(guid, -4) .. "]" -end - --- Extract the `item:ID:enchant:suffix:unique` payload out of the --- engine's full link string (`|cff...|Hitem:...|h[Name]|h|r`). --- Vanilla `SetHyperlink` requires the input to start literally with --- `"item:"` — so we can't pass the full link, but we also can't drop --- the per-instance fields (random suffix is what distinguishes "of --- the Bear" from "of the Eagle" on otherwise identical itemIDs). --- Returns the payload, or nil if extraction fails. -local function PayloadFromLink(link) - if not link then return nil end - return string.match(link, "|H(item:[^|]+)|h") -end - -local function ClearRows() - for i = 1, MAX_ROWS do - rows[i]:Hide() - rows[i]:SetScript("OnClick", nil) - rows[i].payload = nil - end -end - -local function PopulateRows(results) - local idx = 0 - for _, corpse in ipairs(results) do - for _, item in ipairs(corpse.items) do - idx = idx + 1 - if idx > MAX_ROWS then break end - local row = rows[idx] - local name, _, _, _, _, _, _, _, icon = GetItemInfo(item.itemID) - row.icon:SetTexture(icon or "Interface\\Icons\\INV_Misc_QuestionMark") - local label = name or ("Item #" .. item.itemID) - if item.count and item.count > 1 then - label = label .. " x" .. item.count - end - label = label .. " " .. ShortGuidSuffix(corpse.guid) - row.text:SetText(label) - row.payload = PayloadFromLink(item.link) -- for OnEnter tooltip - local guid, itemID = corpse.guid, item.itemID - row:SetScript("OnClick", function() - C_Loot.LootUnitItem(guid, itemID) - C_Timer.After(RESCAN_DELAY, function() - if frame:IsShown() then C_Loot.ScanNearbyLoot() end - end) - end) - row:Show() - end - if idx > MAX_ROWS then break end - end - for i = idx + 1, MAX_ROWS do rows[i]:Hide() end - local shown - if idx == 0 then - status:SetText("Nothing lootable in range.") - shown = 0 - elseif idx > MAX_ROWS then - status:SetText(MAX_ROWS .. "+ items (showing first " .. MAX_ROWS .. ")") - shown = MAX_ROWS - else - status:SetText(idx .. " item(s) available") - shown = idx - end - frame:SetHeight(HEADER_HEIGHT + shown * ROW_HEIGHT) -end - --- ---------- Scan trigger ---------- - -local function StartScan() - status:SetText("Scanning...") - ClearRows() - frame:SetHeight(HEADER_HEIGHT) -- collapse while we wait for results - if not C_Loot.ScanNearbyLoot() then - status:SetText("Scan busy or not in world.") - end -end - --- ---------- Event wiring ---------- - -local evt = CreateFrame("Frame") -evt:RegisterEvent("LOOT_SCAN_COMPLETED") -evt:SetScript("OnEvent", function() - -- Race guard: a delayed scan may complete after the user closed - -- the picker. Just drop the result rather than re-showing. - if not frame:IsShown() then return end - PopulateRows(C_Loot.GetLastScanResults()) -end) - --- ---------- Slash command ---------- - -RegisterNewSlashCommand(function() - if frame:IsShown() then - StartScan() -- already open → just refresh - else - frame:Show() - StartScan() - end -end, "aoeloot", "aoe") diff --git a/AddOns/AoELootTest/AoELootTest.toc b/AddOns/AoELootTest/AoELootTest.toc deleted file mode 100644 index 23b6e5b1..00000000 --- a/AddOns/AoELootTest/AoELootTest.toc +++ /dev/null @@ -1,7 +0,0 @@ -## Interface: 11200 -## Title: AoE Loot Test -## Notes: Test bed for ClassicAPI's C_Loot.ScanNearbyLoot / LootUnitItem. /aoeloot -## Dependencies: !!!ClassicAPI -## Version: DEV - -AoELootTest.lua diff --git a/CMakeLists.txt b/CMakeLists.txt index c2ef7bb2..185c992d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,7 +76,7 @@ endif() add_library(${PROJECT_NAME} SHARED ${SOURCES} ${HEADERS} ${TINYCBOR_SOURCES}) -# Embed the addons under `AddOns/` and `src/bindings/Bindings.xml` as RCDATA +# Embed the addons under `src/embed/AddOns/` and `src/bindings/Bindings.xml` as RCDATA # resources. The file-read hook in `src/addons/Embedded.cpp` serves the # addon files when the engine asks for paths under # `Interface\AddOns\\`, so the addons load even when the user @@ -86,7 +86,7 @@ add_library(${PROJECT_NAME} SHARED include(cmake/embed_resources.cmake) embed_resources( TARGET ${PROJECT_NAME} - ADDONS_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/AddOns" + ADDONS_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/src/embed/AddOns" ADDONS "!!!ClassicAPI" "ClassicAPI_DebugTools" ADDON_VERSION "${CLASSICAPI_TOC_VERSION}" BINDINGS_XML "${CMAKE_CURRENT_SOURCE_DIR}/src/bindings/Bindings.xml" diff --git a/README.md b/README.md index c9352c9a..3bd76bd8 100644 --- a/README.md +++ b/README.md @@ -409,13 +409,15 @@ Download the prebuilt `ClassicAPI.dll` from the 3. Add `ClassicAPI.dll` to `dlls.txt`. 4. Launch the game with `VanillaFixes.exe`. -The bundled `!!!ClassicAPI` addon ships *inside* the DLL — no separate -addon download or install step needed. +The `!!!ClassicAPI` and `ClassicAPI_DebugTools` addons are *inside* the +DLL. You do not download or install them. The `src/embed/AddOns/` folder +in this repository is source code for the DLL. Do not copy it into your +game. ## Bundled addon: !!!ClassicAPI The Lua-side companion library lives in -[`AddOns/!!!ClassicAPI/`](AddOns/!!!ClassicAPI/). It's a 1.12.1 / +[`src/embed/AddOns/!!!ClassicAPI/`](src/embed/AddOns/!!!ClassicAPI/). It's a 1.12.1 / Lua 5.0 backport of the modern Blizzard helpers that aren't engine functions but that consumer code still expects to find as globals — `CallbackRegistryMixin`, `EventRegistry`, `ColorMixin` + `CreateColor`, @@ -426,7 +428,7 @@ commands and `SecureCmdOptionParse`, the parser that reads `[conditions]` and `@unit` for them. **You don't have to install the addon manually** — the DLL embeds -the contents of [`AddOns/!!!ClassicAPI/`](AddOns/!!!ClassicAPI/) and +the contents of [`src/embed/AddOns/!!!ClassicAPI/`](src/embed/AddOns/!!!ClassicAPI/) and registers them with the engine as a synthetic addon on startup, so the library is always available when the DLL is loaded. It fires `ADDON_LOADED`, supports `SavedVariables`, and is resolvable by name — @@ -443,15 +445,12 @@ can't be switched off. Being hidden means it's omitted from the index-based `GetNumAddOns()` / `GetAddOnInfo(i)` enumeration, but every by-name lookup and dependency reference still resolves normally. -If you drop the folder into your `Interface/AddOns/` directory, **that -copy's files win** — the DLL's embedded version only serves files when -the engine's normal scan doesn't already have a newer entry under that -name. Useful for editing the Lua locally without rebuilding the DLL. -The hidden + force-enabled treatment applies either way (it's keyed to -the addon name, not to which copy serves the files), so the local copy -is also absent from the AddOns list. The dispatch is transparent: -addons consuming `Mixin`, `ColorMixin`, `TableUtil`, etc. behave -identically in both cases. +For development, you can put a copy of the addon folder in +`Interface/AddOns/` and add an empty `.classicapi-dev` file to it. The +game then reads the Lua files from that copy, so you can edit them +without a DLL rebuild. Without this file, the game uses the copy with the +newer `## Version:`. The copy is hidden and always enabled, the same as +the embedded addon. ## Debug tools @@ -470,16 +469,6 @@ that you use one of these commands: | `/tinspect ` (or `/tins`) | Opens the table inspector on the result of ``. | | `/luaerrors` (or `/scripterrors`) | Opens the Lua error window. | -### Print functions - -`!!!ClassicAPI` adds these globals: - -| Global | Purpose | -|--------|---------| -| `print(...)` | Backport of Blizzard's `print`. It joins the arguments with `" "` and sends the result to `DEFAULT_CHAT_FRAME`. It uses the handler from `setprinthandler`. If that handler fails, it uses `geterrorhandler`. | -| `setprinthandler(func)` / `getprinthandler()` | Sets or gets the print handler. Use it to send print output to a different place in tests. | -| `tostringall(...)` | Applies `tostring()` to each argument, and keeps the number of arguments. | - ## Building Requires CMake (3.10+) and an MSVC toolchain that can target 32-bit Windows. diff --git a/TODO.md b/TODO.md index ba23a1c6..0e20f02a 100644 --- a/TODO.md +++ b/TODO.md @@ -3809,7 +3809,7 @@ of descriptors feeds the in-game browser, a page generator, and a drift check. registration on the first pass of each Lua state, derives systems, and exports `C_APIDocumentation.GetSystems()` / `GetSystem(name)` lazily in Blizzard's exact table shape, plus `_classicapi_UndocumentedAPI()`. -- `AddOns/!!!ClassicAPI/APIDocumentation/` — the 8-file port of +- `src/embed/AddOns/!!!ClassicAPI/APIDocumentation/` — the 8-file port of `Blizzard_APIDocumentation`, driven by `/classicapi` (short `/capi`). Named for what it documents: the browser holds only ClassicAPI's own surface, so `/api` would have over-promised. diff --git a/docs/API.md b/docs/API.md index 14163a98..2f17bd98 100644 --- a/docs/API.md +++ b/docs/API.md @@ -13719,7 +13719,7 @@ end) the next `step` after that many seconds. `yield(0)` is the "resume on the next frame" form (since `C_Timer.After(0, ...)` fires on the next OnUpdate tick). `RunNextFrame(cb)` in -[`AddOns/!!!ClassicAPI/Util/FunctionUtil.lua`](../AddOns/!!!ClassicAPI/Util/FunctionUtil.lua) +[`src/embed/AddOns/!!!ClassicAPI/Util/FunctionUtil.lua`](../src/embed/AddOns/!!!ClassicAPI/Util/FunctionUtil.lua) wraps the same primitive for the non-coroutine case. ## Macros @@ -22066,7 +22066,7 @@ Scent of Blood to its own length — live in `src/turtle/DurationMods.cpp`, and Carnage's roll-gated Rip/Rake refresh in `src/turtle/Carnage.cpp`. The one rule registered from Lua -([Util/AuraDurationModifiers.lua](../AddOns/!!!ClassicAPI/Util/AuraDurationModifiers.lua)) +([Util/AuraDurationModifiers.lua](../src/embed/AddOns/!!!ClassicAPI/Util/AuraDurationModifiers.lua)) is Shadow Weaving: for a 5/5 priest (talent `15334`, where the proc is 100%), any shadow-school priest cast refreshes the target's Shadow Vulnerability (`15258`). Below 5/5 it's roll-gated and deliberately not inferred — the client diff --git a/AddOns/!!!ClassicAPI/!!!ClassicAPI.toc b/src/embed/AddOns/!!!ClassicAPI/!!!ClassicAPI.toc similarity index 100% rename from AddOns/!!!ClassicAPI/!!!ClassicAPI.toc rename to src/embed/AddOns/!!!ClassicAPI/!!!ClassicAPI.toc diff --git a/AddOns/!!!ClassicAPI/APIDocumentation/APIDocumentation.lua b/src/embed/AddOns/!!!ClassicAPI/APIDocumentation/APIDocumentation.lua similarity index 100% rename from AddOns/!!!ClassicAPI/APIDocumentation/APIDocumentation.lua rename to src/embed/AddOns/!!!ClassicAPI/APIDocumentation/APIDocumentation.lua diff --git a/AddOns/!!!ClassicAPI/APIDocumentation/APIDocumentation_Bootstrap.lua b/src/embed/AddOns/!!!ClassicAPI/APIDocumentation/APIDocumentation_Bootstrap.lua similarity index 100% rename from AddOns/!!!ClassicAPI/APIDocumentation/APIDocumentation_Bootstrap.lua rename to src/embed/AddOns/!!!ClassicAPI/APIDocumentation/APIDocumentation_Bootstrap.lua diff --git a/AddOns/!!!ClassicAPI/APIDocumentation/BaseAPIMixin.lua b/src/embed/AddOns/!!!ClassicAPI/APIDocumentation/BaseAPIMixin.lua similarity index 100% rename from AddOns/!!!ClassicAPI/APIDocumentation/BaseAPIMixin.lua rename to src/embed/AddOns/!!!ClassicAPI/APIDocumentation/BaseAPIMixin.lua diff --git a/AddOns/!!!ClassicAPI/APIDocumentation/EventsAPIMixin.lua b/src/embed/AddOns/!!!ClassicAPI/APIDocumentation/EventsAPIMixin.lua similarity index 100% rename from AddOns/!!!ClassicAPI/APIDocumentation/EventsAPIMixin.lua rename to src/embed/AddOns/!!!ClassicAPI/APIDocumentation/EventsAPIMixin.lua diff --git a/AddOns/!!!ClassicAPI/APIDocumentation/FieldsAPIMixin.lua b/src/embed/AddOns/!!!ClassicAPI/APIDocumentation/FieldsAPIMixin.lua similarity index 100% rename from AddOns/!!!ClassicAPI/APIDocumentation/FieldsAPIMixin.lua rename to src/embed/AddOns/!!!ClassicAPI/APIDocumentation/FieldsAPIMixin.lua diff --git a/AddOns/!!!ClassicAPI/APIDocumentation/FunctionsAPIMixin.lua b/src/embed/AddOns/!!!ClassicAPI/APIDocumentation/FunctionsAPIMixin.lua similarity index 100% rename from AddOns/!!!ClassicAPI/APIDocumentation/FunctionsAPIMixin.lua rename to src/embed/AddOns/!!!ClassicAPI/APIDocumentation/FunctionsAPIMixin.lua diff --git a/AddOns/!!!ClassicAPI/APIDocumentation/SystemsAPIMixin.lua b/src/embed/AddOns/!!!ClassicAPI/APIDocumentation/SystemsAPIMixin.lua similarity index 100% rename from AddOns/!!!ClassicAPI/APIDocumentation/SystemsAPIMixin.lua rename to src/embed/AddOns/!!!ClassicAPI/APIDocumentation/SystemsAPIMixin.lua diff --git a/AddOns/!!!ClassicAPI/APIDocumentation/TablesAPIMixin.lua b/src/embed/AddOns/!!!ClassicAPI/APIDocumentation/TablesAPIMixin.lua similarity index 100% rename from AddOns/!!!ClassicAPI/APIDocumentation/TablesAPIMixin.lua rename to src/embed/AddOns/!!!ClassicAPI/APIDocumentation/TablesAPIMixin.lua diff --git a/AddOns/!!!ClassicAPI/Compat.lua b/src/embed/AddOns/!!!ClassicAPI/Compat.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Compat.lua rename to src/embed/AddOns/!!!ClassicAPI/Compat.lua diff --git a/AddOns/!!!ClassicAPI/FrameXML/InterfaceOptions.lua b/src/embed/AddOns/!!!ClassicAPI/FrameXML/InterfaceOptions.lua similarity index 100% rename from AddOns/!!!ClassicAPI/FrameXML/InterfaceOptions.lua rename to src/embed/AddOns/!!!ClassicAPI/FrameXML/InterfaceOptions.lua diff --git a/AddOns/!!!ClassicAPI/FrameXML/InterfaceOptions.xml b/src/embed/AddOns/!!!ClassicAPI/FrameXML/InterfaceOptions.xml similarity index 100% rename from AddOns/!!!ClassicAPI/FrameXML/InterfaceOptions.xml rename to src/embed/AddOns/!!!ClassicAPI/FrameXML/InterfaceOptions.xml diff --git a/AddOns/!!!ClassicAPI/Options/Panel.lua b/src/embed/AddOns/!!!ClassicAPI/Options/Panel.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Options/Panel.lua rename to src/embed/AddOns/!!!ClassicAPI/Options/Panel.lua diff --git a/AddOns/!!!ClassicAPI/SecureTemplates.lua b/src/embed/AddOns/!!!ClassicAPI/SecureTemplates.lua similarity index 100% rename from AddOns/!!!ClassicAPI/SecureTemplates.lua rename to src/embed/AddOns/!!!ClassicAPI/SecureTemplates.lua diff --git a/AddOns/!!!ClassicAPI/SecureTemplates.xml b/src/embed/AddOns/!!!ClassicAPI/SecureTemplates.xml similarity index 100% rename from AddOns/!!!ClassicAPI/SecureTemplates.xml rename to src/embed/AddOns/!!!ClassicAPI/SecureTemplates.xml diff --git a/AddOns/!!!ClassicAPI/Util/ActionButton.lua b/src/embed/AddOns/!!!ClassicAPI/Util/ActionButton.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/ActionButton.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/ActionButton.lua diff --git a/AddOns/!!!ClassicAPI/Util/AddOnCompat.lua b/src/embed/AddOns/!!!ClassicAPI/Util/AddOnCompat.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/AddOnCompat.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/AddOnCompat.lua diff --git a/AddOns/!!!ClassicAPI/Util/AuraDurationModifiers.lua b/src/embed/AddOns/!!!ClassicAPI/Util/AuraDurationModifiers.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/AuraDurationModifiers.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/AuraDurationModifiers.lua diff --git a/AddOns/!!!ClassicAPI/Util/AuraUtil.lua b/src/embed/AddOns/!!!ClassicAPI/Util/AuraUtil.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/AuraUtil.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/AuraUtil.lua diff --git a/AddOns/!!!ClassicAPI/Util/CacheUtil.lua b/src/embed/AddOns/!!!ClassicAPI/Util/CacheUtil.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/CacheUtil.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/CacheUtil.lua diff --git a/AddOns/!!!ClassicAPI/Util/CallbackRegistry.lua b/src/embed/AddOns/!!!ClassicAPI/Util/CallbackRegistry.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/CallbackRegistry.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/CallbackRegistry.lua diff --git a/AddOns/!!!ClassicAPI/Util/Color.lua b/src/embed/AddOns/!!!ClassicAPI/Util/Color.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/Color.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/Color.lua diff --git a/AddOns/!!!ClassicAPI/Util/ColorUtil.lua b/src/embed/AddOns/!!!ClassicAPI/Util/ColorUtil.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/ColorUtil.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/ColorUtil.lua diff --git a/AddOns/!!!ClassicAPI/Util/Constants.lua b/src/embed/AddOns/!!!ClassicAPI/Util/Constants.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/Constants.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/Constants.lua diff --git a/AddOns/!!!ClassicAPI/Util/Cooldown.lua b/src/embed/AddOns/!!!ClassicAPI/Util/Cooldown.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/Cooldown.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/Cooldown.lua diff --git a/AddOns/!!!ClassicAPI/Util/EquipmentManager.lua b/src/embed/AddOns/!!!ClassicAPI/Util/EquipmentManager.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/EquipmentManager.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/EquipmentManager.lua diff --git a/AddOns/!!!ClassicAPI/Util/EventUtil.lua b/src/embed/AddOns/!!!ClassicAPI/Util/EventUtil.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/EventUtil.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/EventUtil.lua diff --git a/AddOns/!!!ClassicAPI/Util/FormattingUtil.lua b/src/embed/AddOns/!!!ClassicAPI/Util/FormattingUtil.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/FormattingUtil.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/FormattingUtil.lua diff --git a/AddOns/!!!ClassicAPI/Util/FrameUtil.lua b/src/embed/AddOns/!!!ClassicAPI/Util/FrameUtil.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/FrameUtil.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/FrameUtil.lua diff --git a/AddOns/!!!ClassicAPI/Util/FrameWatcher.lua b/src/embed/AddOns/!!!ClassicAPI/Util/FrameWatcher.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/FrameWatcher.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/FrameWatcher.lua diff --git a/AddOns/!!!ClassicAPI/Util/FunctionUtil.lua b/src/embed/AddOns/!!!ClassicAPI/Util/FunctionUtil.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/FunctionUtil.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/FunctionUtil.lua diff --git a/AddOns/!!!ClassicAPI/Util/GameTooltip.lua b/src/embed/AddOns/!!!ClassicAPI/Util/GameTooltip.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/GameTooltip.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/GameTooltip.lua diff --git a/AddOns/!!!ClassicAPI/Util/GlobalCallbackRegistry.lua b/src/embed/AddOns/!!!ClassicAPI/Util/GlobalCallbackRegistry.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/GlobalCallbackRegistry.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/GlobalCallbackRegistry.lua diff --git a/AddOns/!!!ClassicAPI/Util/IconDataProvider.lua b/src/embed/AddOns/!!!ClassicAPI/Util/IconDataProvider.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/IconDataProvider.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/IconDataProvider.lua diff --git a/AddOns/!!!ClassicAPI/Util/ItemLocation.lua b/src/embed/AddOns/!!!ClassicAPI/Util/ItemLocation.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/ItemLocation.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/ItemLocation.lua diff --git a/AddOns/!!!ClassicAPI/Util/ItemUtil.lua b/src/embed/AddOns/!!!ClassicAPI/Util/ItemUtil.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/ItemUtil.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/ItemUtil.lua diff --git a/AddOns/!!!ClassicAPI/Util/LinkUtil.lua b/src/embed/AddOns/!!!ClassicAPI/Util/LinkUtil.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/LinkUtil.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/LinkUtil.lua diff --git a/AddOns/!!!ClassicAPI/Util/MacroIconSelection.lua b/src/embed/AddOns/!!!ClassicAPI/Util/MacroIconSelection.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/MacroIconSelection.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/MacroIconSelection.lua diff --git a/AddOns/!!!ClassicAPI/Util/MacroOptions.lua b/src/embed/AddOns/!!!ClassicAPI/Util/MacroOptions.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/MacroOptions.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/MacroOptions.lua diff --git a/AddOns/!!!ClassicAPI/Util/MathUtil.lua b/src/embed/AddOns/!!!ClassicAPI/Util/MathUtil.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/MathUtil.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/MathUtil.lua diff --git a/AddOns/!!!ClassicAPI/Util/Mixin.lua b/src/embed/AddOns/!!!ClassicAPI/Util/Mixin.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/Mixin.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/Mixin.lua diff --git a/AddOns/!!!ClassicAPI/Util/PixelUtil.lua b/src/embed/AddOns/!!!ClassicAPI/Util/PixelUtil.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/PixelUtil.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/PixelUtil.lua diff --git a/AddOns/!!!ClassicAPI/Util/PlayerLocation.lua b/src/embed/AddOns/!!!ClassicAPI/Util/PlayerLocation.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/PlayerLocation.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/PlayerLocation.lua diff --git a/AddOns/!!!ClassicAPI/Util/PlayerUtil.lua b/src/embed/AddOns/!!!ClassicAPI/Util/PlayerUtil.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/PlayerUtil.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/PlayerUtil.lua diff --git a/AddOns/!!!ClassicAPI/Util/Pools.lua b/src/embed/AddOns/!!!ClassicAPI/Util/Pools.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/Pools.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/Pools.lua diff --git a/AddOns/!!!ClassicAPI/Util/Print.lua b/src/embed/AddOns/!!!ClassicAPI/Util/Print.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/Print.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/Print.lua diff --git a/AddOns/!!!ClassicAPI/Util/Rectangle.lua b/src/embed/AddOns/!!!ClassicAPI/Util/Rectangle.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/Rectangle.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/Rectangle.lua diff --git a/AddOns/!!!ClassicAPI/Util/SecureStateDriver.lua b/src/embed/AddOns/!!!ClassicAPI/Util/SecureStateDriver.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/SecureStateDriver.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/SecureStateDriver.lua diff --git a/AddOns/!!!ClassicAPI/Util/SecureUnitMenu.lua b/src/embed/AddOns/!!!ClassicAPI/Util/SecureUnitMenu.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/SecureUnitMenu.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/SecureUnitMenu.lua diff --git a/AddOns/!!!ClassicAPI/Util/SlashCommandsRegistry.lua b/src/embed/AddOns/!!!ClassicAPI/Util/SlashCommandsRegistry.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/SlashCommandsRegistry.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/SlashCommandsRegistry.lua diff --git a/AddOns/!!!ClassicAPI/Util/TableUtil.lua b/src/embed/AddOns/!!!ClassicAPI/Util/TableUtil.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/TableUtil.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/TableUtil.lua diff --git a/AddOns/!!!ClassicAPI/Util/TextureUtil.lua b/src/embed/AddOns/!!!ClassicAPI/Util/TextureUtil.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/TextureUtil.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/TextureUtil.lua diff --git a/AddOns/!!!ClassicAPI/Util/TimeUtil.lua b/src/embed/AddOns/!!!ClassicAPI/Util/TimeUtil.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/TimeUtil.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/TimeUtil.lua diff --git a/AddOns/!!!ClassicAPI/Util/TimedCallback.lua b/src/embed/AddOns/!!!ClassicAPI/Util/TimedCallback.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/TimedCallback.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/TimedCallback.lua diff --git a/AddOns/!!!ClassicAPI/Util/TradeSkillLink.lua b/src/embed/AddOns/!!!ClassicAPI/Util/TradeSkillLink.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/TradeSkillLink.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/TradeSkillLink.lua diff --git a/AddOns/!!!ClassicAPI/Util/UIParent.lua b/src/embed/AddOns/!!!ClassicAPI/Util/UIParent.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/UIParent.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/UIParent.lua diff --git a/AddOns/!!!ClassicAPI/Util/UiMapPoint.lua b/src/embed/AddOns/!!!ClassicAPI/Util/UiMapPoint.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/UiMapPoint.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/UiMapPoint.lua diff --git a/AddOns/!!!ClassicAPI/Util/Vector2D.lua b/src/embed/AddOns/!!!ClassicAPI/Util/Vector2D.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/Vector2D.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/Vector2D.lua diff --git a/AddOns/!!!ClassicAPI/Util/Vector3D.lua b/src/embed/AddOns/!!!ClassicAPI/Util/Vector3D.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/Vector3D.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/Vector3D.lua diff --git a/AddOns/!!!ClassicAPI/Util/Vector4D.lua b/src/embed/AddOns/!!!ClassicAPI/Util/Vector4D.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/Vector4D.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/Vector4D.lua diff --git a/AddOns/!!!ClassicAPI/Util/WorldMap.lua b/src/embed/AddOns/!!!ClassicAPI/Util/WorldMap.lua similarity index 100% rename from AddOns/!!!ClassicAPI/Util/WorldMap.lua rename to src/embed/AddOns/!!!ClassicAPI/Util/WorldMap.lua diff --git a/AddOns/!!!ClassicAPI/locales/deDE.lua b/src/embed/AddOns/!!!ClassicAPI/locales/deDE.lua similarity index 100% rename from AddOns/!!!ClassicAPI/locales/deDE.lua rename to src/embed/AddOns/!!!ClassicAPI/locales/deDE.lua diff --git a/AddOns/!!!ClassicAPI/locales/enUS.lua b/src/embed/AddOns/!!!ClassicAPI/locales/enUS.lua similarity index 100% rename from AddOns/!!!ClassicAPI/locales/enUS.lua rename to src/embed/AddOns/!!!ClassicAPI/locales/enUS.lua diff --git a/AddOns/!!!ClassicAPI/locales/esES.lua b/src/embed/AddOns/!!!ClassicAPI/locales/esES.lua similarity index 100% rename from AddOns/!!!ClassicAPI/locales/esES.lua rename to src/embed/AddOns/!!!ClassicAPI/locales/esES.lua diff --git a/AddOns/!!!ClassicAPI/locales/frFR.lua b/src/embed/AddOns/!!!ClassicAPI/locales/frFR.lua similarity index 100% rename from AddOns/!!!ClassicAPI/locales/frFR.lua rename to src/embed/AddOns/!!!ClassicAPI/locales/frFR.lua diff --git a/AddOns/!!!ClassicAPI/locales/locales.xml b/src/embed/AddOns/!!!ClassicAPI/locales/locales.xml similarity index 100% rename from AddOns/!!!ClassicAPI/locales/locales.xml rename to src/embed/AddOns/!!!ClassicAPI/locales/locales.xml diff --git a/AddOns/!!!ClassicAPI/locales/ruRU.lua b/src/embed/AddOns/!!!ClassicAPI/locales/ruRU.lua similarity index 100% rename from AddOns/!!!ClassicAPI/locales/ruRU.lua rename to src/embed/AddOns/!!!ClassicAPI/locales/ruRU.lua diff --git a/AddOns/!!!ClassicAPI/locales/zhCN.lua b/src/embed/AddOns/!!!ClassicAPI/locales/zhCN.lua similarity index 100% rename from AddOns/!!!ClassicAPI/locales/zhCN.lua rename to src/embed/AddOns/!!!ClassicAPI/locales/zhCN.lua diff --git a/AddOns/!!!ClassicAPI/locales/zhTW.lua b/src/embed/AddOns/!!!ClassicAPI/locales/zhTW.lua similarity index 100% rename from AddOns/!!!ClassicAPI/locales/zhTW.lua rename to src/embed/AddOns/!!!ClassicAPI/locales/zhTW.lua diff --git a/AddOns/ClassicAPI_DebugTools/ClassicAPI_DebugTools.toc b/src/embed/AddOns/ClassicAPI_DebugTools/ClassicAPI_DebugTools.toc similarity index 100% rename from AddOns/ClassicAPI_DebugTools/ClassicAPI_DebugTools.toc rename to src/embed/AddOns/ClassicAPI_DebugTools/ClassicAPI_DebugTools.toc diff --git a/AddOns/ClassicAPI_DebugTools/DebugTools.lua b/src/embed/AddOns/ClassicAPI_DebugTools/DebugTools.lua similarity index 100% rename from AddOns/ClassicAPI_DebugTools/DebugTools.lua rename to src/embed/AddOns/ClassicAPI_DebugTools/DebugTools.lua diff --git a/AddOns/ClassicAPI_DebugTools/DebugTools.xml b/src/embed/AddOns/ClassicAPI_DebugTools/DebugTools.xml similarity index 100% rename from AddOns/ClassicAPI_DebugTools/DebugTools.xml rename to src/embed/AddOns/ClassicAPI_DebugTools/DebugTools.xml diff --git a/AddOns/ClassicAPI_DebugTools/Dump.lua b/src/embed/AddOns/ClassicAPI_DebugTools/Dump.lua similarity index 100% rename from AddOns/ClassicAPI_DebugTools/Dump.lua rename to src/embed/AddOns/ClassicAPI_DebugTools/Dump.lua diff --git a/AddOns/ClassicAPI_DebugTools/TableInspector.lua b/src/embed/AddOns/ClassicAPI_DebugTools/TableInspector.lua similarity index 100% rename from AddOns/ClassicAPI_DebugTools/TableInspector.lua rename to src/embed/AddOns/ClassicAPI_DebugTools/TableInspector.lua diff --git a/src/macro/Icons.cpp b/src/macro/Icons.cpp index 5ad755ea..416983cc 100644 --- a/src/macro/Icons.cpp +++ b/src/macro/Icons.cpp @@ -18,7 +18,7 @@ // basenames; returns nothing (mutation is the contract). // // Modern WoW's `IconDataProviderMixin` (see -// `AddOns/!!!ClassicAPI/Util/IconDataProvider.lua`) calls all four +// `src/embed/AddOns/!!!ClassicAPI/Util/IconDataProvider.lua`) calls all four // in this order to assemble its `BaseIconFilenames` cache: // // GetLooseMacroIcons(spellList)