feat: 허수아비 계산 시뮬레이터 추가
- 빌드 입력, 룰셋, 회전 정책, 결과/리포트 모델을 포함한 데미지 계산 시뮬레이터 기반을 추가 - 단일 실행 창과 배치 전수 조사 창, 플레이어 데미지 스윕 메뉴를 추가 - DamageEffect 계산값 접근자를 열어 기존 전투 공식을 시뮬레이터에서 재사용하도록 정리
This commit is contained in:
38
Assets/_Game/Scripts/Combat/Simulation/SimulationRuleSet.cs
Normal file
38
Assets/_Game/Scripts/Combat/Simulation/SimulationRuleSet.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user