편성 = Fable 검수(2차) 결함 1~8 반영(#1104)
- 1 패널 프레임 = 외곽선 없는 BasicFrame_Round20 #3F4262(이전 BorderFrame_Round20 은 스프라이트 자체 검정 외곽선이라 틴트해도 검정 선으로 보였음) → 밝은 림 6 px - 2 문양 3 % · 열 밴드 8 % · 3 저장 비활성 = 회색 스프라이트(녹 × 회색 = 녹 유지 문제) · h56 · 제약 칩과 세로 정렬 · 바뀌면 녹 + 알림 점 20 - 4 패널 A 236~996 · B 1028~1752(홈 ≥ 16 · 탭 바와 18) · 바닥 그라데이션 h100 · 5 보유 격자 빈 칸 = 고스트 카드(최소 8칸) - 6 출전 덮개 20 % · 초상만 · 체크 뱃지 48/28 별 위로 · 7 라벨 140×60 · 30 px · 라벨 칸 세로 띠 · 8 프리셋 행 +8 · 출전 꼬리 64×30 탭 안쪽 · 전투력 칩 정렬 테스트 117/117 · console error 0 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
4c2692b555
commit
9a05b9a0ca
|
|
@ -386,15 +386,15 @@ color,panel_frame,,,,,,#3F4262,섹션 패널 프레임(바탕보다 밝게 · Fa
|
||||||
color,panel_field,,,,,,#262840,섹션 패널 안쪽 필드(바탕보다 어둡게)
|
color,panel_field,,,,,,#262840,섹션 패널 안쪽 필드(바탕보다 어둡게)
|
||||||
color,panel_light,,,,,,#FFFFFF1A,섹션 패널 윗면 광택(흰 10 %)
|
color,panel_light,,,,,,#FFFFFF1A,섹션 패널 윗면 광택(흰 10 %)
|
||||||
color,panel_shadow,,,,,,#14121A59,섹션 패널 그림자(α 0.35 · 아래 6)
|
color,panel_shadow,,,,,,#14121A59,섹션 패널 그림자(α 0.35 · 아래 6)
|
||||||
color,panel_pattern,,,,,,#FFFFFF0D,섹션 패널 문양 타일(흰 5 %)
|
color,panel_pattern,,,,,,#FFFFFF08,섹션 패널 문양 타일(흰 3 % · 검수 결함 2)
|
||||||
color,panel_ground,,,,,,#0000002E,섹션 패널 바닥 그라데이션(검정 18 %)
|
color,panel_ground,,,,,,#0000002E,섹션 패널 바닥 그라데이션(검정 18 %)
|
||||||
color,band_title,,,,,,#121A33,섹션 제목 띠(Title_Tapered02 틴트)
|
color,band_title,,,,,,#121A33,섹션 제목 띠(Title_Tapered02 틴트)
|
||||||
color,row_band,,,,,,#FFFFFF0F,편성 전열·후열 밴드(흰 6 %)
|
color,row_band,,,,,,#FFFFFF14,편성 전열·후열 밴드(흰 8 % · 검수 결함 2·7)
|
||||||
color,divider,,,,,,#FFFFFF40,구분선(흰 25 %)
|
color,divider,,,,,,#FFFFFF40,구분선(흰 25 %)
|
||||||
color,seat_plate,,,,,,#1A1C2EE6,편성 자리 받침(α 0.9)
|
color,seat_plate,,,,,,#1A1C2EE6,편성 자리 받침(α 0.9)
|
||||||
color,seat_light,,,,,,#FFFFFF14,편성 자리 받침 윗면 광택(흰 8 %)
|
color,seat_light,,,,,,#FFFFFF14,편성 자리 받침 윗면 광택(흰 8 %)
|
||||||
color,seat_dim,,,,,,#00000059,출전 중 카드 덮개(35 %)
|
color,seat_dim,,,,,,#00000033,출전 중 카드 덮개(20 % · 초상만 · 검수 결함 6)
|
||||||
skin,panel_frame,Frame/BorderFrame_Round20_White_Bg.png,,1,,,,섹션 패널 프레임(틴트)
|
skin,panel_frame,Frame/BasicFrame_Round20.png,,1,,,,섹션 패널 프레임(틴트 · 외곽선 없는 판 = 밝은 림 · Fable 검수 결함 1)
|
||||||
skin,panel_field,Frame/BasicFrame_Round20.png,,1,,,,섹션 패널 필드(틴트)
|
skin,panel_field,Frame/BasicFrame_Round20.png,,1,,,,섹션 패널 필드(틴트)
|
||||||
skin,panel_light,Frame/BorderFrame_Round20_White_Light.png,,1,,,,섹션 패널 윗면 광택
|
skin,panel_light,Frame/BorderFrame_Round20_White_Light.png,,1,,,,섹션 패널 윗면 광택
|
||||||
skin,band_title,Label/Title_Tapered02.png,,1,,,,섹션 제목 띠(틴트)
|
skin,band_title,Label/Title_Tapered02.png,,1,,,,섹션 제목 띠(틴트)
|
||||||
|
|
@ -405,7 +405,7 @@ skin,focus_line,Frame/ItemFrame00~03_FocusLine.png,,1,,,,선택 테두리(틴트
|
||||||
skin,badge_circle,UI_Etc/Alert_Circle_s_Bg.png,,1,,,,작은 원 뱃지(수량·플러스 바탕)
|
skin,badge_circle,UI_Etc/Alert_Circle_s_Bg.png,,1,,,,작은 원 뱃지(수량·플러스 바탕)
|
||||||
skin,check_circle,Frame/BorderFrame_Circle75_Bg.png,,1,,,,체크 뱃지 원
|
skin,check_circle,Frame/BorderFrame_Circle75_Bg.png,,1,,,,체크 뱃지 원
|
||||||
skin,scroll_fade,Assets/UI/GUIPro/ResourcesData/Sprites/Demo/Demo_Background/Glow_Panel01.png,,1,,,,스크롤 페이드·바닥 그라데이션(위 불투명 → 아래 투명 · 실측)
|
skin,scroll_fade,Assets/UI/GUIPro/ResourcesData/Sprites/Demo/Demo_Background/Glow_Panel01.png,,1,,,,스크롤 페이드·바닥 그라데이션(위 불투명 → 아래 투명 · 실측)
|
||||||
skin,btn_s_green,Button/Button01_s_Green.png,Button/Button01_s_White_Light1.png,1.8,4;3;4;10,0.35,,Secondary 녹(편성 저장) + 광택
|
skin,btn_s_green,Button/Button01_s_Green.png,Button/Button01_s_White_Light1.png,2.1,3;2;3;8,0.35,,Secondary 녹 h56(편성 저장) + 광택
|
||||||
icon,plus_glyph,UI_Etc/ResourceBar_Single_Btn_Yellow2.png,,,,,,플러스 글리프(빈 자리 뱃지)
|
icon,plus_glyph,UI_Etc/ResourceBar_Single_Btn_Yellow2.png,,,,,,플러스 글리프(빈 자리 뱃지)
|
||||||
icon,check_badge,IconMisc/Icon_Check01.png,,,,,,체크(출전 중 뱃지)
|
icon,check_badge,IconMisc/Icon_Check01.png,,,,,,체크(출전 중 뱃지)
|
||||||
skin,btn_round03,Button/Button_Round03_Dark.png,,1,,,,로비 측면 버튼(Fable §4-1)
|
skin,btn_round03,Button/Button_Round03_Dark.png,,1,,,,로비 측면 버튼(Fable §4-1)
|
||||||
|
|
@ -425,4 +425,6 @@ icon,lobby_event,Icon_PictoIcons/128/PictoIcon_Calendar.Png,,,,,,로비 이벤
|
||||||
color,lobby_vignette,,,,,,#1E253599,로비 위 비네트(α 0.6)
|
color,lobby_vignette,,,,,,#1E253599,로비 위 비네트(α 0.6)
|
||||||
color,lobby_band,,,,,,#1E24408C,로비 아래 버튼 뒤 띠(α 0.55)
|
color,lobby_band,,,,,,#1E24408C,로비 아래 버튼 뒤 띠(α 0.55)
|
||||||
color,alert_red,,,,,,#FF243E,알림 원(수량)
|
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 결정 전)
|
font,title,Assets/UI/GUIPro/ResourcesData/Fonts/Sen-ExtraBold.ttf,,,,,,제목·숫자(라틴 Sen · 한글 = 폴백 Malgun Gothic · PD 결정 전)
|
||||||
|
|
|
||||||
|
|
|
@ -476,13 +476,13 @@ MonoBehaviour:
|
||||||
- id: panel_shadow
|
- id: panel_shadow
|
||||||
color: {r: 0.078431375, g: 0.07058824, b: 0.101960786, a: 0.34901962}
|
color: {r: 0.078431375, g: 0.07058824, b: 0.101960786, a: 0.34901962}
|
||||||
- id: panel_pattern
|
- id: panel_pattern
|
||||||
color: {r: 1, g: 1, b: 1, a: 0.050980393}
|
color: {r: 1, g: 1, b: 1, a: 0.03137255}
|
||||||
- id: panel_ground
|
- id: panel_ground
|
||||||
color: {r: 0, g: 0, b: 0, a: 0.18039216}
|
color: {r: 0, g: 0, b: 0, a: 0.18039216}
|
||||||
- id: band_title
|
- id: band_title
|
||||||
color: {r: 0.07058824, g: 0.101960786, b: 0.2, a: 1}
|
color: {r: 0.07058824, g: 0.101960786, b: 0.2, a: 1}
|
||||||
- id: row_band
|
- id: row_band
|
||||||
color: {r: 1, g: 1, b: 1, a: 0.05882353}
|
color: {r: 1, g: 1, b: 1, a: 0.078431375}
|
||||||
- id: divider
|
- id: divider
|
||||||
color: {r: 1, g: 1, b: 1, a: 0.2509804}
|
color: {r: 1, g: 1, b: 1, a: 0.2509804}
|
||||||
- id: seat_plate
|
- id: seat_plate
|
||||||
|
|
@ -490,13 +490,15 @@ MonoBehaviour:
|
||||||
- id: seat_light
|
- id: seat_light
|
||||||
color: {r: 1, g: 1, b: 1, a: 0.078431375}
|
color: {r: 1, g: 1, b: 1, a: 0.078431375}
|
||||||
- id: seat_dim
|
- id: seat_dim
|
||||||
color: {r: 0, g: 0, b: 0, a: 0.34901962}
|
color: {r: 0, g: 0, b: 0, a: 0.2}
|
||||||
- id: lobby_vignette
|
- id: lobby_vignette
|
||||||
color: {r: 0.11764706, g: 0.14509805, b: 0.20784314, a: 0.6}
|
color: {r: 0.11764706, g: 0.14509805, b: 0.20784314, a: 0.6}
|
||||||
- id: lobby_band
|
- id: lobby_band
|
||||||
color: {r: 0.11764706, g: 0.14117648, b: 0.2509804, a: 0.54901963}
|
color: {r: 0.11764706, g: 0.14117648, b: 0.2509804, a: 0.54901963}
|
||||||
- id: alert_red
|
- id: alert_red
|
||||||
color: {r: 1, g: 0.14117648, b: 0.24313726, a: 1}
|
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}
|
||||||
skins:
|
skins:
|
||||||
- id: card
|
- id: card
|
||||||
pack: {fileID: 21300000, guid: 3070a6f23e6ca4273897acf1b7e8c5ce, type: 3}
|
pack: {fileID: 21300000, guid: 3070a6f23e6ca4273897acf1b7e8c5ce, type: 3}
|
||||||
|
|
@ -1066,7 +1068,7 @@ MonoBehaviour:
|
||||||
inset: {x: 6, y: 4, z: 6, w: 34}
|
inset: {x: 6, y: 4, z: 6, w: 34}
|
||||||
overlayAlpha: 0.2
|
overlayAlpha: 0.2
|
||||||
- id: panel_frame
|
- id: panel_frame
|
||||||
pack: {fileID: 21300000, guid: 3070a6f23e6ca4273897acf1b7e8c5ce, type: 3}
|
pack: {fileID: 21300000, guid: 6c9211bc1d90b4e35a3a080121e93d05, type: 3}
|
||||||
samguk: {fileID: 0}
|
samguk: {fileID: 0}
|
||||||
overlay: {fileID: 0}
|
overlay: {fileID: 0}
|
||||||
ppu: 1
|
ppu: 1
|
||||||
|
|
@ -1146,8 +1148,8 @@ MonoBehaviour:
|
||||||
pack: {fileID: 21300000, guid: 2d734a17e89824d30b1f014a9c1f5f60, type: 3}
|
pack: {fileID: 21300000, guid: 2d734a17e89824d30b1f014a9c1f5f60, type: 3}
|
||||||
samguk: {fileID: 0}
|
samguk: {fileID: 0}
|
||||||
overlay: {fileID: 21300000, guid: 1047c0bcbda25440faf8332b872b3529, type: 3}
|
overlay: {fileID: 21300000, guid: 1047c0bcbda25440faf8332b872b3529, type: 3}
|
||||||
ppu: 1.8
|
ppu: 2.1
|
||||||
inset: {x: 4, y: 3, z: 4, w: 10}
|
inset: {x: 3, y: 2, z: 3, w: 8}
|
||||||
overlayAlpha: 0.35
|
overlayAlpha: 0.35
|
||||||
- id: btn_round03
|
- id: btn_round03
|
||||||
pack: {fileID: 21300000, guid: 13bb59864f8ee4bd0948e2f4bebb30dd, type: 3}
|
pack: {fileID: 21300000, guid: 13bb59864f8ee4bd0948e2f4bebb30dd, type: 3}
|
||||||
|
|
@ -1184,6 +1186,13 @@ MonoBehaviour:
|
||||||
ppu: 2
|
ppu: 2
|
||||||
inset: {x: 0, y: 0, z: 0, w: 0}
|
inset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
overlayAlpha: 1
|
overlayAlpha: 1
|
||||||
|
- id: btn_s_gray
|
||||||
|
pack: {fileID: 21300000, guid: 5dc9d06d37e614ecdbcaa9ec360e5100, type: 3}
|
||||||
|
samguk: {fileID: 0}
|
||||||
|
overlay: {fileID: 0}
|
||||||
|
ppu: 2.1
|
||||||
|
inset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
overlayAlpha: 1
|
||||||
icons:
|
icons:
|
||||||
- id: cur_gold
|
- id: cur_gold
|
||||||
pack: {fileID: 21300000, guid: 6d5687fb0dd3a428d9cd26a6f36c6d78, type: 3}
|
pack: {fileID: 21300000, guid: 6d5687fb0dd3a428d9cd26a6f36c6d78, type: 3}
|
||||||
|
|
|
||||||
|
|
@ -43,12 +43,13 @@ namespace TKS.OutGame
|
||||||
// 섹션 A 「출전 편성」 패널(절대 236~1010) · 홈 16 · 섹션 B 「보유 영웅」 패널(1026~1760) · 자리 = 목록 카드 × SeatScale · 보유 = × ListScale
|
// 섹션 A 「출전 편성」 패널(절대 236~1010) · 홈 16 · 섹션 B 「보유 영웅」 패널(1026~1760) · 자리 = 목록 카드 × SeatScale · 보유 = × ListScale
|
||||||
const float SeatScale = 0.62f;
|
const float SeatScale = 0.62f;
|
||||||
const float ListScale = 0.72f;
|
const float ListScale = 0.72f;
|
||||||
|
const int GhostMin = 8; // 보유 격자 최소 칸(2줄 · 빈 칸 = 고스트 카드)
|
||||||
const float SeatPitch = 222f; // 자리 중심 간격(198 + 24)
|
const float SeatPitch = 222f; // 자리 중심 간격(198 + 24)
|
||||||
const float SeatCenterX = 608f; // 자리 줄 가운데(절대 x · 왼쪽 라벨 칸만큼 오른쪽)
|
const float SeatCenterX = 608f; // 자리 줄 가운데(절대 x · 왼쪽 라벨 칸만큼 오른쪽)
|
||||||
const float PanelX = 24f, PanelW = 1032f;
|
const float PanelX = 24f, PanelW = 1032f;
|
||||||
const float PanelA_Y = 12f, PanelA_H = 774f; // 절대 236~1010
|
const float PanelA_Y = 12f, PanelA_H = 760f; // 절대 236~996(Fable 검수 결함 4)
|
||||||
const float PanelB_Y = 802f, PanelB_H = 734f; // 절대 1026~1760
|
const float PanelB_Y = 804f, PanelB_H = 724f; // 절대 1028~1752
|
||||||
const float FrontY = 180f, BackY = 483f; // 자리 위 끝(패널 A 기준 · 절대 416 / 719)
|
const float FrontY = 182f, BackY = 471f; // 자리 위 끝(패널 A 기준 · 밴드 412~691 / 701~980 가운데)
|
||||||
Text countText;
|
Text countText;
|
||||||
Text filterText;
|
Text filterText;
|
||||||
Text ownedCount;
|
Text ownedCount;
|
||||||
|
|
@ -83,41 +84,44 @@ namespace TKS.OutGame
|
||||||
UiKit.SectionPanel(body, "PanelA", PanelX, PanelA_Y, PanelW, PanelA_H, true, true, out a);
|
UiKit.SectionPanel(body, "PanelA", PanelX, PanelA_Y, PanelW, PanelA_H, true, true, out a);
|
||||||
UiKit.SectionTitle(a, "출전 편성");
|
UiKit.SectionTitle(a, "출전 편성");
|
||||||
// 제약 칩(ⓘ = 편성 안내 팝업 · 안내 문장 이관)
|
// 제약 칩(ⓘ = 편성 안내 팝업 · 안내 문장 이관)
|
||||||
var lim = At(a, "Limit", 592f, 8f, 230f, 56f);
|
var lim = At(a, "Limit", 592f, 12f, 230f, 56f);
|
||||||
UiKit.Skin(lim, "chip", UiKit.Col("chip_dark", UiKit.Dark), true);
|
UiKit.Skin(lim, "chip", UiKit.Col("chip_dark", UiKit.Dark), true);
|
||||||
UiKit.Layer(lim, "Line", "chip_line", UiKit.Col("chip_line", Color.clear), 4f, 4f, 4f, 4f);
|
UiKit.Layer(lim, "Line", "chip_line", UiKit.Col("chip_line", Color.clear), 4f, 4f, 4f, 4f);
|
||||||
UiKit.Label(lim, "편성 제약 없음", 26, UiKit.Col("text_soft", UiKit.InkSoft), TextAnchor.MiddleLeft, new Vector2(0f, 0.5f), new Vector2(0f, 0.5f), new Vector2(18f, 0f), new Vector2(170f, 50f)).horizontalOverflow = HorizontalWrapMode.Overflow;
|
UiKit.Label(lim, "편성 제약 없음", 26, UiKit.Col("text_soft", UiKit.InkSoft), TextAnchor.MiddleLeft, new Vector2(0f, 0.5f), new Vector2(0f, 0.5f), new Vector2(18f, 0f), new Vector2(170f, 50f)).horizontalOverflow = HorizontalWrapMode.Overflow;
|
||||||
UiKit.Icon(lim, "info", new Vector2(1f, 0.5f), new Vector2(1f, 0.5f), new Vector2(-16f, 0f), 32f);
|
UiKit.Icon(lim, "info", new Vector2(1f, 0.5f), new Vector2(1f, 0.5f), new Vector2(-16f, 0f), 32f);
|
||||||
lim.gameObject.AddComponent<Button>().onClick.AddListener(ShowGuide);
|
lim.gameObject.AddComponent<Button>().onClick.AddListener(ShowGuide);
|
||||||
// 저장(녹 · 바뀐 것 없으면 비활성 색 · 바뀌면 알림 점)
|
// 저장(녹 · 바뀐 것 없으면 비활성 색 · 바뀌면 알림 점)
|
||||||
var sv = At(a, "Save", 832f, 4f, 180f, 68f);
|
var sv = At(a, "Save", 832f, 14f, 180f, 56f);
|
||||||
saveImg = UiKit.Skin(sv, UISkin.Has("btn_s_green") ? "btn_s_green" : "button", UiKit.White, true);
|
saveImg = UiKit.Skin(sv, UISkin.Has("btn_s_green") ? "btn_s_green" : "button", UiKit.White, true);
|
||||||
sv.gameObject.AddComponent<Button>().onClick.AddListener(SaveNow);
|
sv.gameObject.AddComponent<Button>().onClick.AddListener(SaveNow);
|
||||||
saveText = UiKit.Title(UiKit.Label(sv, "저장", 34, UiKit.Col("text_on_green", UiKit.Dark), TextAnchor.MiddleCenter, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(0f, 5f), new Vector2(170f, 56f)));
|
saveText = UiKit.Title(UiKit.Label(sv, "저장", 34, UiKit.Col("text_on_green", UiKit.Dark), TextAnchor.MiddleCenter, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(0f, 3f), new Vector2(170f, 50f)));
|
||||||
saveDot = UiKit.Icon(sv, "new_dot", new Vector2(1f, 1f), new Vector2(0.5f, 0.5f), new Vector2(-8f, -8f), 26f);
|
saveDot = UiKit.Icon(sv, "new_dot", new Vector2(1f, 1f), new Vector2(0.5f, 0.5f), new Vector2(-6f, -6f), 20f);
|
||||||
// 프리셋 탭 3 + 출전 꼬리 칩
|
// 프리셋 탭 3 + 출전 꼬리 칩
|
||||||
for (int i = 0; i < S.Save.presets.Count; i++)
|
for (int i = 0; i < S.Save.presets.Count; i++)
|
||||||
{
|
{
|
||||||
int k = i;
|
int k = i;
|
||||||
var b = SubTab("Preset" + i, a, "프리셋 " + (i + 1), new Vector2(20f + i * 212f, -84f), new Vector2(200f, 72f), () => LoadPreset(k));
|
var b = SubTab("Preset" + i, a, "프리셋 " + (i + 1), new Vector2(20f + i * 212f, -92f), new Vector2(200f, 72f), () => LoadPreset(k));
|
||||||
presetBtns.Add(b);
|
presetBtns.Add(b);
|
||||||
var tail = UiKit.Skin(UiKit.Rect("Active", b.transform, new Vector2(1f, 1f), new Vector2(1f, 0.5f), new Vector2(6f, -2f), new Vector2(72f, 34f)), "tail", UiKit.Col("tail_red", UiKit.Red));
|
var tail = UiKit.Skin(UiKit.Rect("Active", b.transform, new Vector2(1f, 1f), new Vector2(1f, 1f), new Vector2(-8f, 4f), new Vector2(64f, 30f)), "tail", UiKit.Col("tail_red", UiKit.Red));
|
||||||
UiKit.Title(UiKit.FillLabel(tail.transform, "출전", 20, UiKit.White), true);
|
UiKit.Title(UiKit.FillLabel(tail.transform, "출전", 18, UiKit.White), true);
|
||||||
presetTails.Add(tail.gameObject);
|
presetTails.Add(tail.gameObject);
|
||||||
}
|
}
|
||||||
// 총 전투력 칩(편성 변화가 숫자로 바로 보임)
|
// 총 전투력 칩(편성 변화가 숫자로 바로 보임)
|
||||||
var pw = At(a, "Power", 736f, 88f, 276f, 64f);
|
var pw = At(a, "Power", 736f, 96f, 276f, 64f);
|
||||||
UiKit.Skin(pw, "chip", UiKit.Col("chip_dark", UiKit.Dark));
|
UiKit.Skin(pw, "chip", UiKit.Col("chip_dark", UiKit.Dark));
|
||||||
UiKit.Icon(pw, "sword", new Vector2(0f, 0.5f), new Vector2(0f, 0.5f), new Vector2(12f, 0f), 44f);
|
UiKit.Icon(pw, "sword", new Vector2(0f, 0.5f), new Vector2(0f, 0.5f), new Vector2(12f, 0f), 44f);
|
||||||
UiKit.Label(pw, "전투력", 24, UiKit.Col("text_soft", UiKit.InkSoft), TextAnchor.MiddleLeft, new Vector2(0f, 0.5f), new Vector2(0f, 0.5f), new Vector2(62f, 0f), new Vector2(90f, 40f));
|
UiKit.Label(pw, "전투력", 24, UiKit.Col("text_soft", UiKit.InkSoft), TextAnchor.MiddleLeft, new Vector2(0f, 0.5f), new Vector2(0f, 0.5f), new Vector2(62f, 0f), new Vector2(90f, 40f));
|
||||||
powerText = UiKit.Title(UiKit.Label(pw, "", 40, UiKit.White, TextAnchor.MiddleRight, new Vector2(1f, 0.5f), new Vector2(1f, 0.5f), new Vector2(-18f, 2f), new Vector2(150f, 56f)), true);
|
powerText = UiKit.Title(UiKit.Label(pw, "", 40, UiKit.White, TextAnchor.MiddleRight, new Vector2(1f, 0.5f), new Vector2(1f, 0.5f), new Vector2(-18f, 2f), new Vector2(150f, 56f)), true);
|
||||||
powerText.horizontalOverflow = HorizontalWrapMode.Overflow;
|
powerText.horizontalOverflow = HorizontalWrapMode.Overflow;
|
||||||
// 열 밴드 2 · 구분선 · 전열/후열 칩
|
// 열 밴드 2 · 구분선 · 전열/후열 칩
|
||||||
UiKit.Skin(At(a, "FrontBand", 20f, 172f, 992f, 283f), "row_band", UiKit.Col("row_band", Color.clear));
|
UiKit.Skin(At(a, "FrontBand", 20f, 176f, 992f, 279f), "row_band", UiKit.Col("row_band", Color.clear));
|
||||||
UiKit.Skin(At(a, "Divider", 76f, 461f, 880f, 8f), "divider", UiKit.Col("divider", Color.clear));
|
UiKit.Skin(At(a, "Divider", 76f, 457f, 880f, 8f), "divider", UiKit.Col("divider", Color.clear));
|
||||||
UiKit.Skin(At(a, "BackBand", 20f, 475f, 992f, 283f), "row_band", UiKit.Col("row_band", Color.clear));
|
UiKit.Skin(At(a, "BackBand", 20f, 465f, 992f, 279f), "row_band", UiKit.Col("row_band", Color.clear));
|
||||||
Pill(a, "전열", UiKit.Col("row_front", UiKit.Red), 20f, 286f);
|
// 라벨 칸 세로 띠(라벨 쪽을 면으로 분리 · 검수 결함 7)
|
||||||
Pill(a, "후열", UiKit.Col("row_back", UiKit.Dark), 20f, 589f);
|
UiKit.Skin(At(a, "FrontStrip", 20f, 176f, 156f, 279f), "row_band", UiKit.Col("row_label_strip", Color.clear));
|
||||||
|
UiKit.Skin(At(a, "BackStrip", 20f, 465f, 156f, 279f), "row_band", UiKit.Col("row_label_strip", Color.clear));
|
||||||
|
Pill(a, "전열", UiKit.Col("row_front", UiKit.Red), 16f, 176f + 139.5f - 30f);
|
||||||
|
Pill(a, "후열", UiKit.Col("row_back", UiKit.Dark), 16f, 465f + 139.5f - 30f);
|
||||||
// 자리 = 받침(빈 자리에도) + 카드 칸
|
// 자리 = 받침(빈 자리에도) + 카드 칸
|
||||||
float sw = CollectionCards.CellSize.x * SeatScale, sh = CollectionCards.CellSize.y * SeatScale;
|
float sw = CollectionCards.CellSize.x * SeatScale, sh = CollectionCards.CellSize.y * SeatScale;
|
||||||
for (int i = 0; i < n; i++)
|
for (int i = 0; i < n; i++)
|
||||||
|
|
@ -165,7 +169,7 @@ namespace TKS.OutGame
|
||||||
UiKit.Icon(pick, "arrow_down", new Vector2(1f, 0.5f), new Vector2(1f, 0.5f), new Vector2(-22f, 0f), 28f);
|
UiKit.Icon(pick, "arrow_down", new Vector2(1f, 0.5f), new Vector2(1f, 0.5f), new Vector2(-22f, 0f), 28f);
|
||||||
// 격자 4열(절대 x 54~1026 · y 1108~1748) + 위·아래 페이드
|
// 격자 4열(절대 x 54~1026 · y 1108~1748) + 위·아래 페이드
|
||||||
var cell = CollectionCards.CellSize * ListScale;
|
var cell = CollectionCards.CellSize * ListScale;
|
||||||
float gridTop = 1108f - 224f, gridBottom = OutGameRoot.BodyH - (1748f - 224f);
|
float gridTop = 1110f - 224f, gridBottom = OutGameRoot.BodyH - (1746f - 224f);
|
||||||
list = UiKit.ScrollGrid("List", body, 54f, 54f, gridTop, gridBottom, cell, new Vector2(17f, 16f), 4, out scroll);
|
list = UiKit.ScrollGrid("List", body, 54f, 54f, gridTop, gridBottom, cell, new Vector2(17f, 16f), 4, out scroll);
|
||||||
UiKit.ScrollFades(body, gridTop, gridBottom, 40f, 30f);
|
UiKit.ScrollFades(body, gridTop, gridBottom, 40f, 30f);
|
||||||
}
|
}
|
||||||
|
|
@ -190,9 +194,9 @@ namespace TKS.OutGame
|
||||||
{
|
{
|
||||||
// 전열·후열 라벨 = 평행사변형 칩 120×54(Fable §3-3)
|
// 전열·후열 라벨 = 평행사변형 칩 120×54(Fable §3-3)
|
||||||
var p = UISkin.Has("para_orange")
|
var p = UISkin.Has("para_orange")
|
||||||
? UiKit.Skin(At(panel, "Row_" + label, x, y, 120f, 54f), "para_orange", c)
|
? UiKit.Skin(At(panel, "Row_" + label, x, y, 140f, 60f), "para_orange", c)
|
||||||
: UiKit.Paint(At(panel, "Row_" + label, x, y, 120f, 54f), c);
|
: UiKit.Paint(At(panel, "Row_" + label, x, y, 140f, 60f), c);
|
||||||
UiKit.Title(UiKit.FillLabel(p.transform, label, 28, UiKit.White), true);
|
UiKit.Title(UiKit.FillLabel(p.transform, label, 30, UiKit.White), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnShow()
|
public override void OnShow()
|
||||||
|
|
@ -384,7 +388,9 @@ namespace TKS.OutGame
|
||||||
if (!string.IsNullOrEmpty(id) && S.Def(id) != null) power += S.StatsOf(id).power;
|
if (!string.IsNullOrEmpty(id) && S.Def(id) != null) power += S.StatsOf(id).power;
|
||||||
powerText.text = power.ToString("N0");
|
powerText.text = power.ToString("N0");
|
||||||
// 저장 = 바뀐 것이 있을 때만 녹(+ 알림 점)
|
// 저장 = 바뀐 것이 있을 때만 녹(+ 알림 점)
|
||||||
saveImg.color = dirty ? UiKit.White : UiKit.Col("disabled", UiKit.Dark);
|
// 비활성 = 회색 스프라이트(녹에 회색을 곱하면 녹이 남음 · 검수 결함 3) · 광택 없음 · 글자 #5A5E70
|
||||||
|
UISkin.Apply(saveImg, dirty || !UISkin.Has("btn_s_gray") ? "btn_s_green" : "btn_s_gray");
|
||||||
|
saveImg.color = UiKit.White;
|
||||||
saveText.color = UiKit.Col(dirty ? "text_on_green" : "disabled_text", UiKit.Dark);
|
saveText.color = UiKit.Col(dirty ? "text_on_green" : "disabled_text", UiKit.Dark);
|
||||||
if (saveDot != null) saveDot.gameObject.SetActive(dirty);
|
if (saveDot != null) saveDot.gameObject.SetActive(dirty);
|
||||||
|
|
||||||
|
|
@ -429,11 +435,11 @@ namespace TKS.OutGame
|
||||||
var card = CollectionCards.CardIn(holder, S, h, on, null, ListScale);
|
var card = CollectionCards.CardIn(holder, S, h, on, null, ListScale);
|
||||||
if (on)
|
if (on)
|
||||||
{
|
{
|
||||||
var dim = UiKit.Layer(card.transform, "Dim", "card_bg", UiKit.Col("seat_dim", Color.clear), 2f, 2f, 2f, 2f);
|
var dim = UiKit.Layer(card.transform, "Dim", "card_bg", UiKit.Col("seat_dim", Color.clear), 2f, 80f, 2f, 70f); // 초상만(이름·레벨·별 제외)
|
||||||
dim.transform.SetSiblingIndex(2); // 바탕·테두리 위 · 글자·뱃지 아래
|
dim.transform.SetSiblingIndex(2); // 바탕·테두리 위 · 글자·뱃지 아래
|
||||||
var ck = UiKit.Skin(UiKit.Rect("Check", card.transform, new Vector2(1f, 0f), new Vector2(0.5f, 0.5f), new Vector2(-48f, 118f), new Vector2(72f, 75f)), "check_circle", UiKit.Col("ok", UiKit.Red));
|
var ck = UiKit.Skin(UiKit.Rect("Check", card.transform, new Vector2(1f, 0f), new Vector2(0.5f, 0.5f), new Vector2(-47f, 86f), new Vector2(67f, 70f)), "check_circle", UiKit.Col("ok", UiKit.Red));
|
||||||
ck.preserveAspect = true;
|
ck.preserveAspect = true;
|
||||||
UiKit.Icon(ck.transform, "check_badge", new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(0f, 2f), 42f);
|
UiKit.Icon(ck.transform, "check_badge", new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(0f, 2f), 39f);
|
||||||
}
|
}
|
||||||
var td = card.gameObject.AddComponent<TapDrag>();
|
var td = card.gameObject.AddComponent<TapDrag>();
|
||||||
td.OnTap = () => TapCard(id);
|
td.OnTap = () => TapCard(id);
|
||||||
|
|
@ -441,6 +447,12 @@ namespace TKS.OutGame
|
||||||
td.OnDragMove = MoveGhost;
|
td.OnDragMove = MoveGhost;
|
||||||
td.OnDragEnd = e => DropCard(id, e);
|
td.OnDragEnd = e => DropCard(id, e);
|
||||||
}
|
}
|
||||||
|
// 빈 칸 = 고스트 카드(영웅 목록과 같은 빈 카드)로 최소 2줄(8칸)을 채움(Fable 검수 결함 5)
|
||||||
|
for (int i = owned.Count; i < GhostMin; i++)
|
||||||
|
{
|
||||||
|
var holder = UiKit.Rect("Ghost" + i, list, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), Vector2.zero, cellSize);
|
||||||
|
CollectionCards.EmptyIn(holder, ListScale).raycastTarget = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -179,10 +179,10 @@ namespace TKS.OutGame
|
||||||
if (ground && UISkin.Has("scroll_fade"))
|
if (ground && UISkin.Has("scroll_fade"))
|
||||||
{
|
{
|
||||||
// 스프라이트 = 위 불투명 → 아래 투명(실측) → 뒤집어 바닥이 어둡게
|
// 스프라이트 = 위 불투명 → 아래 투명(실측) → 뒤집어 바닥이 어둡게
|
||||||
var g = Skin(Rect("Ground", field.transform, new Vector2(0.5f, 0f), new Vector2(0.5f, 0f), Vector2.zero, new Vector2(0f, 120f)), "scroll_fade", Col("panel_ground", Color.clear));
|
var g = Skin(Rect("Ground", field.transform, new Vector2(0.5f, 0f), new Vector2(0.5f, 0f), Vector2.zero, new Vector2(0f, 100f)), "scroll_fade", Col("panel_ground", Color.clear));
|
||||||
g.rectTransform.anchorMin = new Vector2(0f, 0f);
|
g.rectTransform.anchorMin = new Vector2(0f, 0f);
|
||||||
g.rectTransform.anchorMax = new Vector2(1f, 0f);
|
g.rectTransform.anchorMax = new Vector2(1f, 0f);
|
||||||
g.rectTransform.sizeDelta = new Vector2(0f, 120f);
|
g.rectTransform.sizeDelta = new Vector2(0f, 100f);
|
||||||
g.rectTransform.localScale = new Vector3(1f, -1f, 1f);
|
g.rectTransform.localScale = new Vector3(1f, -1f, 1f);
|
||||||
g.rectTransform.pivot = new Vector2(0.5f, 1f);
|
g.rectTransform.pivot = new Vector2(0.5f, 1f);
|
||||||
g.rectTransform.anchoredPosition = Vector2.zero;
|
g.rectTransform.anchoredPosition = Vector2.zero;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue