diff --git a/lib/main.dart b/lib/main.dart index be2deb6..cdf87cd 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,4 @@ -import 'package:askiineverdie/src/app.dart'; +import 'package:asciineverdie/src/app.dart'; import 'package:flutter/material.dart'; void main() { diff --git a/lib/src/app.dart b/lib/src/app.dart index 5a86724..f5d0db2 100644 --- a/lib/src/app.dart +++ b/lib/src/app.dart @@ -1,25 +1,25 @@ import 'package:flutter/material.dart'; -import 'package:askiineverdie/data/game_text_l10n.dart' as game_l10n; -import 'package:askiineverdie/l10n/app_localizations.dart'; -import 'package:askiineverdie/src/core/audio/audio_service.dart'; -import 'package:askiineverdie/src/shared/retro_colors.dart'; -import 'package:askiineverdie/src/core/engine/game_mutations.dart'; -import 'package:askiineverdie/src/core/engine/progress_service.dart'; -import 'package:askiineverdie/src/core/engine/reward_service.dart'; -import 'package:askiineverdie/src/core/model/game_state.dart'; -import 'package:askiineverdie/src/core/model/pq_config.dart'; -import 'package:askiineverdie/src/core/notification/notification_service.dart'; -import 'package:askiineverdie/src/core/storage/save_manager.dart'; -import 'package:askiineverdie/src/core/storage/save_repository.dart'; -import 'package:askiineverdie/src/core/storage/settings_repository.dart'; -import 'package:askiineverdie/src/features/front/front_screen.dart'; -import 'package:askiineverdie/src/features/front/save_picker_dialog.dart'; -import 'package:askiineverdie/src/features/game/game_play_screen.dart'; -import 'package:askiineverdie/src/features/game/game_session_controller.dart'; -import 'package:askiineverdie/src/features/game/widgets/notification_overlay.dart'; -import 'package:askiineverdie/src/features/hall_of_fame/hall_of_fame_screen.dart'; -import 'package:askiineverdie/src/features/new_character/new_character_screen.dart'; +import 'package:asciineverdie/data/game_text_l10n.dart' as game_l10n; +import 'package:asciineverdie/l10n/app_localizations.dart'; +import 'package:asciineverdie/src/core/audio/audio_service.dart'; +import 'package:asciineverdie/src/shared/retro_colors.dart'; +import 'package:asciineverdie/src/core/engine/game_mutations.dart'; +import 'package:asciineverdie/src/core/engine/progress_service.dart'; +import 'package:asciineverdie/src/core/engine/reward_service.dart'; +import 'package:asciineverdie/src/core/model/game_state.dart'; +import 'package:asciineverdie/src/core/model/pq_config.dart'; +import 'package:asciineverdie/src/core/notification/notification_service.dart'; +import 'package:asciineverdie/src/core/storage/save_manager.dart'; +import 'package:asciineverdie/src/core/storage/save_repository.dart'; +import 'package:asciineverdie/src/core/storage/settings_repository.dart'; +import 'package:asciineverdie/src/features/front/front_screen.dart'; +import 'package:asciineverdie/src/features/front/save_picker_dialog.dart'; +import 'package:asciineverdie/src/features/game/game_play_screen.dart'; +import 'package:asciineverdie/src/features/game/game_session_controller.dart'; +import 'package:asciineverdie/src/features/game/widgets/notification_overlay.dart'; +import 'package:asciineverdie/src/features/hall_of_fame/hall_of_fame_screen.dart'; +import 'package:asciineverdie/src/features/new_character/new_character_screen.dart'; class AskiiNeverDieApp extends StatefulWidget { const AskiiNeverDieApp({super.key}); @@ -475,7 +475,7 @@ class _AskiiNeverDieAppState extends State { GameState initialState, { bool testMode = false, }) async { - await _controller.startNew(initialState, cheatsEnabled: false); + await _controller.startNew(initialState, cheatsEnabled: testMode); if (context.mounted) { // NewCharacterScreen을 pop하고 GamePlayScreen으로 이동 diff --git a/lib/src/core/animation/ascii_animation_data.dart b/lib/src/core/animation/ascii_animation_data.dart index d3bfd4e..b561345 100644 --- a/lib/src/core/animation/ascii_animation_data.dart +++ b/lib/src/core/animation/ascii_animation_data.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:askiineverdie/src/core/animation/ascii_animation_type.dart'; +import 'package:asciineverdie/src/core/animation/ascii_animation_type.dart'; /// ASCII 애니메이션 프레임 데이터 class AsciiAnimationData { diff --git a/lib/src/core/animation/ascii_animation_type.dart b/lib/src/core/animation/ascii_animation_type.dart index 50c6621..8017a11 100644 --- a/lib/src/core/animation/ascii_animation_type.dart +++ b/lib/src/core/animation/ascii_animation_type.dart @@ -1,4 +1,4 @@ -import 'package:askiineverdie/src/core/model/game_state.dart'; +import 'package:asciineverdie/src/core/model/game_state.dart'; /// ASCII 애니메이션 타입 (TaskType과 매핑) enum AsciiAnimationType { diff --git a/lib/src/core/animation/background_data.dart b/lib/src/core/animation/background_data.dart index 38dc7d9..b34127a 100644 --- a/lib/src/core/animation/background_data.dart +++ b/lib/src/core/animation/background_data.dart @@ -1,7 +1,7 @@ // 환경별 배경 패턴 데이터 // ASCII Patrol 스타일 - 패럴렉스 스크롤링 배경 -import 'package:askiineverdie/src/core/animation/background_layer.dart'; +import 'package:asciineverdie/src/core/animation/background_layer.dart'; /// 환경별 배경 레이어 반환 List getBackgroundLayers(EnvironmentType environment) { diff --git a/lib/src/core/animation/canvas/ascii_canvas_painter.dart b/lib/src/core/animation/canvas/ascii_canvas_painter.dart index 654caa1..80de44a 100644 --- a/lib/src/core/animation/canvas/ascii_canvas_painter.dart +++ b/lib/src/core/animation/canvas/ascii_canvas_painter.dart @@ -1,8 +1,8 @@ import 'dart:ui' as ui; -import 'package:askiineverdie/src/core/animation/canvas/ascii_cell.dart'; -import 'package:askiineverdie/src/core/animation/canvas/ascii_layer.dart'; -import 'package:askiineverdie/src/core/constants/ascii_colors.dart'; +import 'package:asciineverdie/src/core/animation/canvas/ascii_cell.dart'; +import 'package:asciineverdie/src/core/animation/canvas/ascii_layer.dart'; +import 'package:asciineverdie/src/core/constants/ascii_colors.dart'; import 'package:flutter/material.dart'; /// Paragraph 캐시 키 diff --git a/lib/src/core/animation/canvas/ascii_canvas_widget.dart b/lib/src/core/animation/canvas/ascii_canvas_widget.dart index cd2638e..52ffdef 100644 --- a/lib/src/core/animation/canvas/ascii_canvas_widget.dart +++ b/lib/src/core/animation/canvas/ascii_canvas_widget.dart @@ -1,6 +1,6 @@ -import 'package:askiineverdie/src/core/animation/canvas/ascii_canvas_painter.dart'; -import 'package:askiineverdie/src/core/animation/canvas/ascii_layer.dart'; -import 'package:askiineverdie/src/core/constants/ascii_colors.dart'; +import 'package:asciineverdie/src/core/animation/canvas/ascii_canvas_painter.dart'; +import 'package:asciineverdie/src/core/animation/canvas/ascii_layer.dart'; +import 'package:asciineverdie/src/core/constants/ascii_colors.dart'; import 'package:flutter/material.dart'; /// ASCII Canvas 위젯 (RepaintBoundary 포함) diff --git a/lib/src/core/animation/canvas/ascii_layer.dart b/lib/src/core/animation/canvas/ascii_layer.dart index 296c940..df7f2fb 100644 --- a/lib/src/core/animation/canvas/ascii_layer.dart +++ b/lib/src/core/animation/canvas/ascii_layer.dart @@ -1,4 +1,4 @@ -import 'package:askiineverdie/src/core/animation/canvas/ascii_cell.dart'; +import 'package:asciineverdie/src/core/animation/canvas/ascii_cell.dart'; /// ASCII 레이어 데이터 구조 (Canvas 렌더러용) /// diff --git a/lib/src/core/animation/canvas/canvas_battle_composer.dart b/lib/src/core/animation/canvas/canvas_battle_composer.dart index 6e3425e..4646602 100644 --- a/lib/src/core/animation/canvas/canvas_battle_composer.dart +++ b/lib/src/core/animation/canvas/canvas_battle_composer.dart @@ -1,13 +1,13 @@ -import 'package:askiineverdie/src/core/animation/ascii_animation_data.dart'; -import 'package:askiineverdie/src/core/animation/background_data.dart'; -import 'package:askiineverdie/src/core/animation/background_layer.dart'; -import 'package:askiineverdie/src/core/animation/canvas/ascii_cell.dart'; -import 'package:askiineverdie/src/core/animation/canvas/ascii_layer.dart'; -import 'package:askiineverdie/src/core/animation/character_frames.dart'; -import 'package:askiineverdie/src/core/animation/monster_size.dart'; -import 'package:askiineverdie/src/core/animation/race_character_frames.dart'; -import 'package:askiineverdie/src/core/animation/weapon_category.dart'; -import 'package:askiineverdie/src/core/animation/weapon_effects.dart'; +import 'package:asciineverdie/src/core/animation/ascii_animation_data.dart'; +import 'package:asciineverdie/src/core/animation/background_data.dart'; +import 'package:asciineverdie/src/core/animation/background_layer.dart'; +import 'package:asciineverdie/src/core/animation/canvas/ascii_cell.dart'; +import 'package:asciineverdie/src/core/animation/canvas/ascii_layer.dart'; +import 'package:asciineverdie/src/core/animation/character_frames.dart'; +import 'package:asciineverdie/src/core/animation/monster_size.dart'; +import 'package:asciineverdie/src/core/animation/race_character_frames.dart'; +import 'package:asciineverdie/src/core/animation/weapon_category.dart'; +import 'package:asciineverdie/src/core/animation/weapon_effects.dart'; /// Canvas용 전투 프레임 합성기 /// diff --git a/lib/src/core/animation/canvas/canvas_special_composer.dart b/lib/src/core/animation/canvas/canvas_special_composer.dart index f5b15d7..448b757 100644 --- a/lib/src/core/animation/canvas/canvas_special_composer.dart +++ b/lib/src/core/animation/canvas/canvas_special_composer.dart @@ -1,6 +1,6 @@ -import 'package:askiineverdie/src/core/animation/ascii_animation_type.dart'; -import 'package:askiineverdie/src/core/animation/canvas/ascii_cell.dart'; -import 'package:askiineverdie/src/core/animation/canvas/ascii_layer.dart'; +import 'package:asciineverdie/src/core/animation/ascii_animation_type.dart'; +import 'package:asciineverdie/src/core/animation/canvas/ascii_cell.dart'; +import 'package:asciineverdie/src/core/animation/canvas/ascii_layer.dart'; /// Canvas용 특수 이벤트 애니메이션 합성기 /// diff --git a/lib/src/core/animation/canvas/canvas_town_composer.dart b/lib/src/core/animation/canvas/canvas_town_composer.dart index a50b650..3a202ed 100644 --- a/lib/src/core/animation/canvas/canvas_town_composer.dart +++ b/lib/src/core/animation/canvas/canvas_town_composer.dart @@ -1,6 +1,6 @@ -import 'package:askiineverdie/src/core/animation/canvas/ascii_cell.dart'; -import 'package:askiineverdie/src/core/animation/canvas/ascii_layer.dart'; -import 'package:askiineverdie/src/core/animation/race_character_frames.dart'; +import 'package:asciineverdie/src/core/animation/canvas/ascii_cell.dart'; +import 'package:asciineverdie/src/core/animation/canvas/ascii_layer.dart'; +import 'package:asciineverdie/src/core/animation/race_character_frames.dart'; /// Canvas용 마을/상점 애니메이션 합성기 /// diff --git a/lib/src/core/animation/canvas/canvas_walking_composer.dart b/lib/src/core/animation/canvas/canvas_walking_composer.dart index 5044f96..fb617ce 100644 --- a/lib/src/core/animation/canvas/canvas_walking_composer.dart +++ b/lib/src/core/animation/canvas/canvas_walking_composer.dart @@ -1,8 +1,8 @@ -import 'package:askiineverdie/src/core/animation/background_data.dart'; -import 'package:askiineverdie/src/core/animation/background_layer.dart'; -import 'package:askiineverdie/src/core/animation/canvas/ascii_cell.dart'; -import 'package:askiineverdie/src/core/animation/canvas/ascii_layer.dart'; -import 'package:askiineverdie/src/core/animation/race_character_frames.dart'; +import 'package:asciineverdie/src/core/animation/background_data.dart'; +import 'package:asciineverdie/src/core/animation/background_layer.dart'; +import 'package:asciineverdie/src/core/animation/canvas/ascii_cell.dart'; +import 'package:asciineverdie/src/core/animation/canvas/ascii_layer.dart'; +import 'package:asciineverdie/src/core/animation/race_character_frames.dart'; /// Canvas용 걷기 애니메이션 합성기 /// diff --git a/lib/src/core/animation/race_character_frames.dart b/lib/src/core/animation/race_character_frames.dart index 6fa2d18..3280b2d 100644 --- a/lib/src/core/animation/race_character_frames.dart +++ b/lib/src/core/animation/race_character_frames.dart @@ -1,7 +1,7 @@ // 종족별 ASCII 캐릭터 프레임 데이터 // 모든 캐릭터는 3줄 × 6자 폭으로 통일 (보스 10줄과 대비) -import 'package:askiineverdie/src/core/animation/character_frames.dart'; +import 'package:asciineverdie/src/core/animation/character_frames.dart'; /// 종족별 캐릭터 프레임 저장소 class RaceCharacterFrames { diff --git a/lib/src/core/animation/weapon_effects.dart b/lib/src/core/animation/weapon_effects.dart index 3788157..e1a7384 100644 --- a/lib/src/core/animation/weapon_effects.dart +++ b/lib/src/core/animation/weapon_effects.dart @@ -1,4 +1,4 @@ -import 'package:askiineverdie/src/core/animation/weapon_category.dart'; +import 'package:asciineverdie/src/core/animation/weapon_category.dart'; /// 무기 카테고리별 공격 이펙트 ASCII 프레임 /// diff --git a/lib/src/core/audio/audio_service.dart b/lib/src/core/audio/audio_service.dart index 990fde2..f9002b6 100644 --- a/lib/src/core/audio/audio_service.dart +++ b/lib/src/core/audio/audio_service.dart @@ -1,8 +1,8 @@ import 'package:flutter/foundation.dart' show debugPrint, kIsWeb; import 'package:just_audio/just_audio.dart'; -import 'package:askiineverdie/src/core/audio/sfx_channel_pool.dart'; -import 'package:askiineverdie/src/core/storage/settings_repository.dart'; +import 'package:asciineverdie/src/core/audio/sfx_channel_pool.dart'; +import 'package:asciineverdie/src/core/storage/settings_repository.dart'; /// 게임 오디오 서비스 /// diff --git a/lib/src/core/constants/ascii_colors.dart b/lib/src/core/constants/ascii_colors.dart index 56080cc..9864507 100644 --- a/lib/src/core/constants/ascii_colors.dart +++ b/lib/src/core/constants/ascii_colors.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:askiineverdie/src/shared/retro_colors.dart'; +import 'package:asciineverdie/src/shared/retro_colors.dart'; /// ASCII 애니메이션 4색 팔레트 (Phase 7) /// diff --git a/lib/src/core/engine/combat_calculator.dart b/lib/src/core/engine/combat_calculator.dart index 2ccfa3d..97b7bc4 100644 --- a/lib/src/core/engine/combat_calculator.dart +++ b/lib/src/core/engine/combat_calculator.dart @@ -1,9 +1,9 @@ import 'dart:math' as math; -import 'package:askiineverdie/src/core/model/combat_result.dart'; -import 'package:askiineverdie/src/core/model/combat_stats.dart'; -import 'package:askiineverdie/src/core/model/monster_combat_stats.dart'; -import 'package:askiineverdie/src/core/util/deterministic_random.dart'; +import 'package:asciineverdie/src/core/model/combat_result.dart'; +import 'package:asciineverdie/src/core/model/combat_stats.dart'; +import 'package:asciineverdie/src/core/model/monster_combat_stats.dart'; +import 'package:asciineverdie/src/core/util/deterministic_random.dart'; /// 전투 계산 서비스 /// diff --git a/lib/src/core/engine/game_mutations.dart b/lib/src/core/engine/game_mutations.dart index 81b8452..b90f7e7 100644 --- a/lib/src/core/engine/game_mutations.dart +++ b/lib/src/core/engine/game_mutations.dart @@ -1,8 +1,8 @@ -import 'package:askiineverdie/src/core/engine/item_service.dart'; -import 'package:askiineverdie/src/core/model/equipment_slot.dart'; -import 'package:askiineverdie/src/core/model/game_state.dart'; -import 'package:askiineverdie/src/core/model/pq_config.dart'; -import 'package:askiineverdie/src/core/util/pq_logic.dart' as pq_logic; +import 'package:asciineverdie/src/core/engine/item_service.dart'; +import 'package:asciineverdie/src/core/model/equipment_slot.dart'; +import 'package:asciineverdie/src/core/model/game_state.dart'; +import 'package:asciineverdie/src/core/model/pq_config.dart'; +import 'package:asciineverdie/src/core/util/pq_logic.dart' as pq_logic; /// Game state mutations that mirror the original PQ win/reward logic. class GameMutations { diff --git a/lib/src/core/engine/item_service.dart b/lib/src/core/engine/item_service.dart index 94ce1fa..bc40d4c 100644 --- a/lib/src/core/engine/item_service.dart +++ b/lib/src/core/engine/item_service.dart @@ -1,7 +1,7 @@ -import 'package:askiineverdie/src/core/model/equipment_item.dart'; -import 'package:askiineverdie/src/core/model/equipment_slot.dart'; -import 'package:askiineverdie/src/core/model/item_stats.dart'; -import 'package:askiineverdie/src/core/util/deterministic_random.dart'; +import 'package:asciineverdie/src/core/model/equipment_item.dart'; +import 'package:asciineverdie/src/core/model/equipment_slot.dart'; +import 'package:asciineverdie/src/core/model/item_stats.dart'; +import 'package:asciineverdie/src/core/util/deterministic_random.dart'; /// 아이템 관리 서비스 /// diff --git a/lib/src/core/engine/potion_service.dart b/lib/src/core/engine/potion_service.dart index 454678b..7b8c6fd 100644 --- a/lib/src/core/engine/potion_service.dart +++ b/lib/src/core/engine/potion_service.dart @@ -1,5 +1,5 @@ -import 'package:askiineverdie/data/potion_data.dart'; -import 'package:askiineverdie/src/core/model/potion.dart'; +import 'package:asciineverdie/data/potion_data.dart'; +import 'package:asciineverdie/src/core/model/potion.dart'; /// 물약 서비스 /// diff --git a/lib/src/core/engine/progress_loop.dart b/lib/src/core/engine/progress_loop.dart index 6246790..4d57b5d 100644 --- a/lib/src/core/engine/progress_loop.dart +++ b/lib/src/core/engine/progress_loop.dart @@ -1,8 +1,8 @@ import 'dart:async'; -import 'package:askiineverdie/src/core/model/game_state.dart'; -import 'package:askiineverdie/src/core/storage/save_manager.dart'; -import 'package:askiineverdie/src/core/engine/progress_service.dart'; +import 'package:asciineverdie/src/core/model/game_state.dart'; +import 'package:asciineverdie/src/core/storage/save_manager.dart'; +import 'package:asciineverdie/src/core/engine/progress_service.dart'; class AutoSaveConfig { const AutoSaveConfig({ @@ -40,11 +40,13 @@ class ProgressLoop { DateTime Function()? now, this.cheatsEnabled = false, this.onPlayerDied, + List availableSpeeds = const [1, 5], }) : _state = initialState, _tickInterval = tickInterval, _autoSaveConfig = autoSaveConfig, _now = now ?? DateTime.now, - _stateController = StreamController.broadcast(); + _stateController = StreamController.broadcast(), + _availableSpeeds = availableSpeeds.isNotEmpty ? availableSpeeds : [1]; final ProgressService progressService; final SaveManager? saveManager; @@ -60,21 +62,35 @@ class ProgressLoop { Timer? _timer; int? _lastTickMs; int _speedMultiplier = 1; + List _availableSpeeds; GameState get current => _state; Stream get stream => _stateController.stream; GameState _state; - /// 현재 배속 (1x, 3x, 10x) + /// 가용 배속 목록 + List get availableSpeeds => List.unmodifiable(_availableSpeeds); + + /// 현재 배속 (1x, 2x, 5x) int get speedMultiplier => _speedMultiplier; - /// 배속 순환: 1 -> 3 -> 10 -> 1 + /// 배속 순환: 가용 배속 목록 순환 + /// 명예의 전당에 캐릭터 없으면: 1 -> 5 -> 1 + /// 명예의 전당에 캐릭터 있으면: 1 -> 2 -> 5 -> 1 void cycleSpeed() { - _speedMultiplier = switch (_speedMultiplier) { - 1 => 3, - 3 => 10, - _ => 1, - }; + final currentIndex = _availableSpeeds.indexOf(_speedMultiplier); + final nextIndex = (currentIndex + 1) % _availableSpeeds.length; + _speedMultiplier = _availableSpeeds[nextIndex]; + } + + /// 가용 배속 목록 업데이트 (명예의 전당 상태 변경 시) + void updateAvailableSpeeds(List speeds) { + if (speeds.isEmpty) return; + _availableSpeeds = speeds; + // 현재 배속이 새 목록에 없으면 첫 번째로 리셋 + if (!_availableSpeeds.contains(_speedMultiplier)) { + _speedMultiplier = _availableSpeeds.first; + } } void start() { diff --git a/lib/src/core/engine/progress_service.dart b/lib/src/core/engine/progress_service.dart index bbdd4fc..ef8a69f 100644 --- a/lib/src/core/engine/progress_service.dart +++ b/lib/src/core/engine/progress_service.dart @@ -1,23 +1,23 @@ import 'dart:math' as math; -import 'package:askiineverdie/data/game_text_l10n.dart' as l10n; -import 'package:askiineverdie/data/skill_data.dart'; -import 'package:askiineverdie/src/core/engine/combat_calculator.dart'; -import 'package:askiineverdie/src/core/engine/game_mutations.dart'; -import 'package:askiineverdie/src/core/engine/potion_service.dart'; -import 'package:askiineverdie/src/core/engine/reward_service.dart'; -import 'package:askiineverdie/src/core/engine/skill_service.dart'; -import 'package:askiineverdie/src/core/model/combat_event.dart'; -import 'package:askiineverdie/src/core/model/combat_state.dart'; -import 'package:askiineverdie/src/core/model/combat_stats.dart'; -import 'package:askiineverdie/src/core/model/equipment_item.dart'; -import 'package:askiineverdie/src/core/model/equipment_slot.dart'; -import 'package:askiineverdie/src/core/model/game_state.dart'; -import 'package:askiineverdie/src/core/model/monster_combat_stats.dart'; -import 'package:askiineverdie/src/core/model/potion.dart'; -import 'package:askiineverdie/src/core/model/pq_config.dart'; -import 'package:askiineverdie/src/core/model/skill.dart'; -import 'package:askiineverdie/src/core/util/pq_logic.dart' as pq_logic; +import 'package:asciineverdie/data/game_text_l10n.dart' as l10n; +import 'package:asciineverdie/data/skill_data.dart'; +import 'package:asciineverdie/src/core/engine/combat_calculator.dart'; +import 'package:asciineverdie/src/core/engine/game_mutations.dart'; +import 'package:asciineverdie/src/core/engine/potion_service.dart'; +import 'package:asciineverdie/src/core/engine/reward_service.dart'; +import 'package:asciineverdie/src/core/engine/skill_service.dart'; +import 'package:asciineverdie/src/core/model/combat_event.dart'; +import 'package:asciineverdie/src/core/model/combat_state.dart'; +import 'package:asciineverdie/src/core/model/combat_stats.dart'; +import 'package:asciineverdie/src/core/model/equipment_item.dart'; +import 'package:asciineverdie/src/core/model/equipment_slot.dart'; +import 'package:asciineverdie/src/core/model/game_state.dart'; +import 'package:asciineverdie/src/core/model/monster_combat_stats.dart'; +import 'package:asciineverdie/src/core/model/potion.dart'; +import 'package:asciineverdie/src/core/model/pq_config.dart'; +import 'package:asciineverdie/src/core/model/skill.dart'; +import 'package:asciineverdie/src/core/util/pq_logic.dart' as pq_logic; class ProgressTickResult { const ProgressTickResult({ @@ -146,9 +146,9 @@ class ProgressService { /// Tick the timer loop (equivalent to Timer1Timer in the original code). ProgressTickResult tick(GameState state, int elapsedMillis) { - // 500ms 제한: 5x 배속 (50ms * 5 = 250ms) + 여유 공간 - // 원본은 100ms 제한이었으나 배속 기능 지원을 위해 확장 - final int clamped = elapsedMillis.clamp(0, 500).toInt(); + // 10000ms 제한: 100x 배속 (50ms * 100 = 5000ms) + 여유 공간 + // 디버그 터보 모드(100x) 지원을 위해 확장 + final int clamped = elapsedMillis.clamp(0, 10000).toInt(); var progress = state.progress; var queue = state.queue; var nextState = state; diff --git a/lib/src/core/engine/resurrection_service.dart b/lib/src/core/engine/resurrection_service.dart index 68e2285..371f7ce 100644 --- a/lib/src/core/engine/resurrection_service.dart +++ b/lib/src/core/engine/resurrection_service.dart @@ -1,14 +1,14 @@ import 'dart:math'; -import 'package:askiineverdie/data/class_data.dart'; -import 'package:askiineverdie/data/game_text_l10n.dart' as l10n; -import 'package:askiineverdie/data/race_data.dart'; -import 'package:askiineverdie/src/core/engine/shop_service.dart'; -import 'package:askiineverdie/src/core/model/class_traits.dart'; -import 'package:askiineverdie/src/core/model/equipment_item.dart'; -import 'package:askiineverdie/src/core/model/equipment_slot.dart'; -import 'package:askiineverdie/src/core/model/game_state.dart'; -import 'package:askiineverdie/src/core/model/race_traits.dart'; +import 'package:asciineverdie/data/class_data.dart'; +import 'package:asciineverdie/data/game_text_l10n.dart' as l10n; +import 'package:asciineverdie/data/race_data.dart'; +import 'package:asciineverdie/src/core/engine/shop_service.dart'; +import 'package:asciineverdie/src/core/model/class_traits.dart'; +import 'package:asciineverdie/src/core/model/equipment_item.dart'; +import 'package:asciineverdie/src/core/model/equipment_slot.dart'; +import 'package:asciineverdie/src/core/model/game_state.dart'; +import 'package:asciineverdie/src/core/model/race_traits.dart'; /// 부활 시스템 서비스 (Phase 4) /// diff --git a/lib/src/core/engine/reward_service.dart b/lib/src/core/engine/reward_service.dart index 04a2d4c..7dfd718 100644 --- a/lib/src/core/engine/reward_service.dart +++ b/lib/src/core/engine/reward_service.dart @@ -1,6 +1,6 @@ -import 'package:askiineverdie/src/core/engine/game_mutations.dart'; -import 'package:askiineverdie/src/core/model/game_state.dart'; -import 'package:askiineverdie/src/core/util/pq_logic.dart'; +import 'package:asciineverdie/src/core/engine/game_mutations.dart'; +import 'package:asciineverdie/src/core/model/game_state.dart'; +import 'package:asciineverdie/src/core/util/pq_logic.dart'; /// Applies quest/act rewards to the GameState using shared RNG. class RewardService { diff --git a/lib/src/core/engine/shop_service.dart b/lib/src/core/engine/shop_service.dart index 5bdadf1..7aa9ed5 100644 --- a/lib/src/core/engine/shop_service.dart +++ b/lib/src/core/engine/shop_service.dart @@ -1,8 +1,8 @@ -import 'package:askiineverdie/src/core/model/equipment_item.dart'; -import 'package:askiineverdie/src/core/model/equipment_slot.dart'; -import 'package:askiineverdie/src/core/model/game_state.dart'; -import 'package:askiineverdie/src/core/model/item_stats.dart'; -import 'package:askiineverdie/src/core/util/deterministic_random.dart'; +import 'package:asciineverdie/src/core/model/equipment_item.dart'; +import 'package:asciineverdie/src/core/model/equipment_slot.dart'; +import 'package:asciineverdie/src/core/model/game_state.dart'; +import 'package:asciineverdie/src/core/model/item_stats.dart'; +import 'package:asciineverdie/src/core/util/deterministic_random.dart'; /// 샵 시스템 서비스 (Phase 4) /// diff --git a/lib/src/core/engine/skill_service.dart b/lib/src/core/engine/skill_service.dart index 4fbb407..0dd16d5 100644 --- a/lib/src/core/engine/skill_service.dart +++ b/lib/src/core/engine/skill_service.dart @@ -1,10 +1,10 @@ -import 'package:askiineverdie/data/skill_data.dart'; -import 'package:askiineverdie/src/core/model/combat_stats.dart'; -import 'package:askiineverdie/src/core/model/game_state.dart'; -import 'package:askiineverdie/src/core/model/monster_combat_stats.dart'; -import 'package:askiineverdie/src/core/model/skill.dart'; -import 'package:askiineverdie/src/core/util/deterministic_random.dart'; -import 'package:askiineverdie/src/core/util/roman.dart'; +import 'package:asciineverdie/data/skill_data.dart'; +import 'package:asciineverdie/src/core/model/combat_stats.dart'; +import 'package:asciineverdie/src/core/model/game_state.dart'; +import 'package:asciineverdie/src/core/model/monster_combat_stats.dart'; +import 'package:asciineverdie/src/core/model/skill.dart'; +import 'package:asciineverdie/src/core/util/deterministic_random.dart'; +import 'package:asciineverdie/src/core/util/roman.dart'; /// 스킬 시스템 서비스 /// diff --git a/lib/src/core/engine/stat_calculator.dart b/lib/src/core/engine/stat_calculator.dart index 401cd8b..53cb0b9 100644 --- a/lib/src/core/engine/stat_calculator.dart +++ b/lib/src/core/engine/stat_calculator.dart @@ -1,7 +1,7 @@ -import 'package:askiineverdie/src/core/model/class_traits.dart'; -import 'package:askiineverdie/src/core/model/combat_stats.dart'; -import 'package:askiineverdie/src/core/model/game_state.dart'; -import 'package:askiineverdie/src/core/model/race_traits.dart'; +import 'package:asciineverdie/src/core/model/class_traits.dart'; +import 'package:asciineverdie/src/core/model/combat_stats.dart'; +import 'package:asciineverdie/src/core/model/game_state.dart'; +import 'package:asciineverdie/src/core/model/race_traits.dart'; /// 스탯 계산기 (stat calculator) /// diff --git a/lib/src/core/engine/story_service.dart b/lib/src/core/engine/story_service.dart index cd5feca..51d4f60 100644 --- a/lib/src/core/engine/story_service.dart +++ b/lib/src/core/engine/story_service.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import 'package:askiineverdie/data/story_data.dart'; +import 'package:asciineverdie/data/story_data.dart'; /// 스토리 이벤트 타입 (Story Event Type) enum StoryEventType { diff --git a/lib/src/core/l10n/game_data_l10n.dart b/lib/src/core/l10n/game_data_l10n.dart index 7d8ba6f..8dfdd94 100644 --- a/lib/src/core/l10n/game_data_l10n.dart +++ b/lib/src/core/l10n/game_data_l10n.dart @@ -1,6 +1,6 @@ -import 'package:askiineverdie/data/game_text_l10n.dart' as l10n; -import 'package:askiineverdie/data/game_translations_ko.dart'; -import 'package:askiineverdie/src/core/util/pq_logic.dart'; +import 'package:asciineverdie/data/game_text_l10n.dart' as l10n; +import 'package:asciineverdie/data/game_translations_ko.dart'; +import 'package:asciineverdie/src/core/util/pq_logic.dart'; import 'package:flutter/widgets.dart'; /// 게임 데이터 번역을 위한 헬퍼 클래스 diff --git a/lib/src/core/model/class_traits.dart b/lib/src/core/model/class_traits.dart index d051cd5..8eb53db 100644 --- a/lib/src/core/model/class_traits.dart +++ b/lib/src/core/model/class_traits.dart @@ -1,5 +1,5 @@ -import 'package:askiineverdie/src/core/model/equipment_slot.dart'; -import 'package:askiineverdie/src/core/model/race_traits.dart'; +import 'package:asciineverdie/src/core/model/equipment_slot.dart'; +import 'package:asciineverdie/src/core/model/race_traits.dart'; /// 방어구 무게 등급 (armor weight class) enum ArmorWeight { diff --git a/lib/src/core/model/combat_result.dart b/lib/src/core/model/combat_result.dart index 886e664..667ee84 100644 --- a/lib/src/core/model/combat_result.dart +++ b/lib/src/core/model/combat_result.dart @@ -1,5 +1,5 @@ -import 'package:askiineverdie/src/core/model/combat_stats.dart'; -import 'package:askiineverdie/src/core/model/monster_combat_stats.dart'; +import 'package:asciineverdie/src/core/model/combat_stats.dart'; +import 'package:asciineverdie/src/core/model/monster_combat_stats.dart'; /// 단일 공격 결과 class AttackResult { diff --git a/lib/src/core/model/combat_state.dart b/lib/src/core/model/combat_state.dart index 3dc0c0c..60f7395 100644 --- a/lib/src/core/model/combat_state.dart +++ b/lib/src/core/model/combat_state.dart @@ -1,8 +1,8 @@ -import 'package:askiineverdie/src/core/model/combat_event.dart'; -import 'package:askiineverdie/src/core/model/combat_stats.dart'; -import 'package:askiineverdie/src/core/model/monster_combat_stats.dart'; -import 'package:askiineverdie/src/core/model/potion.dart'; -import 'package:askiineverdie/src/core/model/skill.dart'; +import 'package:asciineverdie/src/core/model/combat_event.dart'; +import 'package:asciineverdie/src/core/model/combat_stats.dart'; +import 'package:asciineverdie/src/core/model/monster_combat_stats.dart'; +import 'package:asciineverdie/src/core/model/potion.dart'; +import 'package:asciineverdie/src/core/model/skill.dart'; /// 현재 전투 상태 /// diff --git a/lib/src/core/model/combat_stats.dart b/lib/src/core/model/combat_stats.dart index 912757f..0f4ce4e 100644 --- a/lib/src/core/model/combat_stats.dart +++ b/lib/src/core/model/combat_stats.dart @@ -1,6 +1,6 @@ -import 'package:askiineverdie/src/core/model/class_traits.dart'; -import 'package:askiineverdie/src/core/model/game_state.dart'; -import 'package:askiineverdie/src/core/model/race_traits.dart'; +import 'package:asciineverdie/src/core/model/class_traits.dart'; +import 'package:asciineverdie/src/core/model/game_state.dart'; +import 'package:asciineverdie/src/core/model/race_traits.dart'; /// 전투용 파생 스탯 /// diff --git a/lib/src/core/model/equipment_item.dart b/lib/src/core/model/equipment_item.dart index 7483160..303fa8c 100644 --- a/lib/src/core/model/equipment_item.dart +++ b/lib/src/core/model/equipment_item.dart @@ -1,5 +1,5 @@ -import 'package:askiineverdie/src/core/model/equipment_slot.dart'; -import 'package:askiineverdie/src/core/model/item_stats.dart'; +import 'package:asciineverdie/src/core/model/equipment_slot.dart'; +import 'package:asciineverdie/src/core/model/item_stats.dart'; /// 장비 아이템 /// diff --git a/lib/src/core/model/game_state.dart b/lib/src/core/model/game_state.dart index 67be022..09ee8ff 100644 --- a/lib/src/core/model/game_state.dart +++ b/lib/src/core/model/game_state.dart @@ -1,13 +1,13 @@ import 'dart:collection'; -import 'package:askiineverdie/src/core/model/combat_event.dart'; -import 'package:askiineverdie/src/core/model/combat_state.dart'; -import 'package:askiineverdie/src/core/model/equipment_item.dart'; -import 'package:askiineverdie/src/core/model/equipment_slot.dart'; -import 'package:askiineverdie/src/core/model/item_stats.dart'; -import 'package:askiineverdie/src/core/model/potion.dart'; -import 'package:askiineverdie/src/core/model/skill.dart'; -import 'package:askiineverdie/src/core/util/deterministic_random.dart'; +import 'package:asciineverdie/src/core/model/combat_event.dart'; +import 'package:asciineverdie/src/core/model/combat_state.dart'; +import 'package:asciineverdie/src/core/model/equipment_item.dart'; +import 'package:asciineverdie/src/core/model/equipment_slot.dart'; +import 'package:asciineverdie/src/core/model/item_stats.dart'; +import 'package:asciineverdie/src/core/model/potion.dart'; +import 'package:asciineverdie/src/core/model/skill.dart'; +import 'package:asciineverdie/src/core/util/deterministic_random.dart'; /// Minimal skeletal state to mirror Progress Quest structures. /// diff --git a/lib/src/core/model/hall_of_fame.dart b/lib/src/core/model/hall_of_fame.dart index 15d95b0..28855b6 100644 --- a/lib/src/core/model/hall_of_fame.dart +++ b/lib/src/core/model/hall_of_fame.dart @@ -1,6 +1,6 @@ -import 'package:askiineverdie/src/core/model/combat_stats.dart'; -import 'package:askiineverdie/src/core/model/equipment_item.dart'; -import 'package:askiineverdie/src/core/model/game_state.dart'; +import 'package:asciineverdie/src/core/model/combat_stats.dart'; +import 'package:asciineverdie/src/core/model/equipment_item.dart'; +import 'package:asciineverdie/src/core/model/game_state.dart'; /// 명예의 전당 엔트리 (Phase 10: Hall of Fame Entry) /// diff --git a/lib/src/core/model/monster_combat_stats.dart b/lib/src/core/model/monster_combat_stats.dart index 7efa0b9..4dc606d 100644 --- a/lib/src/core/model/monster_combat_stats.dart +++ b/lib/src/core/model/monster_combat_stats.dart @@ -1,4 +1,4 @@ -import 'package:askiineverdie/src/core/util/balance_constants.dart'; +import 'package:asciineverdie/src/core/util/balance_constants.dart'; /// 몬스터 공격 속도 타입 enum MonsterSpeedType { diff --git a/lib/src/core/model/pq_config.dart b/lib/src/core/model/pq_config.dart index 3f4f94b..246ea54 100644 --- a/lib/src/core/model/pq_config.dart +++ b/lib/src/core/model/pq_config.dart @@ -1,4 +1,4 @@ -import 'package:askiineverdie/data/pq_config_data.dart'; +import 'package:asciineverdie/data/pq_config_data.dart'; /// Typed accessors for Progress Quest static data extracted from Config.dfm. class PqConfig { diff --git a/lib/src/core/model/save_data.dart b/lib/src/core/model/save_data.dart index cd6730e..11961ba 100644 --- a/lib/src/core/model/save_data.dart +++ b/lib/src/core/model/save_data.dart @@ -1,7 +1,7 @@ import 'dart:collection'; -import 'package:askiineverdie/src/core/util/deterministic_random.dart'; -import 'package:askiineverdie/src/core/model/game_state.dart'; +import 'package:asciineverdie/src/core/util/deterministic_random.dart'; +import 'package:asciineverdie/src/core/model/game_state.dart'; const int kSaveVersion = 2; diff --git a/lib/src/core/storage/hall_of_fame_storage.dart b/lib/src/core/storage/hall_of_fame_storage.dart index 5094f67..af266cc 100644 --- a/lib/src/core/storage/hall_of_fame_storage.dart +++ b/lib/src/core/storage/hall_of_fame_storage.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'dart:io'; -import 'package:askiineverdie/src/core/model/hall_of_fame.dart'; +import 'package:asciineverdie/src/core/model/hall_of_fame.dart'; import 'package:path_provider/path_provider.dart'; /// 명예의 전당 저장소 (Phase 10: Hall of Fame Storage) diff --git a/lib/src/core/storage/save_manager.dart b/lib/src/core/storage/save_manager.dart index b74928f..8bea9c3 100644 --- a/lib/src/core/storage/save_manager.dart +++ b/lib/src/core/storage/save_manager.dart @@ -1,7 +1,7 @@ -import 'package:askiineverdie/src/core/model/game_state.dart'; -import 'package:askiineverdie/src/core/model/save_data.dart'; -import 'package:askiineverdie/src/core/storage/save_repository.dart'; -import 'package:askiineverdie/src/core/storage/save_service.dart' +import 'package:asciineverdie/src/core/model/game_state.dart'; +import 'package:asciineverdie/src/core/model/save_data.dart'; +import 'package:asciineverdie/src/core/storage/save_repository.dart'; +import 'package:asciineverdie/src/core/storage/save_service.dart' show SaveFileInfo; /// Coordinates saving/loading GameState using SaveRepository. diff --git a/lib/src/core/storage/save_repository.dart b/lib/src/core/storage/save_repository.dart index 6a3b139..77407d8 100644 --- a/lib/src/core/storage/save_repository.dart +++ b/lib/src/core/storage/save_repository.dart @@ -1,7 +1,7 @@ import 'dart:io'; -import 'package:askiineverdie/src/core/model/save_data.dart'; -import 'package:askiineverdie/src/core/storage/save_service.dart'; +import 'package:asciineverdie/src/core/model/save_data.dart'; +import 'package:asciineverdie/src/core/storage/save_service.dart'; import 'package:path_provider/path_provider.dart'; class SaveOutcome { diff --git a/lib/src/core/storage/save_service.dart b/lib/src/core/storage/save_service.dart index 014f2c1..4e6f23e 100644 --- a/lib/src/core/storage/save_service.dart +++ b/lib/src/core/storage/save_service.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'dart:io'; -import 'package:askiineverdie/src/core/model/save_data.dart'; +import 'package:asciineverdie/src/core/model/save_data.dart'; /// Persists GameSave as JSON compressed with GZipCodec. class SaveService { diff --git a/lib/src/core/storage/statistics_storage.dart b/lib/src/core/storage/statistics_storage.dart index 8cc2669..5944ab9 100644 --- a/lib/src/core/storage/statistics_storage.dart +++ b/lib/src/core/storage/statistics_storage.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'dart:io'; -import 'package:askiineverdie/src/core/model/game_statistics.dart'; +import 'package:asciineverdie/src/core/model/game_statistics.dart'; import 'package:path_provider/path_provider.dart'; /// 게임 통계 저장소 (Statistics Storage) diff --git a/lib/src/core/util/pq_logic.dart b/lib/src/core/util/pq_logic.dart index 1269895..821bd2d 100644 --- a/lib/src/core/util/pq_logic.dart +++ b/lib/src/core/util/pq_logic.dart @@ -1,12 +1,12 @@ import 'dart:collection'; import 'dart:math' as math; -import 'package:askiineverdie/data/game_text_l10n.dart' as l10n; -import 'package:askiineverdie/src/core/model/equipment_slot.dart'; -import 'package:askiineverdie/src/core/model/game_state.dart'; -import 'package:askiineverdie/src/core/model/pq_config.dart'; -import 'package:askiineverdie/src/core/util/deterministic_random.dart'; -import 'package:askiineverdie/src/core/util/roman.dart'; +import 'package:asciineverdie/data/game_text_l10n.dart' as l10n; +import 'package:asciineverdie/src/core/model/equipment_slot.dart'; +import 'package:asciineverdie/src/core/model/game_state.dart'; +import 'package:asciineverdie/src/core/model/pq_config.dart'; +import 'package:asciineverdie/src/core/util/deterministic_random.dart'; +import 'package:asciineverdie/src/core/util/roman.dart'; // Mirrors core utility functions from the original Delphi sources (Main.pas / NewGuy.pas).