feat(combat-ui): 전투 UI/HUD 정비 — STS2 배치 (배포 퀄리티 P1) #34
@@ -571,21 +571,6 @@ function upsertUi() {
|
|||||||
],
|
],
|
||||||
}));
|
}));
|
||||||
|
|
||||||
add(entity({
|
|
||||||
id: guid('hud', hud.length),
|
|
||||||
path: '/ui/DefaultGroup/DeckHud/AllDeckButton',
|
|
||||||
modelId: 'uibutton',
|
|
||||||
entryId: 'UIButton',
|
|
||||||
componentNames: 'MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.TextComponent',
|
|
||||||
displayOrder: 4,
|
|
||||||
components: [
|
|
||||||
transform({ parentW: 1280, parentH: 330, anchor: { x: 0.5, y: 0.5 }, pivot: { x: 0.5, y: 0.5 }, size: { x: 188, y: 58 }, pos: { x: 470, y: 135 }, align: ALIGN_CENTER }),
|
|
||||||
sprite({ color: DARK, type: 1, raycast: true }),
|
|
||||||
button(),
|
|
||||||
text({ value: '모든덱보기', fontSize: 23, bold: true, color: GOLD, alignment: 0 }),
|
|
||||||
],
|
|
||||||
}));
|
|
||||||
|
|
||||||
emit('DeckHud', hud);
|
emit('DeckHud', hud);
|
||||||
|
|
||||||
const inspect = [];
|
const inspect = [];
|
||||||
@@ -944,35 +929,47 @@ function upsertUi() {
|
|||||||
],
|
],
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
for (const [suffix, pos, value, color] of [
|
|
||||||
['Floor', { x: -820, y: 480 }, '층 1/3', GOLD],
|
|
||||||
['Gold', { x: 820, y: 480 }, '골드 0', { r: 0.98, g: 0.85, b: 0.4, a: 1 }],
|
|
||||||
]) {
|
|
||||||
combat.push(entity({
|
|
||||||
id: guid('cmb', cmbN++),
|
|
||||||
path: `/ui/DefaultGroup/CombatHud/${suffix}`,
|
|
||||||
modelId: 'uitext',
|
|
||||||
entryId: 'UIText',
|
|
||||||
componentNames: 'MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent',
|
|
||||||
displayOrder: 9,
|
|
||||||
components: [
|
|
||||||
transform({ parentW: 1920, parentH: 1080, anchor: { x: 0.5, y: 0.5 }, pivot: { x: 0.5, y: 0.5 }, size: { x: 240, y: 44 }, pos }),
|
|
||||||
sprite({ color: TRANSPARENT }),
|
|
||||||
text({ value, fontSize: 26, bold: true, color, alignment: 4 }),
|
|
||||||
],
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
combat.push(entity({
|
combat.push(entity({
|
||||||
id: guid('cmb', cmbN++),
|
id: guid('cmb', 200),
|
||||||
path: '/ui/DefaultGroup/CombatHud/Relics',
|
path: '/ui/DefaultGroup/CombatHud/TopBar',
|
||||||
modelId: 'uitext',
|
modelId: 'uisprite', entryId: 'UISprite',
|
||||||
entryId: 'UIText',
|
componentNames: 'MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent',
|
||||||
componentNames: 'MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent',
|
|
||||||
displayOrder: 9,
|
displayOrder: 9,
|
||||||
components: [
|
components: [
|
||||||
transform({ parentW: 1920, parentH: 1080, anchor: { x: 0.5, y: 0.5 }, pivot: { x: 0.5, y: 0.5 }, size: { x: 1000, y: 40 }, pos: { x: 0, y: 430 } }),
|
transform({ parentW: 1920, parentH: 1080, anchor: { x: 0.5, y: 0.5 }, pivot: { x: 0.5, y: 0.5 }, size: { x: 1200, y: 52 }, pos: { x: 0, y: 486 }, align: ALIGN_CENTER }),
|
||||||
sprite({ color: TRANSPARENT }),
|
sprite({ color: { r: 0.06, g: 0.07, b: 0.1, a: 0.82 }, type: 1 }),
|
||||||
text({ value: '유물: 없음', fontSize: 22, bold: true, color: { r: 0.8, g: 0.7, b: 0.95, a: 1 }, alignment: 4 }),
|
],
|
||||||
|
}));
|
||||||
|
const topTexts = [
|
||||||
|
['Floor', -520, 160, '막 1/3', GOLD],
|
||||||
|
['Gold', -360, 160, '골드 0', { r: 0.98, g: 0.85, b: 0.4, a: 1 }],
|
||||||
|
['Relics', 60, 560, '유물: 없음', { r: 0.8, g: 0.7, b: 0.95, a: 1 }],
|
||||||
|
];
|
||||||
|
topTexts.forEach(([suffix, x, w, value, color], ti) => {
|
||||||
|
combat.push(entity({
|
||||||
|
id: guid('cmb', 201 + ti),
|
||||||
|
path: `/ui/DefaultGroup/CombatHud/TopBar/${suffix}`,
|
||||||
|
modelId: 'uitext', entryId: 'UIText',
|
||||||
|
componentNames: 'MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent',
|
||||||
|
displayOrder: ti,
|
||||||
|
components: [
|
||||||
|
transform({ parentW: 1200, parentH: 52, anchor: { x: 0.5, y: 0.5 }, pivot: { x: 0.5, y: 0.5 }, size: { x: w, y: 40 }, pos: { x: x, y: 0 } }),
|
||||||
|
sprite({ color: TRANSPARENT }),
|
||||||
|
text({ value, fontSize: suffix === 'Relics' ? 18 : 22, bold: true, color, alignment: 4 }),
|
||||||
|
],
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
combat.push(entity({
|
||||||
|
id: guid('cmb', 205),
|
||||||
|
path: '/ui/DefaultGroup/CombatHud/TopBar/AllDeckButton',
|
||||||
|
modelId: 'uibutton', entryId: 'UIButton',
|
||||||
|
componentNames: 'MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.TextComponent',
|
||||||
|
displayOrder: 3,
|
||||||
|
components: [
|
||||||
|
transform({ parentW: 1200, parentH: 52, anchor: { x: 0.5, y: 0.5 }, pivot: { x: 0.5, y: 0.5 }, size: { x: 150, y: 40 }, pos: { x: 510, y: 0 } }),
|
||||||
|
sprite({ color: DARK, type: 1, raycast: true }),
|
||||||
|
button(),
|
||||||
|
text({ value: '모든덱보기', fontSize: 18, bold: true, color: GOLD, alignment: 0 }),
|
||||||
],
|
],
|
||||||
}));
|
}));
|
||||||
const result = entity({
|
const result = entity({
|
||||||
@@ -1887,7 +1884,7 @@ if inspectClose ~= nil and inspectClose.ButtonComponent ~= nil then
|
|||||||
end
|
end
|
||||||
self.DeckInspectCloseHandler = inspectClose:ConnectEvent(ButtonClickEvent, function() self:CloseDeckInspect() end)
|
self.DeckInspectCloseHandler = inspectClose:ConnectEvent(ButtonClickEvent, function() self:CloseDeckInspect() end)
|
||||||
end
|
end
|
||||||
local allDeckButton = _EntityService:GetEntityByPath("/ui/DefaultGroup/DeckHud/AllDeckButton")
|
local allDeckButton = _EntityService:GetEntityByPath("/ui/DefaultGroup/CombatHud/TopBar/AllDeckButton")
|
||||||
if allDeckButton ~= nil and allDeckButton.ButtonComponent ~= nil then
|
if allDeckButton ~= nil and allDeckButton.ButtonComponent ~= nil then
|
||||||
if self.AllDeckHandler ~= nil then
|
if self.AllDeckHandler ~= nil then
|
||||||
allDeckButton:DisconnectEvent(ButtonClickEvent, self.AllDeckHandler)
|
allDeckButton:DisconnectEvent(ButtonClickEvent, self.AllDeckHandler)
|
||||||
@@ -2392,8 +2389,8 @@ end`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], N
|
|||||||
self.TargetIndex = slot
|
self.TargetIndex = slot
|
||||||
self:RenderCombat()
|
self:RenderCombat()
|
||||||
end`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }]),
|
end`, [{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'slot' }]),
|
||||||
method('RenderRun', `self:SetText("/ui/DefaultGroup/CombatHud/Floor", "막 " .. string.format("%d", self.Floor) .. "/" .. string.format("%d", self.RunLength))
|
method('RenderRun', `self:SetText("/ui/DefaultGroup/CombatHud/TopBar/Floor", "막 " .. string.format("%d", self.Floor) .. "/" .. string.format("%d", self.RunLength))
|
||||||
self:SetText("/ui/DefaultGroup/CombatHud/Gold", "골드 " .. string.format("%d", self.Gold))`),
|
self:SetText("/ui/DefaultGroup/CombatHud/TopBar/Gold", "골드 " .. string.format("%d", self.Gold))`),
|
||||||
method('OfferReward', `local pool = {}
|
method('OfferReward', `local pool = {}
|
||||||
for id, _ in pairs(self.Cards) do
|
for id, _ in pairs(self.Cards) do
|
||||||
table.insert(pool, id)
|
table.insert(pool, id)
|
||||||
@@ -2483,7 +2480,7 @@ end
|
|||||||
if names == "" then
|
if names == "" then
|
||||||
names = "없음"
|
names = "없음"
|
||||||
end
|
end
|
||||||
self:SetText("/ui/DefaultGroup/CombatHud/Relics", "유물: " .. names)`),
|
self:SetText("/ui/DefaultGroup/CombatHud/TopBar/Relics", "유물: " .. names)`),
|
||||||
method('ShowMap', `self:SetEntityEnabled("/ui/DefaultGroup/DeckHud", false)
|
method('ShowMap', `self:SetEntityEnabled("/ui/DefaultGroup/DeckHud", false)
|
||||||
self:SetEntityEnabled("/ui/DefaultGroup/CardHand", false)
|
self:SetEntityEnabled("/ui/DefaultGroup/CardHand", false)
|
||||||
self:SetEntityEnabled("/ui/DefaultGroup/CombatHud", false)
|
self:SetEntityEnabled("/ui/DefaultGroup/CombatHud", false)
|
||||||
|
|||||||
Reference in New Issue
Block a user