- 빌드 입력, 룰셋, 회전 정책, 결과/리포트 모델을 포함한 데미지 계산 시뮬레이터 기반을 추가 - 단일 실행 창과 배치 전수 조사 창, 플레이어 데미지 스윕 메뉴를 추가 - DamageEffect 계산값 접근자를 열어 기존 전투 공식을 시뮬레이터에서 재사용하도록 정리
79 lines
3.3 KiB
C#
79 lines
3.3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|