diff --git a/Assets/Data/UI/ui_theme.csv b/Assets/Data/UI/ui_theme.csv
index 0f425f9a..17efdd21 100644
--- a/Assets/Data/UI/ui_theme.csv
+++ b/Assets/Data/UI/ui_theme.csv
@@ -428,3 +428,59 @@ color,alert_red,,,,,,#FF243E,알림 원(수량)
skin,btn_s_gray,Button/Button01_s_Gray.png,,2.1,,,,Secondary 회색 h56(비활성 · 검수 결함 3)
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,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)
+skin,title_divider_l,Label/Title_Line01_Divider_Left.png,,1,,,,소제목 왼쪽 선(Fable §5-2)
+skin,title_divider_r,Label/Title_Line01_Divider_Right.png,,1,,,,소제목 오른쪽 선
+icon,star_on_l,IconMisc/Icon_Star_On.png,,,,,,큰 별 켜짐(결과 · star_off 와 한 벌 289 px)
+icon,x_small,IconMisc/Icon_Close02.png,,,,,,미달 표시(틴트 disabled)
+icon,badge_first,Label/Label_Badge01_Yellow.png,,,,,,첫 클리어 뱃지
+icon,badge_hot,Label/Label_Badge01_Red.png,,,,,,픽업·×2 뱃지
+icon,ad,IconMisc/Icon_Going.png,,,,,,광고 보기 글리프(임시)
+skin,banner_pattern,Frame/BannerFrame00_01~02_Pattern.png,,1,,,,배너 아래 문양 띠(Tiled · Fable §4-4)
+color,banner_pattern,,,,,,#FFFFFF14,배너 아래 문양(흰 8 %)
+icon,lv_badge_y,Slider/Slider_Level02_Icon_Badge_Yellow.png,,,,,,천장 게이지 배지(노랑)
+color,chest_bronze,,,,,,#B0784D,청동 상자 카드 틴트(구 TreasureScreen.ChestColor 상수 → 테마 · C45)
+color,chest_bronze_bg,,,,,,#FF8A1E,청동 상자 칸 bg(= gear_orange_bg)
+color,chest_bronze_deco,,,,,,#FFA43CE6,청동 상자 칸 deco(= gear_orange_deco)
+color,chest_bronze_light,,,,,,#FFD36BD9,청동 상자 칸 light(= gear_orange_light)
+color,chest_bronze_glow,,,,,,#FFD98A59,청동 상자 칸 glow(= gear_orange_glow)
+color,chest_silver,,,,,,#A8ADB8,은 상자 카드 틴트(구 TreasureScreen.ChestColor 상수 → 테마 · C45)
+color,chest_silver_bg,,,,,,#617E8A,은 상자 칸 bg(= gear_white_bg)
+color,chest_silver_deco,,,,,,#718E99E6,은 상자 칸 deco(= gear_white_deco)
+color,chest_silver_light,,,,,,#82A0ABD9,은 상자 칸 light(= gear_white_light)
+color,chest_silver_glow,,,,,,#FFFFFF59,은 상자 칸 glow(= gear_white_glow)
+color,chest_gold,,,,,,#E0B338,금 상자 카드 틴트(구 TreasureScreen.ChestColor 상수 → 테마 · C45)
+color,chest_gold_bg,,,,,,#FFC900,금 상자 칸 bg(= gear_gold_bg)
+color,chest_gold_deco,,,,,,#FFDE00E6,금 상자 칸 deco(= gear_gold_deco)
+color,chest_gold_light,,,,,,#FEFD4ED9,금 상자 칸 light(= gear_gold_light)
+color,chest_gold_glow,,,,,,#F3FF3159,금 상자 칸 glow(= gear_gold_glow)
+color,chest_general,,,,,,#9E4038,명장 상자 카드 틴트(구 TreasureScreen.ChestColor 상수 → 테마 · C45)
+color,chest_general_bg,,,,,,#DF2F38,명장 상자 칸 bg(= tre_myth_bg)
+color,chest_general_deco,,,,,,#FD474BE6,명장 상자 칸 deco(= tre_myth_deco)
+color,chest_general_light,,,,,,#FF8F9CD9,명장 상자 칸 light(= tre_myth_light)
+color,chest_general_glow,,,,,,#FF9DA459,명장 상자 칸 glow(= tre_myth_glow)
+color,chest_gem,,,,,,#4DA691,보옥 상자 카드 틴트(구 TreasureScreen.ChestColor 상수 → 테마 · C45)
+color,chest_gem_bg,,,,,,#1DC056,보옥 상자 칸 bg(= gear_green_bg)
+color,chest_gem_deco,,,,,,#34D934E6,보옥 상자 칸 deco(= gear_green_deco)
+color,chest_gem_light,,,,,,#B2F11FD9,보옥 상자 칸 light(= gear_green_light)
+color,chest_gem_glow,,,,,,#C0FF5159,보옥 상자 칸 glow(= gear_green_glow)
+skin,card3_bg,Frame/CardFrame03_n_Bg.png,,1,,,,상자 카드 바탕(틴트 · Fable §4-5)
+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)
+skin,banner_point,Frame/BannerFrame05_Single.png,,3,,,,상자 포인트 띠(h90 · 장식 비율 유지)
+color,banner_point,,,,,,#2C2F4A,상자 포인트 띠 틴트
+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)
+icon,tre_stat_atk,Icon_ItemIcons/128/ItemIcon_Gear_Sword.Png,,,,,,보물 임시 아이콘 공격
+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,,,,,,보물 임시 아이콘 광역
diff --git a/Assets/Resources/UI/UITheme.asset b/Assets/Resources/UI/UITheme.asset
index 9b15d434..72838893 100644
--- a/Assets/Resources/UI/UITheme.asset
+++ b/Assets/Resources/UI/UITheme.asset
@@ -499,6 +499,72 @@ MonoBehaviour:
color: {r: 1, g: 0.14117648, b: 0.24313726, a: 1}
- id: row_label_strip
color: {r: 1, g: 1, b: 1, a: 0.039215688}
+ - 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}
+ - id: row_on_field
+ color: {r: 0.24705882, g: 0.25882354, b: 0.38431373, a: 1}
+ - id: banner_pattern
+ color: {r: 1, g: 1, b: 1, a: 0.078431375}
+ - id: chest_bronze
+ color: {r: 0.6901961, g: 0.47058824, b: 0.3019608, a: 1}
+ - id: chest_bronze_bg
+ color: {r: 1, g: 0.5411765, b: 0.11764706, a: 1}
+ - id: chest_bronze_deco
+ color: {r: 1, g: 0.6431373, b: 0.23529412, a: 0.9019608}
+ - id: chest_bronze_light
+ color: {r: 1, g: 0.827451, b: 0.41960785, a: 0.8509804}
+ - id: chest_bronze_glow
+ color: {r: 1, g: 0.8509804, b: 0.5411765, a: 0.34901962}
+ - id: chest_silver
+ color: {r: 0.65882355, g: 0.6784314, b: 0.72156864, a: 1}
+ - id: chest_silver_bg
+ color: {r: 0.38039216, g: 0.49411765, b: 0.5411765, a: 1}
+ - id: chest_silver_deco
+ color: {r: 0.44313726, g: 0.5568628, b: 0.6, a: 0.9019608}
+ - id: chest_silver_light
+ color: {r: 0.50980395, g: 0.627451, b: 0.67058825, a: 0.8509804}
+ - id: chest_silver_glow
+ color: {r: 1, g: 1, b: 1, a: 0.34901962}
+ - id: chest_gold
+ color: {r: 0.8784314, g: 0.7019608, b: 0.21960784, a: 1}
+ - id: chest_gold_bg
+ color: {r: 1, g: 0.7882353, b: 0, a: 1}
+ - id: chest_gold_deco
+ color: {r: 1, g: 0.87058824, b: 0, a: 0.9019608}
+ - id: chest_gold_light
+ color: {r: 0.99607843, g: 0.99215686, b: 0.30588236, a: 0.8509804}
+ - id: chest_gold_glow
+ color: {r: 0.9529412, g: 1, b: 0.19215687, a: 0.34901962}
+ - id: chest_general
+ color: {r: 0.61960787, g: 0.2509804, b: 0.21960784, a: 1}
+ - id: chest_general_bg
+ color: {r: 0.8745098, g: 0.18431373, b: 0.21960784, a: 1}
+ - id: chest_general_deco
+ color: {r: 0.99215686, g: 0.2784314, b: 0.29411766, a: 0.9019608}
+ - id: chest_general_light
+ color: {r: 1, g: 0.56078434, b: 0.6117647, a: 0.8509804}
+ - id: chest_general_glow
+ color: {r: 1, g: 0.6156863, b: 0.6431373, a: 0.34901962}
+ - id: chest_gem
+ color: {r: 0.3019608, g: 0.6509804, b: 0.5686275, a: 1}
+ - id: chest_gem_bg
+ color: {r: 0.11372549, g: 0.7529412, b: 0.3372549, a: 1}
+ - id: chest_gem_deco
+ color: {r: 0.20392157, g: 0.8509804, b: 0.20392157, a: 0.9019608}
+ - id: chest_gem_light
+ color: {r: 0.69803923, g: 0.94509804, b: 0.12156863, a: 0.8509804}
+ - id: chest_gem_glow
+ color: {r: 0.7529412, g: 1, b: 0.31764707, a: 0.34901962}
+ - id: card3_inner
+ color: {r: 0, g: 0, b: 0, a: 0.2509804}
+ - 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}
+ - id: banner_point
+ color: {r: 0.17254902, g: 0.18431373, b: 0.2901961, a: 1}
skins:
- id: card
pack: {fileID: 21300000, guid: 3070a6f23e6ca4273897acf1b7e8c5ce, type: 3}
@@ -1193,6 +1259,83 @@ MonoBehaviour:
ppu: 2.1
inset: {x: 0, y: 0, z: 0, w: 0}
overlayAlpha: 1
+ - id: btn_l_yellow
+ pack: {fileID: 21300000, guid: 6cdadcc1a39954748abf7d3d4351e1e6, type: 3}
+ samguk: {fileID: 0}
+ overlay: {fileID: 0}
+ ppu: 1.3
+ inset: {x: 0, y: 0, z: 0, w: 0}
+ overlayAlpha: 1
+ - id: btn_l_red
+ pack: {fileID: 21300000, guid: 3eba92f7629b145ae9366b196000a3f3, type: 3}
+ samguk: {fileID: 0}
+ overlay: {fileID: 21300000, guid: b802653e90c694dd0966490b86866a22, type: 3}
+ ppu: 1.35
+ inset: {x: 5, y: 5, z: 5, w: 18}
+ overlayAlpha: 0.35
+ - id: title_divider_l
+ pack: {fileID: 21300000, guid: 878668f672fc94e3b92df41daa6fb966, type: 3}
+ samguk: {fileID: 0}
+ overlay: {fileID: 0}
+ ppu: 1
+ inset: {x: 0, y: 0, z: 0, w: 0}
+ overlayAlpha: 1
+ - id: title_divider_r
+ pack: {fileID: 21300000, guid: 6c3ea799aad7c48919b36b752f77ead4, type: 3}
+ samguk: {fileID: 0}
+ overlay: {fileID: 0}
+ ppu: 1
+ inset: {x: 0, y: 0, z: 0, w: 0}
+ overlayAlpha: 1
+ - id: banner_pattern
+ pack: {fileID: 21300000, guid: b75949b3a23a049fb814d9cb21aa2c39, type: 3}
+ samguk: {fileID: 0}
+ overlay: {fileID: 0}
+ ppu: 1
+ inset: {x: 0, y: 0, z: 0, w: 0}
+ overlayAlpha: 1
+ - id: card3_bg
+ pack: {fileID: 21300000, guid: 12e2f59e45c9e4f6280b38d49ef68605, type: 3}
+ samguk: {fileID: 0}
+ overlay: {fileID: 0}
+ ppu: 1
+ inset: {x: 0, y: 0, z: 0, w: 0}
+ overlayAlpha: 1
+ - id: card3_inner
+ pack: {fileID: 21300000, guid: 74ae39be6091048c7a16b3cd8712ce2c, type: 3}
+ samguk: {fileID: 0}
+ overlay: {fileID: 0}
+ ppu: 1
+ inset: {x: 0, y: 0, z: 0, w: 0}
+ overlayAlpha: 1
+ - id: card3_light
+ pack: {fileID: 21300000, guid: 6cd33b9fcf759447fa159757f293591b, type: 3}
+ samguk: {fileID: 0}
+ overlay: {fileID: 0}
+ ppu: 1
+ inset: {x: 0, y: 0, z: 0, w: 0}
+ overlayAlpha: 1
+ - id: banner_point
+ pack: {fileID: 21300000, guid: 0311dcd69620e47f4b965eb345ef9b35, type: 3}
+ samguk: {fileID: 0}
+ overlay: {fileID: 0}
+ ppu: 3
+ inset: {x: 0, y: 0, z: 0, w: 0}
+ overlayAlpha: 1
+ - id: bar4_bg
+ pack: {fileID: 21300000, guid: 3c166fa4e3ee74616b471b7c2332ab9b, type: 3}
+ samguk: {fileID: 0}
+ overlay: {fileID: 0}
+ ppu: 1.5
+ inset: {x: 0, y: 0, z: 0, w: 0}
+ overlayAlpha: 1
+ - id: bar4_fill
+ pack: {fileID: 21300000, guid: 26d89dd2d7ae148e4acefd7fb973eb82, type: 3}
+ samguk: {fileID: 0}
+ overlay: {fileID: 0}
+ ppu: 1.5
+ inset: {x: 0, y: 0, z: 0, w: 0}
+ overlayAlpha: 1
icons:
- id: cur_gold
pack: {fileID: 21300000, guid: 6d5687fb0dd3a428d9cd26a6f36c6d78, type: 3}
@@ -1538,6 +1681,54 @@ MonoBehaviour:
pack: {fileID: 21300000, guid: c0c390b014f3f4b0781cfca1e2ebe6f0, type: 3}
samguk: {fileID: 0}
tint: {r: 1, g: 1, b: 1, a: 1}
+ - id: star_on_l
+ pack: {fileID: 21300000, guid: 9fdf2423376c44500a69de40dd83ef49, type: 3}
+ samguk: {fileID: 0}
+ tint: {r: 1, g: 1, b: 1, a: 1}
+ - id: x_small
+ pack: {fileID: 21300000, guid: f1a76f95358d94ca080a3e48691f8e5f, type: 3}
+ samguk: {fileID: 0}
+ tint: {r: 1, g: 1, b: 1, a: 1}
+ - id: badge_first
+ pack: {fileID: 21300000, guid: 77ef9d3b0b12a4a4d954bfce8b142152, type: 3}
+ samguk: {fileID: 0}
+ tint: {r: 1, g: 1, b: 1, a: 1}
+ - id: badge_hot
+ pack: {fileID: 21300000, guid: e9be1374ca9ae47fdb7208668217021c, type: 3}
+ samguk: {fileID: 0}
+ tint: {r: 1, g: 1, b: 1, a: 1}
+ - id: ad
+ pack: {fileID: 21300000, guid: 23684c39a5232480abc423f4c39c550d, type: 3}
+ samguk: {fileID: 0}
+ tint: {r: 1, g: 1, b: 1, a: 1}
+ - id: lv_badge_y
+ pack: {fileID: 21300000, guid: 9fa652a2cd39b4cfcaf06285cfff1483, type: 3}
+ samguk: {fileID: 0}
+ tint: {r: 1, g: 1, b: 1, a: 1}
+ - id: tre_stat_hp
+ pack: {fileID: 21300000, guid: ae898e04b74ec47d8bb33582fcf24b12, type: 3}
+ samguk: {fileID: 0}
+ tint: {r: 1, g: 1, b: 1, a: 1}
+ - id: tre_stat_atk
+ pack: {fileID: 21300000, guid: 41bc376691e7a4aef8398c3f84ee249f, type: 3}
+ samguk: {fileID: 0}
+ tint: {r: 1, g: 1, b: 1, a: 1}
+ - id: tre_stat_def
+ pack: {fileID: 21300000, guid: 3a3a5d970e2d94998818421e4e0e384b, type: 3}
+ samguk: {fileID: 0}
+ tint: {r: 1, g: 1, b: 1, a: 1}
+ - id: tre_stat_crit
+ pack: {fileID: 21300000, guid: 5864b32a142be4809ab2ccc225cae6bf, type: 3}
+ samguk: {fileID: 0}
+ tint: {r: 1, g: 1, b: 1, a: 1}
+ - id: tre_stat_range
+ pack: {fileID: 21300000, guid: e07c16cced13542f59c7400aff52d8a7, type: 3}
+ samguk: {fileID: 0}
+ tint: {r: 1, g: 1, b: 1, a: 1}
+ - id: tre_stat_splash
+ pack: {fileID: 21300000, guid: d031f4b21493c4841914d4257119a4e3, 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/UI/BattleResultPanel.cs b/Assets/Scripts/OutGame/UI/BattleResultPanel.cs
index ad08950f..6a5da559 100644
--- a/Assets/Scripts/OutGame/UI/BattleResultPanel.cs
+++ b/Assets/Scripts/OutGame/UI/BattleResultPanel.cs
@@ -1,3 +1,4 @@
+using System.Collections.Generic;
using System.Text;
using UnityEngine;
using UnityEngine.UI;
@@ -5,21 +6,33 @@ using UnityEngine.UI;
namespace TKS.OutGame
{
///
- /// 전투 결과 패널(기획서 §6) — 별 3(클리어 · 전원 생존 · n턴 이내) · 골드 · 경험(출전 전원) · 보옥(첫 클리어 · 보스) · 장비 드랍.
- /// 전투 HUD 의 승리/패배 판(sortingOrder 100) 위에 덮는다 · 탭 처리는 기존 그대로(SlingshotInput → 월드맵 복귀).
+ /// 전투 결과 패널(기획서 §6 · 비주얼 = Fable 제안서 §4-2 #1104) — 별 3(받침 원 + 등장 튀김) · 조건 행 3 · 보상 타일(골드 · 경험 · 보옥 · 장비 · 상자) ·
+ /// 버튼 = 「다시」(Tertiary · 같은 스테이지 재도전) + 「확인」(Primary 노랑) · 승리면 리본 뒤 금빛.
+ /// 전투 HUD 의 승리/패배 판(sortingOrder 100) 위에 덮는다 · 화면 아무 데나 탭 = 기존 그대로(SlingshotInput → 월드맵 복귀 · 「다시」 위만 제외).
///
public class BattleResultPanel
{
+ // 패널 배치(UI px · 패널 왼쪽 위 기준)
+ const float PW = 920f;
+ const float PH = 1180f;
+ const float Side = 60f;
+ const float RowW = PW - Side * 2f;
+ const float RowH = 64f;
+ const float Tile = 132f;
+ const float BtnY = PH - 40f - 110f;
+
readonly OutGameRoot root;
readonly GameObject go;
readonly Text title;
- readonly Text stars;
- readonly Text conds;
- readonly Text rewards;
- readonly Text hint;
readonly Image ribbon;
+ readonly Image glow;
readonly RectTransform starRow;
readonly Image[] starImg = new Image[3];
+ readonly RectTransform body;
+ readonly Text plain;
+ readonly Button retry;
+ readonly Button ok;
+ string rewardsText = "";
public bool Visible
{
@@ -28,7 +41,7 @@ namespace TKS.OutGame
public string RewardsText
{
- get { return rewards.text; }
+ get { return rewardsText; }
}
public BattleResultPanel(OutGameRoot r, RectTransform canvas)
@@ -40,35 +53,47 @@ namespace TKS.OutGame
Image panel;
if (UISkin.Has("popup"))
{
- // 팩 팝업 틀 + 제목 리본(승리 = 붉은 · 패배 = 회색) + 별 아이콘 3
- panel = UiKit.Skin(UiKit.Rect("Panel", dim, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(0f, 20f), new Vector2(920f, 1180f)), "popup", UiKit.Paper);
+ // 리본 뒤 금빛(승리만 · 팩 Glow_Circle01 · 호흡) → 팩 팝업 틀 → 제목 리본(승리 붉은 · 패배 회색)
+ if (UISkin.Has("glow_circle"))
+ {
+ glow = UiKit.Skin(UiKit.Rect("Glow", dim, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(0f, 20f + PH * 0.5f + 90f), new Vector2(1240f, 1240f)), "glow_circle", UiKit.Col("ribbon_glow", Color.clear));
+ var pulse = glow.gameObject.AddComponent();
+ pulse.min = 0.65f;
+ pulse.period = 1.6f;
+ }
+ panel = UiKit.Skin(UiKit.Rect("Panel", dim, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(0f, 20f), new Vector2(PW, PH)), "popup", UiKit.Paper);
var rib = UiKit.Rect("Ribbon", panel.transform, new Vector2(0.5f, 1f), new Vector2(0.5f, 0.5f), new Vector2(0f, 10f), new Vector2(1000f, 200f));
ribbon = UiKit.Skin(rib, "ribbon", Color.white);
title = UiKit.Title(UiKit.FillLabel(rib, "", 88, UiKit.White, TextAnchor.MiddleCenter, true, 150f), true);
title.rectTransform.offsetMin = new Vector2(150f, 34f);
- starRow = UiKit.Rect("StarRow", panel.transform, new Vector2(0.5f, 1f), new Vector2(0.5f, 1f), new Vector2(0f, -150f), new Vector2(600f, 190f));
+ // 별 3 = 받침 원(Circle78 chip_dark) + 별(가운데 크게 · 위로) · 0.15 s 간격 튀김
+ starRow = UiKit.At(panel.transform, "StarRow", 0f, 120f, PW, 190f);
for (int i = 0; i < 3; i++)
{
- float s = i == 1 ? 190f : 150f;
- starImg[i] = UiKit.Icon(starRow, "star_on", new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2((i - 1) * 180f, i == 1 ? 14f : -10f), s);
+ bool mid = i == 1;
+ float plate = mid ? 150f : 120f;
+ var pos = new Vector2((i - 1) * 190f, mid ? 12f : -14f);
+ UiKit.Skin(UiKit.Rect("Plate" + i, starRow, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), pos, new Vector2(plate, plate)), "circle_frame", UiKit.Col("chip_dark", UiKit.Dark));
+ starImg[i] = UiKit.Icon(starRow, "star_on_l", new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), pos + new Vector2(0f, 4f), mid ? 132f : 106f);
+ if (starImg[i] == null) continue;
+ UiKit.DropShadow(starImg[i], 5f);
+ starImg[i].gameObject.AddComponent().delay = 0.15f * i;
}
+ body = UiKit.Fill("Body", panel.transform);
+ retry = UiKit.SkinBtn(panel.transform, "Retry", "round08", UiKit.Col("menu_btn", UiKit.Dark), "다시", 40, UiKit.White, Side, BtnY, 260f, 110f, () => root.RetryStage());
+ ok = UiKit.SkinBtn(panel.transform, "Ok", UISkin.Has("btn_l_yellow") ? "btn_l_yellow" : "button", UISkin.Has("btn_l_yellow") ? UiKit.White : UiKit.Coin, "확인", 46, UiKit.Col("text_on_yellow", UiKit.Ink), PW - Side - 520f, BtnY, 520f, 110f, null);
}
else
{
- panel = UiKit.Box("Panel", dim, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(0f, 40f), new Vector2(920f, 1180f), UiKit.Paper);
+ panel = UiKit.Box("Panel", dim, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(0f, 40f), new Vector2(PW, PH), UiKit.Paper);
UiKit.Border(panel, UiKit.Line, 4f);
var head = UiKit.TopBand("Head", panel.transform, 0f, 170f);
UiKit.Paint(head, UiKit.Dark);
title = UiKit.FillLabel(head, "", 96, UiKit.White);
+ plain = UiKit.Label(panel.transform, "", 36, UiKit.Ink, TextAnchor.UpperLeft, new Vector2(0.5f, 1f), new Vector2(0.5f, 1f), new Vector2(0f, -200f), new Vector2(760f, 860f), false);
+ plain.lineSpacing = 1.15f;
+ UiKit.Label(panel.transform, "화면을 탭하면 계속", 34, UiKit.InkSoft, TextAnchor.MiddleCenter, new Vector2(0.5f, 0f), new Vector2(0.5f, 0f), new Vector2(0f, 36f), new Vector2(800f, 60f), false);
}
- stars = UiKit.Label(panel.transform, "", 120, UiKit.Star, TextAnchor.MiddleCenter, new Vector2(0.5f, 1f), new Vector2(0.5f, 1f), new Vector2(0f, -190f), new Vector2(800f, 150f));
- conds = UiKit.Label(panel.transform, "", 34, UiKit.Ink, TextAnchor.UpperLeft, new Vector2(0.5f, 1f), new Vector2(0.5f, 1f), new Vector2(0f, -350f), new Vector2(760f, 180f), false);
- conds.lineSpacing = 1.15f;
- var line = UiKit.Box("Line", panel.transform, new Vector2(0.5f, 1f), new Vector2(0.5f, 1f), new Vector2(0f, -540f), new Vector2(800f, 4f), UiKit.Slot, false);
- line.raycastTarget = false;
- rewards = UiKit.Label(panel.transform, "", 38, UiKit.Ink, TextAnchor.UpperLeft, new Vector2(0.5f, 1f), new Vector2(0.5f, 1f), new Vector2(0f, -566f), new Vector2(760f, 460f), false);
- rewards.lineSpacing = 1.15f;
- hint = UiKit.Label(panel.transform, "화면을 탭하면 월드맵으로", 34, UiKit.InkSoft, TextAnchor.MiddleCenter, new Vector2(0.5f, 0f), new Vector2(0.5f, 0f), new Vector2(0f, 36f), new Vector2(800f, 60f), false);
go.SetActive(false);
}
@@ -77,61 +102,155 @@ namespace TKS.OutGame
if (go.activeSelf != on) go.SetActive(on);
}
+ /// 화면 좌표가 「다시」 버튼 위인가 — 화면 탭(월드맵 복귀)을 이 버튼에서는 건너뛴다.
+ public bool PointerOnRetry(Vector2 screen)
+ {
+ if (retry == null || !go.activeInHierarchy || !retry.gameObject.activeSelf) return false;
+ var c = go.GetComponentInParent