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 charSelectMethods = [ method('ShowCharacterSelect', `self.SelectedClass = "" self:ShowState("charselect") self:RenderCharacterSelect()`), method('SelectClass', `self.SelectedClass = className self:RenderCharacterSelect()`, [ { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'className' }, ]), method('RenderCharacterSelect', `local base = "/ui/SelectUIGroup/CharacterSelectHud" local arts = { { p = "/WarriorButton/Art", c = "warrior" }, { p = "/MageButton/Art", c = "magician" }, { p = "/BanditButton/Art", c = "bandit" } } for i = 1, #arts do local e = _EntityService:GetEntityByPath(base .. arts[i].p) if e ~= nil and e.SpriteGUIRendererComponent ~= nil and self.ClassPortraits ~= nil and self.ClassPortraits[arts[i].c] ~= nil then e.SpriteGUIRendererComponent.ImageRUID = self.ClassPortraits[arts[i].c] end end local btns = { { p = "/WarriorButton", c = "warrior" }, { p = "/MageButton", c = "magician" }, { p = "/BanditButton", c = "bandit" } } for i = 1, #btns do local e = _EntityService:GetEntityByPath(base .. btns[i].p) if e ~= nil then if e.MaskComponent == nil then e:AddComponent("MaskComponent") end if e.SpriteGUIRendererComponent ~= nil then if self.SelectedClass == btns[i].c then e.SpriteGUIRendererComponent.Color = Color(1, 1, 1, 1) else e.SpriteGUIRendererComponent.Color = Color(0.45, 0.5, 0.58, 1) end end end end local nl = string.char(10) local name = "" local eng = "" local desc = "직업을 선택하고 시작하세요" local btnName = "" if self.SelectedClass == "warrior" then name = "전사" eng = "Warrior" btnName = "/WarriorButton" desc = "직업군 · 모험가" .. nl .. "방어를 쌓고 버티다 강하게 역공하는 단단한 탱커." elseif self.SelectedClass == "bandit" then name = "도적" eng = "Thief" btnName = "/BanditButton" desc = "직업군 · 모험가" .. nl .. "표창 난사와 독으로 빠르게 몰아치는 민첩한 직업." elseif self.SelectedClass == "magician" then name = "법사" eng = "Magician" btnName = "/MageButton" desc = "직업군 · 모험가" .. nl .. "약하지만 게이지 운용으로 화력을 집중하는 원소 마법사." end if btnName ~= "" then local art = _EntityService:GetEntityByPath(base .. btnName .. "/Art") local target = _EntityService:GetEntityByPath(base .. "/SelectedCharacterArt") if art ~= nil and art.SpriteGUIRendererComponent ~= nil and target ~= nil and target.SpriteGUIRendererComponent ~= nil then target.SpriteGUIRendererComponent.ImageRUID = art.SpriteGUIRendererComponent.ImageRUID end end self:SetText(base .. "/SelectedClass", name) self:SetText(base .. "/SelectedClass/SelectedClassEng", eng) self:SetText(base .. "/SelectedClassStatus", desc)`), method('StartNewGame', `if self.SelectedClass ~= "warrior" and self.SelectedClass ~= "bandit" and self.SelectedClass ~= "magician" then self:SetText("/ui/SelectUIGroup/CharacterSelectHud/SelectedClassStatus", "직업을 먼저 선택하세요") return end self:StartRun()`), method('SetEntityEnabled', `local e = _EntityService:GetEntityByPath(path) if e ~= nil then e.Enable = enabled end`, [ { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'path' }, { Type: 'boolean', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'enabled' }, ], 2), ];