feat: 허수아비 계산 시뮬레이터 추가
- 빌드 입력, 룰셋, 회전 정책, 결과/리포트 모델을 포함한 데미지 계산 시뮬레이터 기반을 추가 - 단일 실행 창과 배치 전수 조사 창, 플레이어 데미지 스윕 메뉴를 추가 - DamageEffect 계산값 접근자를 열어 기존 전투 공식을 시뮬레이터에서 재사용하도록 정리
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
using UnityEngine;
|
||||
|
||||
using Colosseum.Passives;
|
||||
|
||||
namespace Colosseum.Combat.Simulation
|
||||
{
|
||||
/// <summary>
|
||||
/// 전수 점검용 조합 생성 조건입니다.
|
||||
/// </summary>
|
||||
[System.Serializable]
|
||||
public class SimulationCombinationSpec
|
||||
{
|
||||
[Header("Label")]
|
||||
[SerializeField] private string batchName = "전체 조합";
|
||||
|
||||
[Header("Dimensions")]
|
||||
[SerializeField] private bool combineSkills = true;
|
||||
[SerializeField] private bool combineGems = true;
|
||||
[SerializeField] private bool combinePassives = true;
|
||||
|
||||
[Header("Slots")]
|
||||
[Tooltip("조합 생성 대상 슬롯 인덱스입니다. 0 기반입니다.")]
|
||||
[SerializeField] private int[] activeSlotIndices = new[] { 0, 1, 2, 3, 4, 5 };
|
||||
[SerializeField] private bool allowDuplicateSkills;
|
||||
[SerializeField] private bool includeEmptyGemSet = true;
|
||||
|
||||
[Header("Passive")]
|
||||
[SerializeField] private PassiveTreeData passiveTree;
|
||||
[SerializeField] private bool includeEmptyPassiveSelection = true;
|
||||
[Tooltip("0이면 포인트 허용 범위 안에서 제한 없이 생성합니다.")]
|
||||
[Min(0)] [SerializeField] private int maxPassiveNodeCount = 0;
|
||||
|
||||
[Header("Safety")]
|
||||
[Tooltip("생성할 최대 빌드 수입니다. 조합 폭발을 막기 위한 안전장치입니다.")]
|
||||
[Min(1)] [SerializeField] private int maxBuildCount = 500;
|
||||
|
||||
public string BatchName => string.IsNullOrWhiteSpace(batchName) ? "전체 조합" : batchName.Trim();
|
||||
public bool CombineSkills => combineSkills;
|
||||
public bool CombineGems => combineGems;
|
||||
public bool CombinePassives => combinePassives;
|
||||
public int[] ActiveSlotIndices => activeSlotIndices ?? System.Array.Empty<int>();
|
||||
public bool AllowDuplicateSkills => allowDuplicateSkills;
|
||||
public bool IncludeEmptyGemSet => includeEmptyGemSet;
|
||||
public PassiveTreeData PassiveTree => passiveTree;
|
||||
public bool IncludeEmptyPassiveSelection => includeEmptyPassiveSelection;
|
||||
public int MaxPassiveNodeCount => Mathf.Max(0, maxPassiveNodeCount);
|
||||
public int MaxBuildCount => Mathf.Max(1, maxBuildCount);
|
||||
|
||||
/// <summary>
|
||||
/// 조합 생성 조건을 한 번에 설정합니다.
|
||||
/// </summary>
|
||||
public void Configure(
|
||||
string batchName,
|
||||
bool combineSkills,
|
||||
bool combineGems,
|
||||
bool combinePassives,
|
||||
int[] activeSlotIndices,
|
||||
bool allowDuplicateSkills,
|
||||
bool includeEmptyGemSet,
|
||||
PassiveTreeData passiveTree,
|
||||
bool includeEmptyPassiveSelection,
|
||||
int maxPassiveNodeCount,
|
||||
int maxBuildCount)
|
||||
{
|
||||
this.batchName = batchName ?? string.Empty;
|
||||
this.combineSkills = combineSkills;
|
||||
this.combineGems = combineGems;
|
||||
this.combinePassives = combinePassives;
|
||||
this.activeSlotIndices = activeSlotIndices ?? System.Array.Empty<int>();
|
||||
this.allowDuplicateSkills = allowDuplicateSkills;
|
||||
this.includeEmptyGemSet = includeEmptyGemSet;
|
||||
this.passiveTree = passiveTree;
|
||||
this.includeEmptyPassiveSelection = includeEmptyPassiveSelection;
|
||||
this.maxPassiveNodeCount = Mathf.Max(0, maxPassiveNodeCount);
|
||||
this.maxBuildCount = Mathf.Max(1, maxBuildCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user