Feat: Add SettingsProvider and Toggle for Enemy Animations

This commit is contained in:
2025-12-07 19:20:43 +09:00
parent 78267b7e47
commit e6facc41f8
6 changed files with 83 additions and 4 deletions
+10
View File
@@ -22,6 +22,7 @@ import 'main_menu_screen.dart';
import '../game/config/battle_config.dart';
import '../game/config/theme_config.dart';
import '../game/config/app_strings.dart';
import '../providers/settings_provider.dart'; // Import SettingsProvider
class BattleScreen extends StatefulWidget {
const BattleScreen({super.key});
@@ -293,6 +294,15 @@ class _BattleScreenState extends State<BattleScreen> {
} else if (event.type == ActionType.attack &&
event.target == EffectTarget.player &&
event.feedbackType == null) {
// Check Settings
bool enableAnim = context.read<SettingsProvider>().enableEnemyAnimations;
if (!enableAnim) {
showEffect(); // Just show effect if anim disabled
return;
}
// 2. Enemy Attack Animation Trigger
final RenderBox? playerBox =
_playerKey.currentContext?.findRenderObject() as RenderBox?;
+21 -4
View File
@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../providers/battle_provider.dart';
import '../providers/settings_provider.dart'; // Import SettingsProvider
import 'main_menu_screen.dart';
import '../game/config/theme_config.dart';
import '../game/config/app_strings.dart';
@@ -23,11 +24,27 @@ class SettingsScreen extends StatelessWidget {
),
),
const SizedBox(height: 40),
// Placeholder for future settings
const Text(
'Effect Intensity: Normal',
style: TextStyle(color: ThemeConfig.textColorWhite),
// Enemy Animation Toggle
Consumer<SettingsProvider>(
builder: (context, settings, child) {
return SizedBox(
width: 300,
child: SwitchListTile(
title: const Text(
AppStrings.enemyAnimations,
style: TextStyle(color: ThemeConfig.textColorWhite),
),
value: settings.enableEnemyAnimations,
onChanged: (value) {
settings.toggleEnemyAnimations(value);
},
activeColor: ThemeConfig.btnActionActive,
),
);
},
),
const SizedBox(height: 20),
const Text(
'Volume: 100%',