fix(game): 게임 플레이 화면 로직 개선
- 애니메이션 관련 코드 정리 - 레이아웃 조정
This commit is contained in:
@@ -255,6 +255,7 @@ class _GamePlayScreenState extends State<GamePlayScreen>
|
|||||||
/// TaskType 기반 BGM 전환 (애니메이션과 동기화)
|
/// TaskType 기반 BGM 전환 (애니메이션과 동기화)
|
||||||
///
|
///
|
||||||
/// 애니메이션은 TaskType으로 결정되므로, BGM도 동일한 기준 사용
|
/// 애니메이션은 TaskType으로 결정되므로, BGM도 동일한 기준 사용
|
||||||
|
/// 전환 감지 외에도 현재 BGM이 TaskType과 일치하는지 검증
|
||||||
void _updateBgmForTaskType(GameState state) {
|
void _updateBgmForTaskType(GameState state) {
|
||||||
final audio = widget.audioService;
|
final audio = widget.audioService;
|
||||||
if (audio == null) return;
|
if (audio == null) return;
|
||||||
@@ -262,19 +263,20 @@ class _GamePlayScreenState extends State<GamePlayScreen>
|
|||||||
final taskType = state.progress.currentTask.type;
|
final taskType = state.progress.currentTask.type;
|
||||||
final isInBattleTask = taskType == TaskType.kill;
|
final isInBattleTask = taskType == TaskType.kill;
|
||||||
|
|
||||||
if (isInBattleTask && !_wasInBattleTask) {
|
// 전투 태스크 상태 결정
|
||||||
// 전투 태스크 시작: 보스 여부에 따라 BGM 선택
|
if (isInBattleTask) {
|
||||||
|
// 전투 태스크: 보스 여부에 따라 BGM 선택
|
||||||
final monsterLevel = state.progress.currentTask.monsterLevel ?? 0;
|
final monsterLevel = state.progress.currentTask.monsterLevel ?? 0;
|
||||||
final playerLevel = state.traits.level;
|
final playerLevel = state.traits.level;
|
||||||
final isBoss = monsterLevel >= playerLevel + 5;
|
final isBoss = monsterLevel >= playerLevel + 5;
|
||||||
|
final expectedBgm = isBoss ? 'boss' : 'battle';
|
||||||
|
|
||||||
if (isBoss) {
|
// 전환 시점이거나 현재 BGM이 일치하지 않으면 재생
|
||||||
audio.playBgm('boss');
|
if (!_wasInBattleTask || audio.currentBgm != expectedBgm) {
|
||||||
} else {
|
audio.playBgm(expectedBgm);
|
||||||
audio.playBgm('battle');
|
|
||||||
}
|
}
|
||||||
} else if (!isInBattleTask && _wasInBattleTask) {
|
} else if (_wasInBattleTask || audio.currentBgm == 'battle' || audio.currentBgm == 'boss') {
|
||||||
// 전투 태스크 종료: 마을 BGM으로 복귀
|
// 전투 태스크 종료 또는 BGM 불일치: 마을 BGM으로 복귀
|
||||||
audio.playBgm('town');
|
audio.playBgm('town');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -675,6 +677,7 @@ class _GamePlayScreenState extends State<GamePlayScreen>
|
|||||||
MaterialPageRoute<void>(
|
MaterialPageRoute<void>(
|
||||||
builder: (_) => GamePlayScreen(
|
builder: (_) => GamePlayScreen(
|
||||||
controller: widget.controller,
|
controller: widget.controller,
|
||||||
|
audioService: widget.audioService,
|
||||||
currentThemeMode: widget.currentThemeMode,
|
currentThemeMode: widget.currentThemeMode,
|
||||||
onThemeModeChange: widget.onThemeModeChange,
|
onThemeModeChange: widget.onThemeModeChange,
|
||||||
),
|
),
|
||||||
@@ -784,6 +787,7 @@ class _GamePlayScreenState extends State<GamePlayScreen>
|
|||||||
MaterialPageRoute<void>(
|
MaterialPageRoute<void>(
|
||||||
builder: (_) => GamePlayScreen(
|
builder: (_) => GamePlayScreen(
|
||||||
controller: widget.controller,
|
controller: widget.controller,
|
||||||
|
audioService: widget.audioService,
|
||||||
currentThemeMode: widget.currentThemeMode,
|
currentThemeMode: widget.currentThemeMode,
|
||||||
onThemeModeChange: widget.onThemeModeChange,
|
onThemeModeChange: widget.onThemeModeChange,
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user