Fable 검수(나머지2) 결함 반영 — 보물 상자 · 연무장 · 내정 · 전투 HUD(#1104)
- 보물 상자: 카드 뒤 무대(문양 흰 5 % + 바닥 그라데이션) · 카드 680×760 · 상자 320 + 흰 금빛 600 · 확률 칩 h60 글자 30 · 내용물 줄 = 카드 아래 어두운 띠 위 흰 글자 · 상자 행 선택 = 흰 테두리 깜빡 + 1.08 배 · 비선택 어둡게 25 % · 기본 선택 = 보유 > 0 인 첫 상자(직접 고르기 전까지) - 연무장: 「이벤트」 = 카드 안 꼬리 칩(돌출 0) · 일일 던전 입장 칩 아이콘(달력) · 아이콘 칩 글자 왼쪽 정렬(InfoChip 공통) - 내정: 게이지 800(명세) · 누적 시간 = 게이지 아래 줄 - 전투 HUD: 스킬 상태 = 한 줄 짧게(사용 가능 · 예약됨 · 쿨 n턴 …) · 뒤 금빛 560 · 위 안내 문장 = 어두운 칩 위 칸 맞춤(잘림 제거) · 유닛 판 y 150 · 칩 h56 글자 30 · HP 28 - 결과: 금빛 안쪽 한 겹 추가 - 검수 결함 1(내정 「전 규격 55~70 % 축소」)은 원본 1080×1920 캡처 실측(제목 띠 ≈ 69 · 수확 버튼 128)으로 축소 그림 환산 오류 판단 · 게이지 길이만 실제 차이 → 반영 - 테스트 117/117 · console error 0 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
896c5237c6
commit
394a7fec4e
|
|
@ -473,7 +473,7 @@ 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,,,,,,#FFD24AE6,상자 뒤 빛(그림 가운데 α 0.5 × 0.9)
|
||||
color,chest_glow,,,,,,#FFF6D0FF,상자 뒤 빛(흰 금 · 금 상자 카드 위에서도 보이게 · 검수2 결함 4)
|
||||
skin,banner_point,Frame/BannerFrame05_Single.png,,3,,,,상자 포인트 띠(h90 · 장식 비율 유지)
|
||||
color,banner_point,,,,,,#FFFFFF,상자 포인트 띠(그림 원색 · 왼쪽 어두운 칸 + 사선)
|
||||
skin,bar4_bg,Slider/Slider_Basic04_Bg.png,,1.5,,,,가는 진행 바 바탕
|
||||
|
|
@ -495,3 +495,6 @@ color,skill_glow,,,,,,#FFD24AFF,스킬 버튼 뒤 빛(사용 가능 · 금빛 ·
|
|||
icon,shield,IconMisc/Icon_Shield.png,,,,,,방어 스탯(Fable §5-8)
|
||||
color,popup_band,,,,,,#1F2138,팝업 제목 띠(공용 · 스테이지 팝업 통일 · 검수 결함 6)
|
||||
skin,btn_green,Button/Button01_s_Green.png,,1.22,,,,Secondary 녹 h100(광고 보기 · btn_sky 와 같은 비율)
|
||||
color,stage_pattern,,,,,,#FFFFFF0D,상자 탭 무대 문양(흰 5 % · 검수2 결함 4)
|
||||
color,chest_select,,,,,,#FFFFFF,상자 행 선택 테두리(흰 · 금 틀과 구분 · 검수2 결함 5)
|
||||
color,chest_dim,,,,,,#00000040,상자 행 비선택 어둡게(25 %)
|
||||
|
|
|
|||
|
|
|
@ -562,7 +562,7 @@ MonoBehaviour:
|
|||
- id: card3_light
|
||||
color: {r: 1, g: 1, b: 1, a: 0.5019608}
|
||||
- id: chest_glow
|
||||
color: {r: 1, g: 0.8235294, b: 0.2901961, a: 0.9019608}
|
||||
color: {r: 1, g: 0.9647059, b: 0.8156863, a: 1}
|
||||
- id: banner_point
|
||||
color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- id: arena_art
|
||||
|
|
@ -571,6 +571,12 @@ MonoBehaviour:
|
|||
color: {r: 1, g: 0.8235294, b: 0.2901961, a: 1}
|
||||
- id: popup_band
|
||||
color: {r: 0.12156863, g: 0.12941177, b: 0.21960784, a: 1}
|
||||
- id: stage_pattern
|
||||
color: {r: 1, g: 1, b: 1, a: 0.050980393}
|
||||
- id: chest_select
|
||||
color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- id: chest_dim
|
||||
color: {r: 0, g: 0, b: 0, a: 0.2509804}
|
||||
skins:
|
||||
- id: card
|
||||
pack: {fileID: 21300000, guid: 3070a6f23e6ca4273897acf1b7e8c5ce, type: 3}
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ namespace TKS.OutGame
|
|||
new[] { "gear_flag", "cur_shard" },
|
||||
new[] { "chest_general" },
|
||||
};
|
||||
static readonly string[] EntryIcons = { "cur_ticket", null, "sword", "fire" };
|
||||
static readonly string[] EntryIcons = { "cur_ticket", "lobby_event", "sword", "fire" };
|
||||
|
||||
/// <summary>
|
||||
/// 모드 카드(Fable 제안서 §4-6 · #1104) = CardFrame04 카드색 + 리본 제목(유지) · 위 일러 자리(픽토그램 220 흰 25 %) + 요약 한 줄 ·
|
||||
|
|
@ -190,13 +190,10 @@ namespace TKS.OutGame
|
|||
rt.rectTransform.offsetMin = new Vector2(rt.rectTransform.offsetMin.x, 16f);
|
||||
if (i == 3)
|
||||
{
|
||||
var ev = UiKit.Icon(card, "badge_hot", new Vector2(1f, 1f), new Vector2(0.5f, 0.5f), new Vector2(-30f, -118f), 96f);
|
||||
if (ev != null)
|
||||
{
|
||||
UiKit.DropShadow(ev, 3f);
|
||||
// 「이벤트」 = 카드 안 오른쪽 위 꼬리 칩(카드 밖 돌출 0 · 검수2 결함 7)
|
||||
var ev = UiKit.Skin(UiKit.Rect("Event", card, new Vector2(1f, 1f), new Vector2(1f, 1f), new Vector2(-20f, -102f), new Vector2(120f, 44f)), "tail", UiKit.Col("tail_red", UiKit.Red));
|
||||
UiKit.Title(UiKit.FillLabel(ev.transform, "이벤트", 22, UiKit.White), true);
|
||||
}
|
||||
}
|
||||
var info = UiKit.Rect("Info", card, new Vector2(0f, 1f), new Vector2(0.5f, 0.5f), new Vector2(46f, -122f), new Vector2(60f, 60f));
|
||||
UiKit.Skin(info, "badge_circle", UiKit.Col("chip_dark", UiKit.Dark), true);
|
||||
if (UiKit.Icon(info, "info", new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), Vector2.zero, 32f) == null) UiKit.Title(UiKit.FillLabel(info, "i", 30, UiKit.White), true);
|
||||
|
|
|
|||
|
|
@ -295,7 +295,7 @@ namespace TKS.OutGame
|
|||
float cap = PatrolRules.CapHours(db, d);
|
||||
float h = PatrolRules.Hours(db, d, S.Now);
|
||||
var soft = UiKit.Col("text_soft", UiKit.InkSoft);
|
||||
const float W = 1032f, Fw = W - 12f, GaugeBar = 640f;
|
||||
const float W = 1032f, Fw = W - 12f, GaugeBar = 800f;
|
||||
|
||||
// ① 순찰
|
||||
RectTransform ar;
|
||||
|
|
@ -308,9 +308,9 @@ namespace TKS.OutGame
|
|||
UiKit.SetGauge(fill, cap > 0f ? h / cap : 0f, GaugeBar);
|
||||
badge.text = Mathf.FloorToInt(h) + "h";
|
||||
badge.fontSize = 30;
|
||||
var cur = UiKit.Title(UiKit.Label(a, FormatHours(h) + " / " + FormatHours(cap), 30, UiKit.White, TextAnchor.MiddleRight, new Vector2(1f, 1f), new Vector2(1f, 1f), new Vector2(-24f, -84f), new Vector2(220f, 60f)), true);
|
||||
var cur = UiKit.Title(UiKit.Label(a, FormatHours(h) + " / " + FormatHours(cap), 30, UiKit.White, TextAnchor.MiddleLeft, new Vector2(0f, 1f), new Vector2(0f, 1f), new Vector2(24f, -164f), new Vector2(260f, 52f)), true);
|
||||
cur.horizontalOverflow = HorizontalWrapMode.Overflow;
|
||||
UiKit.Label(a, "최대 " + FormatHours(cap) + " · 성장 패스 24시간(준비 중) · 농업 개발 +" + Mathf.RoundToInt(DevRules.Mod(db, d, DevRules.PatrolCap)) + "분", 24, soft, TextAnchor.MiddleLeft, new Vector2(0f, 1f), new Vector2(0f, 1f), new Vector2(24f, -168f), new Vector2(Fw - 48f, 44f), false);
|
||||
UiKit.Label(a, "성장 패스 24시간(준비 중) · 농업 개발 +" + Mathf.RoundToInt(DevRules.Mod(db, d, DevRules.PatrolCap)) + "분", 24, soft, TextAnchor.MiddleLeft, new Vector2(1f, 1f), new Vector2(1f, 1f), new Vector2(-24f, -168f), new Vector2(Fw - 320f, 44f), false).alignment = TextAnchor.MiddleRight;
|
||||
|
||||
// ② 시간당 수확
|
||||
RectTransform br;
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ namespace TKS.OutGame
|
|||
|
||||
int page;
|
||||
int chestIdx;
|
||||
bool chestPicked;
|
||||
readonly List<Button> tabs = new List<Button>();
|
||||
readonly List<RectTransform> pages = new List<RectTransform>();
|
||||
|
||||
|
|
@ -75,6 +76,7 @@ namespace TKS.OutGame
|
|||
{
|
||||
int i = S.Db.Chests.IndexOf(id);
|
||||
if (i >= 0) chestIdx = i;
|
||||
chestPicked = true;
|
||||
Refresh();
|
||||
}
|
||||
|
||||
|
|
@ -350,6 +352,7 @@ namespace TKS.OutGame
|
|||
var b = UiKit.Btn("Chest_" + ch.id, p, "", 28, i == chestIdx ? UiKit.Red : UiKit.Paper, UiKit.Ink, new Vector2(0f, 0f), new Vector2(0f, 0f), new Vector2(24f + i * (w + 12f), 24f), new Vector2(w, 220f), () =>
|
||||
{
|
||||
chestIdx = k;
|
||||
chestPicked = true;
|
||||
Refresh();
|
||||
});
|
||||
UiKit.Border(b.GetComponent<Image>(), i == chestIdx ? UiKit.Coin : UiKit.Line, i == chestIdx ? 5f : 2f);
|
||||
|
|
@ -391,12 +394,33 @@ namespace TKS.OutGame
|
|||
if (ri != null) UiKit.DropShadow(ri, 3f);
|
||||
}
|
||||
|
||||
if (!chestPicked && TreasureRules.ChestCount(d, SelectedChest) == 0)
|
||||
for (int i = 0; i < db.Chests.chests.Count; i++)
|
||||
if (TreasureRules.ChestCount(d, db.Chests.chests[i].id) > 0)
|
||||
{
|
||||
chestIdx = i;
|
||||
break;
|
||||
}
|
||||
var c = db.Chests.Get(SelectedChest);
|
||||
if (c == null) return;
|
||||
int count = TreasureRules.ChestCount(d, c.id);
|
||||
|
||||
// 무대 = 카드 뒤 문양 흰 5 % + 바닥 그라데이션(검수2 결함 4)
|
||||
if (UISkin.Has("bg_pattern"))
|
||||
{
|
||||
var stage = UiKit.At(p, "Stage", 0f, 108f, 1080f, 1000f);
|
||||
var pat = UiKit.Skin(stage, "bg_pattern", UiKit.Col("stage_pattern", Color.clear));
|
||||
pat.type = Image.Type.Tiled;
|
||||
if (UISkin.Has("scroll_fade"))
|
||||
{
|
||||
var g = UiKit.Skin(UiKit.At(stage, "Ground", 0f, 1000f - 160f, 1080f, 160f), "scroll_fade", UiKit.Col("panel_ground", Color.clear));
|
||||
g.rectTransform.localScale = new Vector3(1f, -1f, 1f);
|
||||
g.rectTransform.pivot = new Vector2(0f, 0f);
|
||||
}
|
||||
}
|
||||
|
||||
// 상자 카드
|
||||
const float Cw = 660f, Ch = 680f, Cy = 120f;
|
||||
const float Cw = 680f, Ch = 760f, Cy = 120f;
|
||||
var card = UiKit.At(p, "Card", (1080f - Cw) * 0.5f, Cy, Cw, Ch);
|
||||
UiKit.Skin(card, "card3_bg", ChestColor(c.id));
|
||||
UiKit.Layer(card, "Inner", "card3_inner", UiKit.Col("card3_inner", Color.clear), 18f, 104f, 18f, 18f);
|
||||
|
|
@ -405,12 +429,12 @@ namespace TKS.OutGame
|
|||
name.horizontalOverflow = HorizontalWrapMode.Overflow;
|
||||
if (UISkin.Has("glow_circle"))
|
||||
{
|
||||
var glow = UiKit.Skin(UiKit.Rect("Glow", card, new Vector2(0.5f, 1f), new Vector2(0.5f, 0.5f), new Vector2(0f, -300f), new Vector2(520f, 520f)), "glow_circle", UiKit.Col("chest_glow", Color.clear));
|
||||
var glow = UiKit.Skin(UiKit.Rect("Glow", card, new Vector2(0.5f, 1f), new Vector2(0.5f, 0.5f), new Vector2(0f, -320f), new Vector2(600f, 600f)), "glow_circle", UiKit.Col("chest_glow", Color.clear));
|
||||
var pulse = glow.gameObject.AddComponent<UiPulse>();
|
||||
pulse.min = 0.7f;
|
||||
pulse.period = 1.6f;
|
||||
}
|
||||
var ci = UiKit.Icon(card, "chest_" + c.id, new Vector2(0.5f, 1f), new Vector2(0.5f, 0.5f), new Vector2(0f, -300f), 300f);
|
||||
var ci = UiKit.Icon(card, "chest_" + c.id, new Vector2(0.5f, 1f), new Vector2(0.5f, 0.5f), new Vector2(0f, -320f), 320f);
|
||||
if (ci != null) UiKit.DropShadow(ci, 8f);
|
||||
var probs = new List<int>();
|
||||
for (int i = 0; i < ChestDb.ProbGrades.Length; i++)
|
||||
|
|
@ -421,8 +445,8 @@ namespace TKS.OutGame
|
|||
{
|
||||
int i = probs[k];
|
||||
string g = ChestDb.ProbGrades[i];
|
||||
var chip = UiKit.Skin(UiKit.At(card, "P" + i, px + k * (Pw + Pg), 492f, Pw, 56f), "para_orange", GradeColor(g));
|
||||
var ct = UiKit.Title(UiKit.FillLabel(chip.transform, TreasureRules.GradeKo(g) + " " + (c.p[i] * 100f).ToString("0.#") + "%", 28, UiKit.White), true);
|
||||
var chip = UiKit.Skin(UiKit.At(card, "P" + i, px + k * (Pw + Pg), 528f, Pw, 60f), "para_orange", GradeColor(g));
|
||||
var ct = UiKit.Title(UiKit.FillLabel(chip.transform, TreasureRules.GradeKo(g) + " " + (c.p[i] * 100f).ToString("0.#") + "%", 30, UiKit.White), true);
|
||||
ct.horizontalOverflow = HorizontalWrapMode.Overflow;
|
||||
}
|
||||
var extra = new List<string>();
|
||||
|
|
@ -430,7 +454,12 @@ namespace TKS.OutGame
|
|||
if (c.gemMax > 0) extra.Add("보옥 " + c.gemMin + "~" + c.gemMax);
|
||||
if (c.ironMax > 0) extra.Add("운철 " + c.ironMin + "~" + c.ironMax);
|
||||
extra.Add("포인트 +" + c.points);
|
||||
UiKit.Label(card, string.Join(" · ", extra.ToArray()), 26, UiKit.White, TextAnchor.MiddleCenter, new Vector2(0.5f, 0f), new Vector2(0.5f, 0f), new Vector2(0f, 40f), new Vector2(Cw - 60f, 50f), false);
|
||||
// 내용물 줄 = 카드 아래 어두운 띠 위 흰 글자(검수2 결함 10)
|
||||
var eb = UiKit.Layer(card, "ExtraBand", "card_bottom", UiKit.Col("card_bottom", UiKit.Dark), 6f, 0f, 6f, 6f);
|
||||
eb.rectTransform.anchorMax = new Vector2(1f, 0f);
|
||||
eb.rectTransform.offsetMax = new Vector2(-6f, 76f);
|
||||
var et = UiKit.Title(UiKit.FillLabel(eb.transform, string.Join(" · ", extra.ToArray()), 26, UiKit.White, TextAnchor.MiddleCenter, true, 16f), true);
|
||||
et.horizontalOverflow = HorizontalWrapMode.Overflow;
|
||||
|
||||
// 좌우 화살표(카드 가운데 높이)
|
||||
Arrow(p, "Prev", "arrow_prev", 30f, Cy + Ch * 0.5f - 70f, () => Step(-1));
|
||||
|
|
@ -461,6 +490,7 @@ namespace TKS.OutGame
|
|||
cell.gameObject.AddComponent<Button>().onClick.AddListener(() =>
|
||||
{
|
||||
chestIdx = k;
|
||||
chestPicked = true;
|
||||
Refresh();
|
||||
});
|
||||
var ic = UiKit.Icon(cell, "chest_" + ch.id, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(0f, 6f), 104f);
|
||||
|
|
@ -468,9 +498,11 @@ namespace TKS.OutGame
|
|||
UiKit.QtyChip(cell, "x" + TreasureRules.ChestCount(d, ch.id), 28);
|
||||
if (sel && UISkin.Has("focus_line"))
|
||||
{
|
||||
var f = UiKit.Layer(cell, "Focus", "focus_line", UiKit.Col("select_line", UiKit.Coin), -8f, -8f, -8f, -8f);
|
||||
var f = UiKit.Layer(cell, "Focus", "focus_line", UiKit.Col("chest_select", UiKit.White), -8f, -8f, -8f, -8f);
|
||||
f.gameObject.AddComponent<UiPulse>();
|
||||
cell.localScale = Vector3.one * 1.08f;
|
||||
}
|
||||
else UiKit.Layer(cell, "Dim", "item_bg", UiKit.Col("chest_dim", new Color(0f, 0f, 0f, 0.25f)));
|
||||
var nl = UiKit.Label(p, ch.nameKo, 26, sel ? UiKit.White : soft, TextAnchor.UpperCenter, new Vector2(0f, 1f), new Vector2(0.5f, 1f), new Vector2(tx0 + i * (Tw + gap) + Tw * 0.5f, -(ty + Tw + 10f)), new Vector2(Tw + gap, 36f), sel);
|
||||
nl.horizontalOverflow = HorizontalWrapMode.Overflow;
|
||||
}
|
||||
|
|
@ -492,6 +524,7 @@ namespace TKS.OutGame
|
|||
{
|
||||
int n = Mathf.Max(1, S.Db.Chests.chests.Count);
|
||||
chestIdx = ((chestIdx + dir) % n + n) % n;
|
||||
chestPicked = true;
|
||||
Refresh();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -61,6 +61,9 @@ namespace TKS.OutGame
|
|||
var pulse = glow.gameObject.AddComponent<UiPulse>();
|
||||
pulse.min = 0.65f;
|
||||
pulse.period = 1.6f;
|
||||
// 안쪽 한 겹 더(그림 가운데 α 0.5 라 한 장으로는 후광이 약함 · 검수2 보충)
|
||||
var core = UiKit.Skin(UiKit.Rect("Core", glow.transform, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), Vector2.zero, new Vector2(720f, 720f)), "glow_circle", UiKit.Col("ribbon_glow", Color.clear));
|
||||
core.raycastTarget = false;
|
||||
}
|
||||
// 패널 = 섹션 패널 층(그림자 · 밝은 프레임 #3F4262 · 필드 #262840 · 윗면 광택 · 검수 결함 10)
|
||||
var holder = UiKit.Rect("Panel", dim, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(0f, 20f), new Vector2(PW, PH));
|
||||
|
|
|
|||
|
|
@ -348,7 +348,7 @@ namespace TKS.OutGame
|
|||
lx = h + 8f;
|
||||
}
|
||||
}
|
||||
var t = Title(Label(chip.transform, text, size, White, TextAnchor.MiddleCenter, new Vector2(0f, 0.5f), new Vector2(0f, 0.5f), new Vector2(lx, 2f), new Vector2(w - lx - 16f, h)), true);
|
||||
var t = Title(Label(chip.transform, text, size, White, lx > 20f ? TextAnchor.MiddleLeft : TextAnchor.MiddleCenter, new Vector2(0f, 0.5f), new Vector2(0f, 0.5f), new Vector2(lx, 2f), new Vector2(w - lx - 16f, h)), true);
|
||||
t.horizontalOverflow = HorizontalWrapMode.Overflow;
|
||||
return t;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ namespace TKS
|
|||
Text allyCount;
|
||||
Text enemyCount;
|
||||
Image skillGlow;
|
||||
Image msgChip;
|
||||
const float HpBarW = 360f;
|
||||
|
||||
/// <summary>결과 패널이 따로 있으면(아웃게임) 결과 단계에서 HUD 전체를 숨긴다(검수 결함 1 · 제목 2중 방지).</summary>
|
||||
|
|
@ -162,7 +163,7 @@ namespace TKS
|
|||
skillState.resizeTextForBestFit = true;
|
||||
skillState.verticalOverflow = VerticalWrapMode.Truncate;
|
||||
skillState.resizeTextMinSize = 18;
|
||||
skillState.resizeTextMaxSize = 26;
|
||||
skillState.resizeTextMaxSize = 32;
|
||||
var pr = skillPassive.rectTransform;
|
||||
pr.anchorMin = pr.anchorMax = new Vector2(0.5f, 1f);
|
||||
pr.pivot = new Vector2(0.5f, 0f);
|
||||
|
|
@ -208,7 +209,7 @@ namespace TKS
|
|||
var old = transform.Find("UnitPanel");
|
||||
if (old != null) old.gameObject.SetActive(false);
|
||||
unitText.gameObject.SetActive(false);
|
||||
var card = MakeImage("UnitCard", transform, Vector2.zero, Vector2.zero, Vector2.zero, new Vector2(24f, 92f), new Vector2(720f, 196f), UISkin.Col("hud_panel", new Color(0.12f, 0.15f, 0.21f, 0.85f)));
|
||||
var card = MakeImage("UnitCard", transform, Vector2.zero, Vector2.zero, Vector2.zero, new Vector2(24f, 150f), new Vector2(720f, 204f), UISkin.Col("hud_panel", new Color(0.12f, 0.15f, 0.21f, 0.85f)));
|
||||
UISkin.Apply(card, "card");
|
||||
unitCard = card.rectTransform;
|
||||
unitBody = OutGame.UiKit.Fill("Body", unitCard);
|
||||
|
|
@ -226,13 +227,26 @@ namespace TKS
|
|||
var hpBg = OutGame.UiKit.Skin(OutGame.UiKit.At(unitBody, "Hp", 188f, 86f, HpBarW, 30f), "hp_bg", UISkin.Col("hp_bg", Color.white));
|
||||
hpFill = OutGame.UiKit.At(hpBg.transform, "Fill", 4f, 4f, HpBarW - 8f, 22f);
|
||||
OutGame.UiKit.Skin(hpFill, "hp_fill", UISkin.Col("hp_hi", Color.green));
|
||||
hpText = OutGame.UiKit.Title(OutGame.UiKit.Label(unitBody, "", 26, Color.white, TextAnchor.MiddleLeft, new Vector2(0f, 1f), new Vector2(0f, 1f), new Vector2(188f + HpBarW + 14f, -80f), new Vector2(160f, 44f)), true);
|
||||
hpText = OutGame.UiKit.Title(OutGame.UiKit.Label(unitBody, "", 28, Color.white, TextAnchor.MiddleLeft, new Vector2(0f, 1f), new Vector2(0f, 1f), new Vector2(188f + HpBarW + 14f, -80f), new Vector2(160f, 44f)), true);
|
||||
hpText.horizontalOverflow = HorizontalWrapMode.Overflow;
|
||||
atkText = OutGame.UiKit.InfoChip(unitBody, "Atk", 188f, 128f, 150f, 48f, "sword", "", 28);
|
||||
defText = OutGame.UiKit.InfoChip(unitBody, "Def", 350f, 128f, 150f, 48f, "shield", "", 28);
|
||||
extraText = OutGame.UiKit.InfoChip(unitBody, "Extra", 512f, 128f, 188f, 48f, null, "", 24);
|
||||
atkText = OutGame.UiKit.InfoChip(unitBody, "Atk", 188f, 130f, 156f, 56f, "sword", "", 30);
|
||||
defText = OutGame.UiKit.InfoChip(unitBody, "Def", 354f, 130f, 156f, 56f, "shield", "", 30);
|
||||
extraText = OutGame.UiKit.InfoChip(unitBody, "Extra", 520f, 130f, 180f, 56f, null, "", 26);
|
||||
emptyText = OutGame.UiKit.Label(unitCard, "유닛을 선택하세요", 30, soft, TextAnchor.MiddleCenter, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), Vector2.zero, new Vector2(680f, 60f), false);
|
||||
|
||||
// 위 안내 한 줄 = 어두운 칩 위(글자가 바탕 없이 화면 끝에서 잘리던 것 · 검수2 결함 3) · 칸 안 맞춤 축소
|
||||
msgChip = MakeImage("MsgChip", transform, new Vector2(0.5f, 1f), new Vector2(0.5f, 1f), new Vector2(0.5f, 1f), new Vector2(0f, -200f), new Vector2(1032f, 58f), UISkin.Col("chip_dark", new Color(0f, 0f, 0f, 0.8f)));
|
||||
UISkin.Apply(msgChip, "chip");
|
||||
msgChip.transform.SetSiblingIndex(messageText.transform.GetSiblingIndex());
|
||||
messageText.rectTransform.anchoredPosition = new Vector2(0f, -204f);
|
||||
messageText.rectTransform.sizeDelta = new Vector2(990f, 50f);
|
||||
messageText.horizontalOverflow = HorizontalWrapMode.Wrap;
|
||||
messageText.verticalOverflow = VerticalWrapMode.Truncate;
|
||||
messageText.resizeTextForBestFit = true;
|
||||
messageText.resizeTextMinSize = 18;
|
||||
messageText.resizeTextMaxSize = 28;
|
||||
messageText.alignment = TextAnchor.MiddleCenter;
|
||||
|
||||
// 수 칩 = 아군 · 적 아이콘 + 숫자(Sen)
|
||||
var cc = transform.Find("CountChip");
|
||||
if (cc != null && OutGame.UiKit.Icon(cc, "hud_ally", new Vector2(0f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(48f, 0f), 56f) != null)
|
||||
|
|
@ -246,7 +260,7 @@ namespace TKS
|
|||
// 스킬 버튼 뒤 빛(사용 가능 = 호흡)
|
||||
if (UISkin.Has("glow_circle"))
|
||||
{
|
||||
skillGlow = MakeImage("SkillGlow", transform, new Vector2(1f, 0f), new Vector2(1f, 0f), new Vector2(0.5f, 0.5f), new Vector2(-24f - 125f, 100f + 125f), new Vector2(380f, 380f), UISkin.Col("skill_glow", new Color(0.85f, 0.25f, 0.18f, 0.4f)));
|
||||
skillGlow = MakeImage("SkillGlow", transform, new Vector2(1f, 0f), new Vector2(1f, 0f), new Vector2(0.5f, 0.5f), new Vector2(-24f - 125f, 100f + 125f), new Vector2(560f, 560f), UISkin.Col("skill_glow", new Color(0.85f, 0.25f, 0.18f, 0.4f)));
|
||||
UISkin.Apply(skillGlow, "glow_circle");
|
||||
skillGlow.transform.SetSiblingIndex(skillPanel.transform.GetSiblingIndex());
|
||||
var pulse = skillGlow.gameObject.AddComponent<OutGame.UiPulse>();
|
||||
|
|
@ -425,31 +439,31 @@ namespace TKS
|
|||
switch (st)
|
||||
{
|
||||
case SkillSystem.ActiveState.Ready:
|
||||
skillState.text = kind + " · 사용 가능\n탭 = " + (s.Active.Trigger == SkillTrigger.Instant ? "발동" : "예약");
|
||||
skillState.text = "사용 가능"; // 짧게(탭 동작 안내 줄 삭제 · 검수2 결함 2)
|
||||
skillPanel.color = SkillReadyColor;
|
||||
break;
|
||||
case SkillSystem.ActiveState.Reserved:
|
||||
skillState.text = "예약됨\n다시 탭 = 취소";
|
||||
skillState.text = "예약됨";
|
||||
skillPanel.color = SkillReservedColor;
|
||||
break;
|
||||
case SkillSystem.ActiveState.Targeting:
|
||||
skillState.text = "지점 탭 대기\n다시 탭 = 취소";
|
||||
skillState.text = "지점 선택";
|
||||
skillPanel.color = SkillReservedColor;
|
||||
break;
|
||||
case SkillSystem.ActiveState.Cooldown:
|
||||
skillState.text = "쿨 " + s.CooldownLeft(battle.TurnNumber) + "턴 · 사용 불가";
|
||||
skillState.text = "쿨 " + s.CooldownLeft(battle.TurnNumber) + "턴";
|
||||
skillPanel.color = SkillOffColor;
|
||||
break;
|
||||
case SkillSystem.ActiveState.Acted:
|
||||
skillState.text = kind + " · 행동 완료";
|
||||
skillState.text = "행동 완료";
|
||||
skillPanel.color = SkillOffColor;
|
||||
break;
|
||||
case SkillSystem.ActiveState.BonusMove:
|
||||
skillState.text = "추가 이동 중 · 사용 불가";
|
||||
skillState.text = "추가 이동 중";
|
||||
skillPanel.color = SkillOffColor;
|
||||
break;
|
||||
default:
|
||||
skillState.text = kind + " · 쿨 " + s.Active.Cooldown + "턴";
|
||||
skillState.text = kind + " · 쿨 " + s.Active.Cooldown;
|
||||
skillPanel.color = SkillOffColor;
|
||||
break;
|
||||
}
|
||||
|
|
@ -504,6 +518,8 @@ namespace TKS
|
|||
default: turnText.text = ""; break;
|
||||
}
|
||||
messageText.text = battle.LastMessage;
|
||||
bool msgOn = !string.IsNullOrEmpty(messageText.text);
|
||||
if (msgChip != null && msgChip.gameObject.activeSelf != msgOn) msgChip.gameObject.SetActive(msgOn);
|
||||
if (turnBadge != null)
|
||||
{
|
||||
bool on = turnText.text.Length > 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue