cb/*.mjs의 /ui/DefaultGroup/<Section> 리터럴을 메이커 재편 UIGroup으로 일괄 remap: - SelectUIGroup(charselect/job), LobbyUIGroup(lobby/board/soulshop), RunUIGroup(combat/map/shop/rest/treasure/reward/cardhand/deck), DeckUIGroup(덱 도감). MainMenu·월드조작은 DefaultGroup 잔류. - 몬스터 슬롯 CombatHud/MonsterSlot → RunUIGroup/CombatHud/MonsterStatus - 검증: cbgap GAP 0 (참조 경로 전부 새 .ui에 실재), 이동섹션 DefaultGroup 잔여 0 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
80 lines
3.5 KiB
JavaScript
80 lines
3.5 KiB
JavaScript
import { method, RUN_LENGTH, GOLD_PER_WIN, CARD_PRICE, REST_HEAL, RELIC_PRICE, ACT_COUNT, ACT_MAPS, LOBBY_MAP, LOBBY_SPAWN } from '../lib/codeblock.mjs';
|
|
import { CARDS, ENEMIES, CLASSES, JOBS, SOUL_UNLOCKS, CARDFRAMES, RARITIES, MAP_ROWS, MAP_COLS, CHEST_CLOSED_RUID, CHEST_OPEN_RUID, NODEICONS, CHARS, CAM, RELICS, POTIONS, luaSoulShopTable, frameRuid, luaFramesTable, luaNodeIconsTable, luaRelicsTable, luaPotionsTable, luaIntentsArray, luaEnemiesTable, luaStr, luaJobsTable, luaCardsTable, luaDeckTable } from '../lib/data.mjs';
|
|
import { UI_FILE, COMMON_FILE, UI_ROOT, GENERATED_UI_SECTIONS, UI_APPEND_ORDER, DISABLED_STOCK_CONTROLS, TRANSPARENT, DARK, GOLD, ATTACK, DEFEND, SKILL, DAMAGE_DIGIT_RUIDS, DAMAGE_POP_MAX_DIGITS, DAMAGE_POP_DIGIT_W, DAMAGE_POP_DIGIT_H, DAMAGE_POP_DIGIT_SPACING, MAX_MONSTERS, HEAD_OFFSET_Y, HP_BAR_W, WHITE, CARD_NAME_TEXT, CARD_DESC_TEXT, cardFaceLayout, CARD_W, CARD_H, CARD_SPACING, CARD_XS, ALIGN_CENTER, ALIGN_BOTTOM_CENTER, guid, transform, sprite, button, text, scrollLayoutGroup, popupLayerFor, uiOrderFor, displayOrderFor, applySortingOverride, entity, uiPath, sectionRoot, isGeneratedUiEntity, appendUiSection } from '../lib/ui-helpers.mjs';
|
|
|
|
export const jobMethods = [
|
|
method('ShowJobChoice', `self:SetEntityEnabled("/ui/RunUIGroup/CardHand", false)
|
|
self:SetEntityEnabled("/ui/RunUIGroup/DeckHud", false)
|
|
self:SetEntityEnabled("/ui/SelectUIGroup/JobChoiceHud", true)`),
|
|
method('PickJobReward', `self:SetEntityEnabled("/ui/SelectUIGroup/JobChoiceHud", false)
|
|
if kind == "relic" then
|
|
local bid = self:PickNewRelic()
|
|
if bid ~= "" then
|
|
self:AddRelic(bid)
|
|
local br = self.Relics[bid]
|
|
if br ~= nil then
|
|
self:Toast("유물 획득: " .. br.name)
|
|
end
|
|
end
|
|
self:ContinueAfterBoss()
|
|
else
|
|
self:ShowJobSelect()
|
|
end`, [{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'kind' }]),
|
|
method('ShowJobSelect', `local opts = self.Jobs[self.SelectedClass]
|
|
if opts == nil then
|
|
opts = self.Jobs["warrior"]
|
|
end
|
|
self.JobOpts = opts
|
|
for i = 1, 3 do
|
|
local base = "/ui/SelectUIGroup/JobSelectHud/Job_slot" .. tostring(i)
|
|
local o = opts[i]
|
|
if o ~= nil then
|
|
self:SetEntityEnabled(base, true)
|
|
self:SetText(base .. "/Name", o.name)
|
|
self:SetText(base .. "/Desc", o.desc)
|
|
local sc = self.Cards[o.starter]
|
|
if sc ~= nil then
|
|
self:SetText(base .. "/Starter", "대표 카드: " .. sc.name)
|
|
end
|
|
else
|
|
self:SetEntityEnabled(base, false)
|
|
end
|
|
end
|
|
self:SetEntityEnabled("/ui/SelectUIGroup/JobSelectHud", true)`),
|
|
method('JobLabel', `if self.PlayerJob ~= "" and self.Jobs ~= nil then
|
|
for cls, list in pairs(self.Jobs) do
|
|
for i = 1, #list do
|
|
if list[i].id == self.PlayerJob then
|
|
return list[i].name
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if self.SelectedClass == "warrior" then
|
|
return "전사"
|
|
elseif self.SelectedClass == "bandit" then
|
|
return "도적"
|
|
elseif self.SelectedClass == "magician" then
|
|
return "마법사"
|
|
end
|
|
return "플레이어"`, [], 0, 'string'),
|
|
method('SetJob', `self.PlayerJob = jobId
|
|
local starter = ""
|
|
local opts = self.Jobs[self.SelectedClass] or {}
|
|
for i = 1, #opts do
|
|
if opts[i].id == jobId then
|
|
starter = opts[i].starter
|
|
end
|
|
end
|
|
if starter ~= "" then
|
|
table.insert(self.RunDeck, starter)
|
|
local sc = self.Cards[starter]
|
|
if sc ~= nil then
|
|
self:Toast("2차 전직: " .. self:JobLabel() .. "! 신규 카드 — " .. sc.name)
|
|
end
|
|
end
|
|
self:SetText("/ui/RunUIGroup/CombatHud/PlayerPanel/Name", self:JobLabel())
|
|
self:SetEntityEnabled("/ui/SelectUIGroup/JobSelectHud", false)
|
|
self:ContinueAfterBoss()`, [{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'jobId' }]),
|
|
];
|