using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace TKS.OutGame { /// /// 거래(img11 · 기획 S15) — ① 명장 등용(뽑기 · PD 2026-11-13: 배너 2쪽 = 픽업(영웅 1명 강조 일러 · 기간 · 상세 정보) / 국가별 상시(지도 위 진영 깃발 4 = 위·촉·오·군 · 주요 영웅 5) · /// 좌우 화살표로 쪽 넘김 · 천장 n/80 · 확률 공개 · 등용 1회/10회 · 첫 10회 무료 · 결과 = 삼고초려 연출 → 카드) /// ② 보물 상자(PD #1093 C) = 상자 5종 · 보유 수 · 구매(chests.csv buy_gold/buy_gem/buy_points · 거래 할인 개발) · 열기는 보물 > 상자 탭 /// ③ 상점·패스 = 골드 승급 장비 상점(흰/녹 · 일일 · 새로고침 보옥 · 시장 개설 무료) · 성장 패스·월정액·챕터 팩·첫 결제 팩 = 「준비 중」 스텁(과금 없음). /// /// /// 명장 등용 배너 배치 표(Resources/UI/recruit_banner.csv · 형식 = 로비 장면 표 LobbyScene.Load) — 지도·깃발·영웅 자리·이름표 좌표 = 배너 그림 px. /// 누가 나오는지·이름·기간은 OutGame 표 gacha_banners.csv(GachaConfig.Banner). /// public static class RecruitBanner { public const string TablePath = "UI/recruit_banner"; static List rows; public static void Reload() { rows = null; } public static List Rows { get { if (rows == null) rows = LobbyScene.Load(TablePath); return rows; } } public static LobbyScene.Row First(string kind) { return DomesticScene.First(Rows, kind); } /// 인원 n 의 자리 줄(i_slot 순) — 그 인원 줄이 없으면 n 보다 큰 가장 작은 인원 줄. public static List Slots(string kind, int n) { int best = int.MaxValue; foreach (var r in Rows) if (r.kind == kind && r.n >= n && r.n < best) best = r.n; var list = new List(); foreach (var r in Rows) if (r.kind == kind && r.n == best) list.Add(r); list.Sort((a, b) => a.slot.CompareTo(b.slot)); return list; } } public class TradeScreen : OutGameScreen { int page; readonly List