46 lines
1.9 KiB
C#
46 lines
1.9 KiB
C#
using System;
|
|
using UnityEngine;
|
|
|
|
namespace TKS
|
|
{
|
|
/// <summary>
|
|
/// 전투 이벤트 카운터(보물 조건 효과 cond_key · 시스템 기획 §8 · PD #1093 C) — 전투 코드는 Raise 1줄만 부르고 아웃게임(OutGameSession)이 구독해 세이브에 누적한다.
|
|
/// 아군 행동만 센다(by = 행동 유닛 · 적군이면 무시). battles · boss_kills · gold_spent · patrols 는 아웃게임 쪽에서 직접 센다.
|
|
/// </summary>
|
|
public static class BattleEvents
|
|
{
|
|
public const string Battles = "battles";
|
|
public const string BossKills = "boss_kills";
|
|
public const string GoldSpent = "gold_spent";
|
|
public const string Patrols = "patrols";
|
|
public const string StrategistShots = "strategist_shots";
|
|
public const string ActiveUses = "active_uses";
|
|
public const string ArcherCrits = "archer_crits";
|
|
public const string Pushes = "pushes";
|
|
|
|
/// <summary>treasures.csv cond_key 로 쓸 수 있는 키(임포터 검증).</summary>
|
|
public static readonly string[] Keys = { Battles, BossKills, GoldSpent, Patrols, StrategistShots, ActiveUses, ArcherCrits, Pushes };
|
|
|
|
public static event Action<string, int> Raised;
|
|
|
|
/// <summary>Play 진입마다 구독 해제(도메인 리로드를 끈 설정에서 이전 세션 구독이 남지 않게).</summary>
|
|
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
|
|
static void ResetStatics()
|
|
{
|
|
Raised = null;
|
|
}
|
|
|
|
public static void Raise(string key, Unit by, int n = 1)
|
|
{
|
|
if (by != null && by.Faction != Faction.Player) return;
|
|
Raise(key, n);
|
|
}
|
|
|
|
public static void Raise(string key, int n = 1)
|
|
{
|
|
if (n <= 0 || Raised == null || Sim.Active) return; // 가상 실행(적 AI 예측)은 세지 않는다
|
|
Raised(key, n);
|
|
}
|
|
}
|
|
}
|