From 4f22c4e09189aa5b6b183e8fc35afd203689e511 Mon Sep 17 00:00:00 2001 From: swrring Date: Mon, 9 Nov 2026 18:12:53 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B3=B4=EB=AC=BC=20=C2=B7=20=EC=97=B0?= =?UTF-8?q?=EB=AC=B4=EC=9E=A5=20=C2=B7=20=EB=82=B4=EC=A0=95(=EC=88=9C?= =?UTF-8?q?=EC=B0=B0)=20=C2=B7=20=EC=A0=84=ED=88=AC=20HUD=20=EB=B9=84?= =?UTF-8?q?=EC=A3=BC=EC=96=BC=20=EA=B0=9C=EC=84=A0=20=3D=20Fable=20?= =?UTF-8?q?=EC=A0=9C=EC=95=88=EC=84=9C=20=C2=A74-5~=C2=A74-8=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84(#1104=20=C2=B7=20PD=202026-11-09)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 보물: 목록 바탕 · 서브탭 · 보유 칸 = 보물 아이콘(납품 tre_* 없으면 기본 스탯별 팩 임시 tre_stat_* · 미보유 흰 25 % 실루엣) + 이름 띠 CardFrame01_Bottom · 등급 범례 칩 Round10 · 효과 줄 칩 상자 탭 = 포인트 띠 BannerFrame05 + 가는 주황 바 + 보상 상자 · 상자 카드 CardFrame03(상자 색 + 안쪽 + 광택) + 상자 300 + 뒤 금빛 · 등급 칩 + % 한 줄 · 화살표 아이콘 · 열기 Primary 노랑 + 보유 칩(없으면 회색) · 상자 행 ItemFrame 150 + 수량 칩 + 선택 FocusLine 깜빡 상자 색 = 코드 상수(ChestColor) → 테마 chest_ · 칸 색 chest__bg/deco/light/glow(C45) - 연무장: 목록 바탕 · 카드 = 일러 자리(픽토그램 256 흰 25 % · 임시) + 요약 한 줄 + 어두운 판 칩 2줄(입장 아이콘 + 값 · 보상 칸 76) + 상태 칩 · 규칙 문장 → ⓘ 팝업 · 적장 토벌 「이벤트」 뱃지 - 내정 순찰: 목록 바탕 · 서브탭 · 섹션 「순찰」(레벨형 게이지 군량색 + 배지 「7h」) · 「시간당 수확」 스탯 칸 4(아이콘 64 · 값 44 Sen) · 「쌓인 보상」 타일 4 + 수량 칩 · 수확 Primary 녹 · 광고 2배 Secondary 하늘 + 횟수 · 즉시 Secondary 보라 + 보옥 비용 - 전투 HUD: 유닛 판(초상 원 마스크 + 이름 · 병종 원 · 체력 바 색 단계 · 공/방 칩 · 슬링/사거리 칩 · 상태) · 수 칩 = 아군/적 아이콘 + 숫자 · 스킬 사용 가능 = 뒤 금빛 호흡 · 기본 조작 문장 삭제(상황 안내 유지) - 공통: Sen 에 「×」 글리프가 없어 수량은 「x」 · 회색 버튼 글자 흰 외곽선 · 금빛 틴트 α 1(Glow_Circle01 가운데 α 0.5 실측) - 테스트 117/117 · console error 0 Co-Authored-By: Claude Opus 5.5 --- Assets/Data/UI/ui_theme.csv | 15 +- Assets/Resources/UI/UITheme.asset | 38 +++- Assets/Scripts/OutGame/Arena/ArenaScreen.cs | 81 +++++++ .../OutGame/Domestic/DomesticScreen.cs | 104 ++++++++- .../OutGame/Treasure/TreasureScreen.cs | 208 ++++++++++++++++-- Assets/Scripts/OutGame/UI/OutGameRoot.cs | 4 +- Assets/Scripts/OutGame/UI/UiKit.cs | 2 +- Assets/Scripts/Runtime/BattleHUD.cs | 142 +++++++++++- 8 files changed, 558 insertions(+), 36 deletions(-) diff --git a/Assets/Data/UI/ui_theme.csv b/Assets/Data/UI/ui_theme.csv index 17efdd21..4cabb233 100644 --- a/Assets/Data/UI/ui_theme.csv +++ b/Assets/Data/UI/ui_theme.csv @@ -429,7 +429,7 @@ skin,btn_s_gray,Button/Button01_s_Gray.png,,2.1,,,,Secondary 회색 h56(비활 color,row_label_strip,,,,,,#FFFFFF0A,편성 라벨 칸 세로 띠(흰 4 %) font,title,Assets/UI/GUIPro/ResourcesData/Fonts/Sen-ExtraBold.ttf,,,,,,제목·숫자(라틴 Sen · 한글 = 폴백 Malgun Gothic · PD 결정 전) color,text_on_yellow,,,,,,#1E1E2A,노랑 Primary 위 글자(Fable §5-8) -color,ribbon_glow,,,,,,#F3B72EB3,결과 리본 뒤 금빛(α 0.7 · Fable §4-2 α 0.35 는 어두운 덮개 위에서 안 보여 올림) +color,ribbon_glow,,,,,,#FFD24AFF,결과 리본 뒤 금빛(그림 자체가 가운데 α 0.5 라 틴트 α 1 · Fable §4-2 α 0.35 는 안 보임 실측) color,row_on_field,,,,,,#3F4262,필드 위 행 판(필드보다 밝게 · 팝업 교환 행) skin,btn_l_yellow,Button/Button01_l_Yellow.png,,1.3,,,,Primary 노랑 h110(확인·10연·열기 · Fable §5-5) skin,btn_l_red,Button/Button01_l_White_Bg.png,Button/Button01_l_White_Light1.png,1.35,5;5;5;18,0.35,,Primary 붉은 h104(출정 · 틴트 red) @@ -473,9 +473,9 @@ skin,card3_inner,Frame/CardFrame03_n_InnerBg.png,,1,,,,상자 카드 안쪽 skin,card3_light,Frame/CardFrame03_n_Light.png,,1,,,,상자 카드 광택 color,card3_inner,,,,,,#00000040,상자 카드 안쪽(검정 25 %) color,card3_light,,,,,,#FFFFFF80,상자 카드 광택(흰 50 %) -color,chest_glow,,,,,,#F3B72E73,상자 뒤 빛(α 0.45) +color,chest_glow,,,,,,#FFD24AE6,상자 뒤 빛(그림 가운데 α 0.5 × 0.9) skin,banner_point,Frame/BannerFrame05_Single.png,,3,,,,상자 포인트 띠(h90 · 장식 비율 유지) -color,banner_point,,,,,,#2C2F4A,상자 포인트 띠 틴트 +color,banner_point,,,,,,#FFFFFF,상자 포인트 띠(그림 원색 · 왼쪽 어두운 칸 + 사선) skin,bar4_bg,Slider/Slider_Basic04_Bg.png,,1.5,,,,가는 진행 바 바탕 skin,bar4_fill,Slider/Slider_Basic04_Fill_Orange.png,,1.5,,,,가는 진행 바 채움 icon,tre_stat_hp,Icon_ItemIcons/128/ItemIcon_Heart_Red.Png,,,,,,보물 임시 아이콘 체력(최종 = 보물 그림 N3) @@ -484,3 +484,12 @@ icon,tre_stat_def,Icon_ItemIcons/128/ItemIcon_Gear_Armor_Top.Png,,,,,,보물 임 icon,tre_stat_crit,Icon_ItemIcons/128/ItemIcon_Damage.Png,,,,,,보물 임시 아이콘 치명 icon,tre_stat_range,Icon_ItemIcons/128/ItemIcon_Gear_Boots.Png,,,,,,보물 임시 아이콘 사거리 icon,tre_stat_splash,Icon_ItemIcons/128/ItemIcon_Battle.Png,,,,,,보물 임시 아이콘 광역 +icon,arena_art_0,Icon_PictoIcons/256/PictoIcon_Castle.Png,,,,,,연무장 카드 일러 자리 탑(임시 · 일러 N4) +icon,arena_art_1,Icon_PictoIcons/256/PictoIcon_Chest.Png,,,,,,연무장 카드 일러 자리 던전(임시) +icon,arena_art_2,Icon_PictoIcons/256/PictoIcon_Battle.Png,,,,,,연무장 카드 일러 자리 투기장(임시) +icon,arena_art_3,Icon_PictoIcons/256/PictoIcon_Boss.Png,,,,,,연무장 카드 일러 자리 적장 토벌(임시) +color,arena_art,,,,,,#FFFFFF40,연무장 카드 일러 자리 픽토그램(흰 25 %) +icon,hud_ally,Icon_PictoIcons/128/PictoIcon_Helmet_1.Png,,,,,,전투 HUD 아군 수 아이콘(Fable §4-8) +icon,hud_enemy,Icon_PictoIcons/128/PictoIcon_Boss.Png,,,,,,전투 HUD 적 수 아이콘 +color,skill_glow,,,,,,#FFD24AFF,스킬 버튼 뒤 빛(사용 가능 · 금빛 · 붉은 버튼·모래 바탕과 대비) +icon,shield,IconMisc/Icon_Shield.png,,,,,,방어 스탯(Fable §5-8) diff --git a/Assets/Resources/UI/UITheme.asset b/Assets/Resources/UI/UITheme.asset index 72838893..c6ac134c 100644 --- a/Assets/Resources/UI/UITheme.asset +++ b/Assets/Resources/UI/UITheme.asset @@ -502,7 +502,7 @@ MonoBehaviour: - id: text_on_yellow color: {r: 0.11764706, g: 0.11764706, b: 0.16470589, a: 1} - id: ribbon_glow - color: {r: 0.9529412, g: 0.7176471, b: 0.18039216, a: 0.7019608} + color: {r: 1, g: 0.8235294, b: 0.2901961, a: 1} - id: row_on_field color: {r: 0.24705882, g: 0.25882354, b: 0.38431373, a: 1} - id: banner_pattern @@ -562,9 +562,13 @@ MonoBehaviour: - id: card3_light color: {r: 1, g: 1, b: 1, a: 0.5019608} - id: chest_glow - color: {r: 0.9529412, g: 0.7176471, b: 0.18039216, a: 0.4509804} + color: {r: 1, g: 0.8235294, b: 0.2901961, a: 0.9019608} - id: banner_point - color: {r: 0.17254902, g: 0.18431373, b: 0.2901961, a: 1} + color: {r: 1, g: 1, b: 1, a: 1} + - id: arena_art + color: {r: 1, g: 1, b: 1, a: 0.2509804} + - id: skill_glow + color: {r: 1, g: 0.8235294, b: 0.2901961, a: 1} skins: - id: card pack: {fileID: 21300000, guid: 3070a6f23e6ca4273897acf1b7e8c5ce, type: 3} @@ -1729,6 +1733,34 @@ MonoBehaviour: pack: {fileID: 21300000, guid: d031f4b21493c4841914d4257119a4e3, type: 3} samguk: {fileID: 0} tint: {r: 1, g: 1, b: 1, a: 1} + - id: arena_art_0 + pack: {fileID: 21300000, guid: e63f49ada5fda4cc59b8b5080feeb0b7, type: 3} + samguk: {fileID: 0} + tint: {r: 1, g: 1, b: 1, a: 1} + - id: arena_art_1 + pack: {fileID: 21300000, guid: 304fa5e62cade424d9ae15c73cd20a12, type: 3} + samguk: {fileID: 0} + tint: {r: 1, g: 1, b: 1, a: 1} + - id: arena_art_2 + pack: {fileID: 21300000, guid: e0df45813c53b41d386a33c49657561d, type: 3} + samguk: {fileID: 0} + tint: {r: 1, g: 1, b: 1, a: 1} + - id: arena_art_3 + pack: {fileID: 21300000, guid: cd6dc5dd342ab486b96c3d3e666c6bb9, type: 3} + samguk: {fileID: 0} + tint: {r: 1, g: 1, b: 1, a: 1} + - id: hud_ally + pack: {fileID: 21300000, guid: 6fcf7bcb2b29e4b589e82ab74f31c79e, type: 3} + samguk: {fileID: 0} + tint: {r: 1, g: 1, b: 1, a: 1} + - id: hud_enemy + pack: {fileID: 21300000, guid: 0127e486ba6e6408ba9139509d699e4f, type: 3} + samguk: {fileID: 0} + tint: {r: 1, g: 1, b: 1, a: 1} + - id: shield + pack: {fileID: 21300000, guid: 09135c198f8744fcd89493b169d11bd8, type: 3} + samguk: {fileID: 0} + tint: {r: 1, g: 1, b: 1, a: 1} - id: tile_bridge pack: {fileID: 0} samguk: {fileID: 21300000, guid: 8e5bf7eb1e300474785ff2781eeb5093, type: 3} diff --git a/Assets/Scripts/OutGame/Arena/ArenaScreen.cs b/Assets/Scripts/OutGame/Arena/ArenaScreen.cs index ffcf25e8..3f867cf8 100644 --- a/Assets/Scripts/OutGame/Arena/ArenaScreen.cs +++ b/Assets/Scripts/OutGame/Arena/ArenaScreen.cs @@ -25,6 +25,7 @@ namespace TKS.OutGame public override void Build() { + if (UISkin.On) UiKit.Paint(UiKit.Fill("ListBg", Rt), UiKit.Col("list_bg", UiKit.Bg), false); // 목록형 바탕(Fable §5-3) Header("연무장", "탑 · 일일 던전 · 투기장 · 적장 토벌", true); root = Body(); } @@ -83,6 +84,11 @@ namespace TKS.OutGame { "주간 보스(여포·조조 …) · 누적 피해", "보물 명장 상자", "하루 " + e.RaidDaily, "이번 주 " + boss + " · 누적 " + d.arena.raidDamage.ToString("N0") }, }; float w = 508f, h = 700f; + if (UISkin.Has("card4_bg") && UISkin.Has("btn_l_yellow")) + { + CardsKit(text, w, h); + return; + } for (int i = 0; i < 4; i++) { int k = i; @@ -124,6 +130,81 @@ namespace TKS.OutGame } } + // 카드 그림 · 요약 · 보상 아이콘(테마 id · Fable §4-6 · 일러 N4 전까지 픽토그램 임시) + static readonly string[] Arts = { "arena_art_0", "arena_art_1", "arena_art_2", "arena_art_3" }; + static readonly string[] Briefs = { "층마다 고정 편성 · 10층마다 보스", "요일 순환 재화 던전", "비동기 5v5 · 주간 랭킹", "주간 보스 · 누적 피해" }; + static readonly string[][] RewardIcons = + { + new[] { "cur_gem", "cur_blueprint", "chest_gold" }, + new[] { "cur_gold", "cur_iron", "cur_skillbook" }, + new[] { "gear_flag", "cur_shard" }, + new[] { "chest_general" }, + }; + static readonly string[] EntryIcons = { "cur_ticket", null, "sword", "fire" }; + + /// + /// 모드 카드(Fable 제안서 §4-6 · #1104) = CardFrame04 카드색 + 리본 제목(유지) · 위 일러 자리(픽토그램 220 흰 25 %) + 요약 한 줄 · + /// 아래 어두운 판에 칩 2줄(입장 = 아이콘 + 값 · 보상 = 아이템 칸 72) · 상태 칩 · 규칙 문장 → ⓘ 팝업 · 이벤트 = 오른쪽 위 뱃지. + /// + void CardsKit(string[,] text, float w, float h) + { + var d = S.Save; + var db = S.Db; + var now = S.Now; + string[] entry = + { + "입장권 " + d.arena.towerTickets + " / " + db.Economy.TowerTicketsDaily, + "오늘 " + OpenCount(now) + "곳 · 각 " + (db.Dungeons.dungeons.Count > 0 ? db.Dungeons.dungeons[0].entriesPerDay : 0) + "회", + "남은 " + ArenaRules.ArenaLeft(db, d, now) + " / " + db.Arena.EntriesPerDay, + "하루 " + db.Economy.RaidDaily + "회", + }; + var soft = UiKit.Col("text_soft", UiKit.InkSoft); + for (int i = 0; i < 4; i++) + { + int k = i; + float x = 24f + (i % 2) * (w + 16f); + float y = 18f + (i / 2) * (h + 20f); + var ci = UiKit.Skin(UiKit.At(root, "Card" + i, x, y, w, h), "card4_bg", UiKit.Col("arena_" + i, UiKit.Paper), true); + var card = ci.transform; + card.gameObject.AddComponent