ThreeKingdomsSlingshot/Assets/Scripts/OutGame/Data/EconomyConfig.cs

60 lines
3.5 KiB
C#
Raw Normal View History

아웃게임 1차(PD #1093 세션 A) — 본영 로비 · 세이브 · 군량 · 영웅(레벨·승급 6칸·진화·스킬 표시) · 편성(전열 3/후열 2 · 프리셋 3) · 거래(뽑기·골드 장비 상점) · 스테이지 보상·별 3·소탕 - 데이터: 기획 tables/ 12장 → Assets/Data/OutGame/*.csv · 메뉴 TKS/Import OutGame Data(Editor/DataImporter) → Resources/OutGame 9 자산(HeroDb·GearDb·GachaConfig·EconomyConfig·RewardTable·LevelTable·PromotionTable·EvolveTable·SkillInfoDb) · 검증(행 수·필수 열·id 유일·hero↔skill↔gear·확률 합) 오류 시 자산 불변 · BalanceConfig.heroes[]/HeroDef 삭제 → HeroDb(기존 5인 id 유지) · economy.csv 키 17 + gacha.csv 키 2 추가(기획서 본문 값 · C45) - 세이브: persistentDataPath/save.json · ver 1 · 즉시 저장 · 오프라인 군량 회복 · 일일 초기화 · 신규 유저 = 유비·관우·장비·조운·황충 Lv1 녹 ★=희귀도 · 골드 1000 · 보옥 300 · 군량 30 · 테스트·캡처 = 메모리 전용 - 화면(uGUI 와이어프레임 · img03·06·08·11): 시작 = 본영 로비(출정 → 월드맵 · 편성 · 연무장/보물/내정 준비 중 · 동맹 추후) · 재화 바(월드맵 포함 · 군량 타이머) · 하단 탭 5 · ◀/Esc 일관 · 영웅 목록·상세·상세정보·도감 · 편성(탭·드래그) · 뽑기(천장 n/80 · 확률 공개 · 첫 10연 무료 · 10연 ★★ 보장 · 카드 순차 공개) · 장비 상점(흰/녹 6종 일일 · sell×5 · 새로고침 보옥 20) - 전투 연결: BattleManager.LineupProvider/Deployed(LineupEntry · §3-2 스탯 · 방어 배율 생성 뒤) · playerSpawnPoints = 전열 (−4/0/4, −12) · 후열 (−2/2, −14) · WorldMapScreen 훅(팝업 군량·보상·별 · 입장 군량 · 노드 별 star_on/off · 소탕 · ◀ 본영 · TopInset) · 결과 패널(별 3 조건 · 골드·경험·보옥·장비) · GameBootstrap/AutoPlayDriver 로비 시작 - B 세션 파일(ActionResolver·Combat·UnitView·BattleHUD·SlingshotInput·EnemyAI) 미변경 - 테스트 56/56(기존 41 유지 · 신규 OutGameTests 15) · console error 0 · 사본 GUI 캡처 11장(DataImporter.CaptureOutGame) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 12:11:10 +00:00
using UnityEngine;
namespace TKS.OutGame
{
/// <summary>
/// 재화·군량·신규 유저 초기값·보상·상점 공식 값(economy.csv key,value · 기획서 §2·§3-2·§6 · 2026-11-05 구현 세션이 start_*·공식 계수 키 추가).
/// </summary>
public class EconomyConfig : ScriptableObject
{
public KeyValueList values = new KeyValueList();
public int StaminaMax { get { return values.I("stamina_max"); } }
public int StaminaRegenSec { get { return values.I("stamina_regen_sec"); } }
public int StageCost { get { return values.I("stage_cost"); } }
public int BossCost { get { return values.I("boss_cost"); } }
public int AdStamina { get { return values.I("ad_stamina"); } }
public int AdStaminaDaily { get { return values.I("ad_stamina_daily"); } }
public int GemStaminaCost { get { return values.I("gem_stamina_cost"); } }
public int GemStaminaAmount { get { return values.I("gem_stamina_amount"); } }
public int GemStaminaDaily { get { return values.I("gem_stamina_daily"); } }
public float RepeatRewardMult { get { return values.F("repeat_reward_mult"); } }
public int SoldierDupGold { get { return values.I("soldier_dup_gold"); } }
public int StartGold { get { return values.I("start_gold"); } }
public int StartGem { get { return values.I("start_gem"); } }
public int StartStamina { get { return values.I("start_stamina"); } }
public string[] StartHeroes { get { return values.List("start_heroes"); } }
public int PresetCount { get { return values.I("preset_count"); } }
public int FormationFront { get { return values.I("formation_front"); } }
public float GearBonusPct { get { return values.F("gear_bonus_pct"); } }
public float PowerHpDiv { get { return values.F("power_hp_div"); } }
public float PowerAtkW { get { return values.F("power_atk_w"); } }
public float PowerDefW { get { return values.F("power_def_w"); } }
public int GoldPerStage { get { return values.I("gold_per_stage"); } }
public float FirstClearGoldMult { get { return values.F("first_clear_gold_mult"); } }
public float BossGearDropPct { get { return values.F("boss_gear_drop_pct"); } }
public int ShopSlots { get { return values.I("shop_slots"); } }
public string[] ShopGrades { get { return values.List("shop_grades"); } }
public float ShopPriceMult { get { return values.F("shop_price_mult"); } }
public int ShopRefreshGem { get { return values.I("shop_refresh_gem"); } }
/// <summary>중복 영웅 → 조각(희귀도 1~3).</summary>
public int ShardDup(int rarity)
{
return values.I("shard_dup_r" + Mathf.Clamp(rarity, 1, 3));
}
/// <summary>임포터가 확인하는 필수 키.</summary>
public static readonly string[] RequiredKeys =
{
"stamina_max", "stamina_regen_sec", "stage_cost", "boss_cost", "ad_stamina", "ad_stamina_daily",
"gem_stamina_cost", "gem_stamina_amount", "gem_stamina_daily", "repeat_reward_mult",
"shard_dup_r3", "shard_dup_r2", "shard_dup_r1", "soldier_dup_gold",
"start_gold", "start_gem", "start_stamina", "start_heroes", "preset_count", "formation_front",
"gear_bonus_pct", "power_hp_div", "power_atk_w", "power_def_w",
"gold_per_stage", "first_clear_gold_mult", "boss_gear_drop_pct",
"shop_slots", "shop_grades", "shop_price_mult", "shop_refresh_gem",
};
}
}