feat: 보스 공통 패턴 간격 추가

- BossBehaviorRuntimeState에 패턴 종료 후 공통 텀과 준비 판정을 추가\n- UsePatternAction이 런타임 패턴 실행 결과와 공통 텀을 함께 사용하도록 정리\n- 드로그 PlayMode 테스트에 패턴 종료 후 공통 간격 검증 케이스를 추가
This commit is contained in:
2026-04-10 07:57:15 +09:00
parent 4ba6d9d9ff
commit b019acd0a3
3 changed files with 120 additions and 7 deletions

View File

@@ -283,6 +283,44 @@ namespace Colosseum.Tests
"상위 기본기들이 쿨다운이어도 콤보-기본기1로 폴백하지 않았습니다.");
}
[UnityTest]
public IEnumerator Phase1_AfterPatternEnds_WaitsForCommonPatternInterval()
{
const float commonPatternInterval = 1.2f;
yield return ResetBossAndPlayerState(phase: 1, phaseElapsedTime: 0f, basicLoopCount: 0);
SetRuntimeField("commonPatternInterval", commonPatternInterval);
SetPlayerOffset(2f);
ResumeBehavior();
yield return WaitForCondition(
() => runtimeState.LastExecutedPattern != null
&& runtimeState.LastPatternExecutionResult == BossPatternExecutionResult.Running,
DefaultTimeout,
"첫 패턴 시작을 확인하지 못했습니다.");
BossPatternData firstPattern = runtimeState.LastExecutedPattern;
yield return WaitForCondition(
() => runtimeState.LastPatternExecutionResult != BossPatternExecutionResult.Running,
LongPatternTimeout,
"첫 패턴 종료를 확인하지 못했습니다.");
Assert.AreSame(firstPattern, runtimeState.LastExecutedPattern, "첫 패턴 종료 전에 다른 패턴이 시작되었습니다.");
yield return new WaitForSeconds(commonPatternInterval * 0.5f);
Assert.AreNotEqual(
BossPatternExecutionResult.Running,
runtimeState.LastPatternExecutionResult,
"공통 텀 전에 다음 패턴이 시작되었습니다.");
yield return WaitForCondition(
() => runtimeState.LastPatternExecutionResult == BossPatternExecutionResult.Running,
commonPatternInterval,
"공통 텀 이후 다음 패턴이 다시 시작되지 않았습니다.");
}
[UnityTest]
public IEnumerator Phase3_After90Seconds_ReusesSignature()
{