refactor(shared): animation, l10n, theme 모듈을 core에서 shared로 이동
- core/animation → shared/animation - core/l10n → shared/l10n - core/constants/ascii_colors → shared/theme/ascii_colors - import 경로 업데이트
This commit is contained in:
92
lib/src/shared/animation/background_layer.dart
Normal file
92
lib/src/shared/animation/background_layer.dart
Normal file
@@ -0,0 +1,92 @@
|
||||
// 배경 레이어 시스템 (ASCII Patrol 스타일 패럴렉스)
|
||||
// 각 환경은 여러 레이어로 구성되며, 레이어마다 다른 스크롤 속도를 가짐
|
||||
|
||||
/// 배경 레이어 데이터
|
||||
class BackgroundLayer {
|
||||
const BackgroundLayer({
|
||||
required this.lines,
|
||||
required this.scrollSpeed,
|
||||
this.yStart = 0,
|
||||
});
|
||||
|
||||
/// 레이어 패턴 (각 줄은 반복 가능한 패턴)
|
||||
final List<String> lines;
|
||||
|
||||
/// 스크롤 속도 (0.0 = 정지, 1.0 = 최고속)
|
||||
/// 원경일수록 느리게, 전경일수록 빠르게
|
||||
final double scrollSpeed;
|
||||
|
||||
/// 시작 Y 위치 (0~7)
|
||||
final int yStart;
|
||||
}
|
||||
|
||||
/// 환경 타입
|
||||
enum EnvironmentType {
|
||||
/// 마을 - 건물 실루엣
|
||||
town,
|
||||
|
||||
/// 숲 - 나무
|
||||
forest,
|
||||
|
||||
/// 동굴 - 바위
|
||||
cave,
|
||||
|
||||
/// 던전 - 벽돌
|
||||
dungeon,
|
||||
|
||||
/// 기술 - 회로
|
||||
tech,
|
||||
|
||||
/// 보이드 - 별/공허 (보스)
|
||||
void_,
|
||||
}
|
||||
|
||||
/// TaskType과 몬스터 이름에서 환경 타입 추론
|
||||
EnvironmentType inferEnvironment(String? taskType, String? monsterName) {
|
||||
// 마을 관련 태스크
|
||||
if (taskType == 'heading' || taskType == 'buyEquip') {
|
||||
return EnvironmentType.town;
|
||||
}
|
||||
|
||||
// 몬스터 이름에서 환경 추론
|
||||
if (monsterName != null) {
|
||||
final lower = monsterName.toLowerCase();
|
||||
|
||||
// 보이드/우주
|
||||
if (lower.contains('void') ||
|
||||
lower.contains('cosmic') ||
|
||||
lower.contains('star') ||
|
||||
lower.contains('galaxy')) {
|
||||
return EnvironmentType.void_;
|
||||
}
|
||||
|
||||
// 기술/사이버
|
||||
if (lower.contains('cyber') ||
|
||||
lower.contains('robot') ||
|
||||
lower.contains('ai') ||
|
||||
lower.contains('data') ||
|
||||
lower.contains('server')) {
|
||||
return EnvironmentType.tech;
|
||||
}
|
||||
|
||||
// 언데드/던전
|
||||
if (lower.contains('zombie') ||
|
||||
lower.contains('skeleton') ||
|
||||
lower.contains('ghost') ||
|
||||
lower.contains('undead') ||
|
||||
lower.contains('dungeon')) {
|
||||
return EnvironmentType.dungeon;
|
||||
}
|
||||
|
||||
// 동굴
|
||||
if (lower.contains('cave') ||
|
||||
lower.contains('bat') ||
|
||||
lower.contains('spider') ||
|
||||
lower.contains('worm')) {
|
||||
return EnvironmentType.cave;
|
||||
}
|
||||
}
|
||||
|
||||
// 기본: 숲
|
||||
return EnvironmentType.forest;
|
||||
}
|
||||
Reference in New Issue
Block a user