Files
Colosseum/Assets/_Game/Scripts/Combat/Simulation/SimulationRuleSet.cs
dal4segno 285da31047 feat: 허수아비 계산 시뮬레이터 추가
- 빌드 입력, 룰셋, 회전 정책, 결과/리포트 모델을 포함한 데미지 계산 시뮬레이터 기반을 추가
- 단일 실행 창과 배치 전수 조사 창, 플레이어 데미지 스윕 메뉴를 추가
- DamageEffect 계산값 접근자를 열어 기존 전투 공식을 시뮬레이터에서 재사용하도록 정리
2026-03-28 15:07:09 +09:00

39 lines
1.6 KiB
C#

using UnityEngine;
namespace Colosseum.Combat.Simulation
{
/// <summary>
/// 허수아비 계산 시뮬레이터의 고정 가정입니다.
/// </summary>
[System.Serializable]
public class SimulationRuleSet
{
[Header("Label")]
[SerializeField] private string ruleName = "Dummy10s";
[Header("Timeline")]
[Min(0.1f)] [SerializeField] private float durationSeconds = 10f;
[Min(1)] [SerializeField] private int targetCount = 1;
[Min(0f)] [SerializeField] private float movementLossSecondsPerCast = 0f;
[Min(0f)] [SerializeField] private float manaRegenPerSecond = 0f;
public string RuleName => string.IsNullOrWhiteSpace(ruleName) ? "Rule" : ruleName.Trim();
public float DurationSeconds => durationSeconds;
public int TargetCount => Mathf.Max(1, targetCount);
public float MovementLossSecondsPerCast => Mathf.Max(0f, movementLossSecondsPerCast);
public float ManaRegenPerSecond => Mathf.Max(0f, manaRegenPerSecond);
/// <summary>
/// 룰셋 값을 한 번에 설정합니다.
/// </summary>
public void Configure(string ruleName, float durationSeconds, int targetCount, float movementLossSecondsPerCast, float manaRegenPerSecond)
{
this.ruleName = ruleName ?? string.Empty;
this.durationSeconds = Mathf.Max(0.1f, durationSeconds);
this.targetCount = Mathf.Max(1, targetCount);
this.movementLossSecondsPerCast = Mathf.Max(0f, movementLossSecondsPerCast);
this.manaRegenPerSecond = Mathf.Max(0f, manaRegenPerSecond);
}
}
}