update
- refactoring conifg
This commit is contained in:
@@ -19,6 +19,7 @@ import '../widgets/battle/battle_animation_widget.dart';
|
||||
import '../widgets/battle/explosion_widget.dart';
|
||||
import 'main_menu_screen.dart';
|
||||
import '../game/config/battle_config.dart';
|
||||
import '../game/config/theme_config.dart';
|
||||
|
||||
class BattleScreen extends StatefulWidget {
|
||||
const BattleScreen({super.key});
|
||||
@@ -162,15 +163,15 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
switch (event.feedbackType) {
|
||||
case BattleFeedbackType.miss:
|
||||
feedbackText = "MISS";
|
||||
feedbackColor = Colors.grey;
|
||||
feedbackColor = ThemeConfig.missText;
|
||||
break;
|
||||
case BattleFeedbackType.failed:
|
||||
feedbackText = "FAILED";
|
||||
feedbackColor = Colors.redAccent;
|
||||
feedbackColor = ThemeConfig.failedText;
|
||||
break;
|
||||
default:
|
||||
feedbackText = ""; // Should not happen with current enums
|
||||
feedbackColor = Colors.white;
|
||||
feedbackColor = ThemeConfig.textColorWhite;
|
||||
}
|
||||
|
||||
final String id = UniqueKey().toString();
|
||||
@@ -311,15 +312,15 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
switch (risk) {
|
||||
case RiskLevel.safe:
|
||||
efficiency = 0.5;
|
||||
infoColor = Colors.green;
|
||||
infoColor = ThemeConfig.riskSafe;
|
||||
break;
|
||||
case RiskLevel.normal:
|
||||
efficiency = 1.0;
|
||||
infoColor = Colors.blue;
|
||||
infoColor = ThemeConfig.riskNormal;
|
||||
break;
|
||||
case RiskLevel.risky:
|
||||
efficiency = 2.0;
|
||||
infoColor = Colors.red;
|
||||
infoColor = ThemeConfig.riskRisky;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -391,7 +392,7 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
key: _stackKey,
|
||||
children: [
|
||||
// 1. Background (Black)
|
||||
Container(color: Colors.black87),
|
||||
Container(color: ThemeConfig.battleBg),
|
||||
|
||||
// 2. Battle Content (Top Bar + Characters)
|
||||
Column(
|
||||
@@ -408,9 +409,9 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
child: Text(
|
||||
"Stage ${battleProvider.stage}",
|
||||
style: const TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: ThemeConfig.textColorWhite,
|
||||
fontSize: ThemeConfig.fontSizeHeader,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -421,8 +422,8 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
child: Text(
|
||||
"Turn ${battleProvider.turnCount}",
|
||||
style: const TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 18,
|
||||
color: ThemeConfig.textColorWhite,
|
||||
fontSize: ThemeConfig.fontSizeHeader,
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -489,7 +490,7 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
context,
|
||||
"ATK",
|
||||
Icons.whatshot,
|
||||
Colors.redAccent,
|
||||
ThemeConfig.btnActionActive,
|
||||
ActionType.attack,
|
||||
battleProvider.isPlayerTurn &&
|
||||
!battleProvider.player.isDead &&
|
||||
@@ -501,7 +502,7 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
context,
|
||||
"DEF",
|
||||
Icons.shield,
|
||||
Colors.blueAccent,
|
||||
ThemeConfig.btnDefendActive,
|
||||
ActionType.defend,
|
||||
battleProvider.isPlayerTurn &&
|
||||
!battleProvider.player.isDead &&
|
||||
@@ -527,7 +528,7 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
},
|
||||
child: Icon(
|
||||
_showLogs ? Icons.visibility_off : Icons.visibility,
|
||||
color: Colors.white,
|
||||
color: ThemeConfig.textColorWhite,
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -535,7 +536,7 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
// Reward Popup
|
||||
if (battleProvider.showRewardPopup)
|
||||
Container(
|
||||
color: Colors.black54,
|
||||
color: ThemeConfig.cardBgColor,
|
||||
child: Center(
|
||||
child: SimpleDialog(
|
||||
title: Row(
|
||||
@@ -545,14 +546,14 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Icon(Icons.monetization_on, color: Colors.amber, size: 18),
|
||||
Icon(Icons.monetization_on, color: ThemeConfig.statGoldColor, size: 18),
|
||||
const SizedBox(width: 4),
|
||||
Text(
|
||||
"${battleProvider.lastGoldReward} G",
|
||||
style: TextStyle(
|
||||
color: Colors.amber,
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: ThemeConfig.statGoldColor,
|
||||
fontSize: ThemeConfig.fontSizeBody,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -583,7 +584,7 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
? ItemUtils.getRarityColor(
|
||||
item.rarity,
|
||||
)
|
||||
: Colors.grey,
|
||||
: ThemeConfig.rarityCommon,
|
||||
),
|
||||
),
|
||||
child: Icon(
|
||||
@@ -596,10 +597,10 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
Text(
|
||||
item.name,
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 16,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
fontSize: ThemeConfig.fontSizeLarge,
|
||||
color: isSkip
|
||||
? Colors.grey
|
||||
? ThemeConfig.textColorGrey
|
||||
: ItemUtils.getRarityColor(
|
||||
item.rarity),
|
||||
),
|
||||
@@ -610,8 +611,8 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
Text(
|
||||
item.description,
|
||||
style: const TextStyle(
|
||||
fontSize: 12,
|
||||
color: Colors.grey,
|
||||
fontSize: ThemeConfig.fontSizeMedium,
|
||||
color: ThemeConfig.textColorGrey,
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -633,7 +634,7 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
// Game Over Overlay
|
||||
if (battleProvider.player.isDead)
|
||||
Container(
|
||||
color: Colors.black87,
|
||||
color: ThemeConfig.battleBg,
|
||||
child: Center(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
@@ -641,9 +642,9 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
const Text(
|
||||
"DEFEAT",
|
||||
style: TextStyle(
|
||||
color: Colors.red,
|
||||
fontSize: 48,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: ThemeConfig.statHpColor,
|
||||
fontSize: ThemeConfig.fontSizeHuge,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
letterSpacing: 4.0,
|
||||
),
|
||||
),
|
||||
@@ -667,8 +668,8 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
child: const Text(
|
||||
"Return to Main Menu",
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 18,
|
||||
color: ThemeConfig.textColorWhite,
|
||||
fontSize: ThemeConfig.fontSizeHeader,
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -703,7 +704,7 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
padding: const EdgeInsets.only(top: 4.0, bottom: 4.0),
|
||||
child: Text(
|
||||
stats.join(", "),
|
||||
style: const TextStyle(fontSize: 12, color: Colors.blueAccent),
|
||||
style: const TextStyle(fontSize: ThemeConfig.fontSizeMedium, color: ThemeConfig.statAtkColor),
|
||||
),
|
||||
),
|
||||
if (effectTexts.isNotEmpty)
|
||||
@@ -711,7 +712,7 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
padding: const EdgeInsets.only(bottom: 4.0),
|
||||
child: Text(
|
||||
effectTexts.join(", "),
|
||||
style: const TextStyle(fontSize: 11, color: Colors.orangeAccent),
|
||||
style: const TextStyle(fontSize: 11, color: ThemeConfig.rarityLegendary), // 11 is custom, keep or change? Let's use Small
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -731,7 +732,7 @@ class _BattleScreenState extends State<BattleScreen> {
|
||||
onPressed: isEnabled
|
||||
? () => _showRiskLevelSelection(context, actionType)
|
||||
: null,
|
||||
backgroundColor: isEnabled ? color : Colors.grey,
|
||||
backgroundColor: isEnabled ? color : ThemeConfig.btnDisabled,
|
||||
child: Icon(icon),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import '../providers/battle_provider.dart';
|
||||
import '../game/data/player_table.dart';
|
||||
import 'main_wrapper.dart';
|
||||
import '../widgets/responsive_container.dart';
|
||||
import '../game/config/theme_config.dart';
|
||||
|
||||
class CharacterSelectionScreen extends StatelessWidget {
|
||||
const CharacterSelectionScreen({super.key});
|
||||
@@ -20,7 +21,7 @@ class CharacterSelectionScreen extends StatelessWidget {
|
||||
}
|
||||
|
||||
return Scaffold(
|
||||
backgroundColor: Colors.black, // Outer background
|
||||
backgroundColor: ThemeConfig.mainMenuBgTop, // Outer background
|
||||
body: Center(
|
||||
child: ResponsiveContainer(
|
||||
child: Scaffold(
|
||||
@@ -47,7 +48,7 @@ class CharacterSelectionScreen extends StatelessWidget {
|
||||
);
|
||||
},
|
||||
child: Card(
|
||||
color: Colors.blueGrey[800],
|
||||
color: ThemeConfig.selectionCardBg,
|
||||
elevation: 8,
|
||||
child: Container(
|
||||
width: 300,
|
||||
@@ -58,22 +59,22 @@ class CharacterSelectionScreen extends StatelessWidget {
|
||||
const Icon(
|
||||
Icons.shield,
|
||||
size: 80,
|
||||
color: Colors.blue,
|
||||
color: ThemeConfig.selectionIconColor,
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
Text(
|
||||
warrior.name,
|
||||
style: const TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white,
|
||||
fontSize: ThemeConfig.fontSizeTitle,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
color: ThemeConfig.textColorWhite,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
Text(
|
||||
warrior.description,
|
||||
textAlign: TextAlign.center,
|
||||
style: const TextStyle(color: Colors.grey),
|
||||
style: const TextStyle(color: ThemeConfig.textColorGrey),
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
const Divider(),
|
||||
@@ -84,19 +85,19 @@ class CharacterSelectionScreen extends StatelessWidget {
|
||||
Text(
|
||||
"HP: ${warrior.baseHp}",
|
||||
style: const TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
),
|
||||
),
|
||||
Text(
|
||||
"ATK: ${warrior.baseAtk}",
|
||||
style: const TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
),
|
||||
),
|
||||
Text(
|
||||
"DEF: ${warrior.baseDefense}",
|
||||
style: const TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
@@ -4,6 +4,7 @@ import '../providers/battle_provider.dart';
|
||||
import '../game/model/item.dart';
|
||||
import '../game/enums.dart';
|
||||
import '../utils/item_utils.dart';
|
||||
import '../game/config/theme_config.dart';
|
||||
|
||||
class InventoryScreen extends StatelessWidget {
|
||||
const InventoryScreen({super.key});
|
||||
@@ -45,12 +46,12 @@ class InventoryScreen extends StatelessWidget {
|
||||
_buildStatItem(
|
||||
"Gold",
|
||||
"${player.gold} G",
|
||||
color: Colors.amber,
|
||||
color: ThemeConfig.statGoldColor,
|
||||
),
|
||||
_buildStatItem(
|
||||
"Luck",
|
||||
"${player.totalLuck}",
|
||||
color: Colors.green,
|
||||
color: ThemeConfig.statLuckColor,
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -71,8 +72,8 @@ class InventoryScreen extends StatelessWidget {
|
||||
const Text(
|
||||
"Equipped Items",
|
||||
style: TextStyle(
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: ThemeConfig.fontSizeHeader,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
@@ -91,8 +92,8 @@ class InventoryScreen extends StatelessWidget {
|
||||
: null,
|
||||
child: Card(
|
||||
color: item != null
|
||||
? Colors.blueGrey[600]
|
||||
: Colors.grey[800],
|
||||
? ThemeConfig.equipmentCardBg
|
||||
: ThemeConfig.emptySlotBg,
|
||||
shape: item != null &&
|
||||
item.rarity != ItemRarity.magic
|
||||
? RoundedRectangleBorder(
|
||||
@@ -113,8 +114,8 @@ class InventoryScreen extends StatelessWidget {
|
||||
child: Text(
|
||||
slot.name.toUpperCase(),
|
||||
style: const TextStyle(
|
||||
fontSize: 8,
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: ThemeConfig.fontSizeTiny,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
color: Colors.white30,
|
||||
),
|
||||
),
|
||||
@@ -130,7 +131,7 @@ class InventoryScreen extends StatelessWidget {
|
||||
size: 40,
|
||||
color: item != null
|
||||
? ItemUtils.getColor(slot)
|
||||
: Colors.grey,
|
||||
: ThemeConfig.textColorGrey,
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -151,13 +152,13 @@ class InventoryScreen extends StatelessWidget {
|
||||
item?.name ?? "Empty",
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 11,
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: ThemeConfig.fontSizeSmall,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
color: item != null
|
||||
? ItemUtils.getRarityColor(
|
||||
item.rarity,
|
||||
)
|
||||
: Colors.grey,
|
||||
: ThemeConfig.textColorGrey,
|
||||
),
|
||||
maxLines: 2,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
@@ -194,8 +195,8 @@ class InventoryScreen extends StatelessWidget {
|
||||
child: Text(
|
||||
"Bag (${player.inventory.length}/${player.maxInventorySize})",
|
||||
style: const TextStyle(
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: ThemeConfig.fontSizeHeader,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -218,7 +219,7 @@ class InventoryScreen extends StatelessWidget {
|
||||
_showItemActionDialog(context, battleProvider, item);
|
||||
},
|
||||
child: Card(
|
||||
color: Colors.blueGrey[700],
|
||||
color: ThemeConfig.inventoryCardBg,
|
||||
shape: item.rarity != ItemRarity.magic
|
||||
? RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
@@ -258,8 +259,8 @@ class InventoryScreen extends StatelessWidget {
|
||||
item.name,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 11,
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: ThemeConfig.fontSizeSmall,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
color: ItemUtils.getRarityColor(
|
||||
item.rarity,
|
||||
),
|
||||
@@ -284,11 +285,11 @@ class InventoryScreen extends StatelessWidget {
|
||||
// Empty slot
|
||||
return Container(
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(color: Colors.grey),
|
||||
color: Colors.grey[800],
|
||||
border: Border.all(color: ThemeConfig.textColorGrey),
|
||||
color: ThemeConfig.emptySlotBg,
|
||||
),
|
||||
child: const Center(
|
||||
child: Icon(Icons.add_box, color: Colors.grey),
|
||||
child: Icon(Icons.add_box, color: ThemeConfig.textColorGrey),
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -305,11 +306,11 @@ class InventoryScreen extends StatelessWidget {
|
||||
Widget _buildStatItem(String label, String value, {Color? color}) {
|
||||
return Column(
|
||||
children: [
|
||||
Text(label, style: const TextStyle(color: Colors.grey, fontSize: 12)),
|
||||
Text(label, style: const TextStyle(color: ThemeConfig.textColorGrey, fontSize: 12)),
|
||||
Text(
|
||||
value,
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
fontSize: 16,
|
||||
color: color,
|
||||
),
|
||||
@@ -340,7 +341,7 @@ class InventoryScreen extends StatelessWidget {
|
||||
padding: EdgeInsets.symmetric(vertical: 8.0),
|
||||
child: Row(
|
||||
children: [
|
||||
Icon(Icons.shield, color: Colors.blue),
|
||||
Icon(Icons.shield, color: ThemeConfig.btnDefendActive),
|
||||
SizedBox(width: 10),
|
||||
Text("Equip"),
|
||||
],
|
||||
@@ -357,7 +358,7 @@ class InventoryScreen extends StatelessWidget {
|
||||
padding: const EdgeInsets.symmetric(vertical: 8.0),
|
||||
child: Row(
|
||||
children: [
|
||||
const Icon(Icons.attach_money, color: Colors.amber),
|
||||
const Icon(Icons.attach_money, color: ThemeConfig.statGoldColor),
|
||||
const SizedBox(width: 10),
|
||||
Text("Sell (${item.price} G)"),
|
||||
],
|
||||
@@ -373,7 +374,7 @@ class InventoryScreen extends StatelessWidget {
|
||||
padding: EdgeInsets.symmetric(vertical: 8.0),
|
||||
child: Row(
|
||||
children: [
|
||||
Icon(Icons.delete, color: Colors.red),
|
||||
Icon(Icons.delete, color: ThemeConfig.btnActionActive),
|
||||
SizedBox(width: 10),
|
||||
Text("Discard"),
|
||||
],
|
||||
@@ -401,7 +402,7 @@ class InventoryScreen extends StatelessWidget {
|
||||
child: const Text("Cancel"),
|
||||
),
|
||||
ElevatedButton(
|
||||
style: ElevatedButton.styleFrom(backgroundColor: Colors.amber),
|
||||
style: ElevatedButton.styleFrom(backgroundColor: ThemeConfig.statGoldColor),
|
||||
onPressed: () {
|
||||
provider.sellItem(item);
|
||||
Navigator.pop(ctx);
|
||||
@@ -429,7 +430,7 @@ class InventoryScreen extends StatelessWidget {
|
||||
child: const Text("Cancel"),
|
||||
),
|
||||
ElevatedButton(
|
||||
style: ElevatedButton.styleFrom(backgroundColor: Colors.red),
|
||||
style: ElevatedButton.styleFrom(backgroundColor: ThemeConfig.btnActionActive),
|
||||
onPressed: () {
|
||||
provider.discardItem(item);
|
||||
Navigator.pop(ctx);
|
||||
@@ -475,12 +476,12 @@ class InventoryScreen extends StatelessWidget {
|
||||
children: [
|
||||
Text(
|
||||
"Equip ${newItem.name}?",
|
||||
style: const TextStyle(fontWeight: FontWeight.bold),
|
||||
style: const TextStyle(fontWeight: ThemeConfig.fontWeightBold),
|
||||
),
|
||||
if (oldItem != null)
|
||||
Text(
|
||||
"Replaces ${oldItem.name}",
|
||||
style: const TextStyle(fontSize: 12, color: Colors.grey),
|
||||
style: const TextStyle(fontSize: 12, color: ThemeConfig.textColorGrey),
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
_buildStatChangeRow("Max HP", currentMaxHp, newMaxHp),
|
||||
@@ -544,7 +545,7 @@ class InventoryScreen extends StatelessWidget {
|
||||
children: [
|
||||
Text(
|
||||
"Unequip ${itemToUnequip.name}?",
|
||||
style: const TextStyle(fontWeight: FontWeight.bold),
|
||||
style: const TextStyle(fontWeight: ThemeConfig.fontWeightBold),
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
_buildStatChangeRow("Max HP", currentMaxHp, newMaxHp),
|
||||
@@ -573,8 +574,8 @@ class InventoryScreen extends StatelessWidget {
|
||||
Widget _buildStatChangeRow(String label, int oldVal, int newVal) {
|
||||
int diff = newVal - oldVal;
|
||||
Color color = diff > 0
|
||||
? Colors.green
|
||||
: (diff < 0 ? Colors.red : Colors.grey);
|
||||
? ThemeConfig.statDiffPositive
|
||||
: (diff < 0 ? ThemeConfig.statDiffNegative : ThemeConfig.statDiffNeutral);
|
||||
String diffText = diff > 0 ? "(+$diff)" : (diff < 0 ? "($diff)" : "");
|
||||
|
||||
return Padding(
|
||||
@@ -585,11 +586,11 @@ class InventoryScreen extends StatelessWidget {
|
||||
Text(label),
|
||||
Row(
|
||||
children: [
|
||||
Text("$oldVal", style: const TextStyle(color: Colors.grey)),
|
||||
const Icon(Icons.arrow_right, size: 16, color: Colors.grey),
|
||||
Text("$oldVal", style: const TextStyle(color: ThemeConfig.textColorGrey)),
|
||||
const Icon(Icons.arrow_right, size: 16, color: ThemeConfig.textColorGrey),
|
||||
Text(
|
||||
"$newVal",
|
||||
style: const TextStyle(fontWeight: FontWeight.bold),
|
||||
style: const TextStyle(fontWeight: ThemeConfig.fontWeightBold),
|
||||
),
|
||||
const SizedBox(width: 4),
|
||||
Text(
|
||||
@@ -597,7 +598,7 @@ class InventoryScreen extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
color: color,
|
||||
fontSize: 12,
|
||||
fontWeight: FontWeight.bold,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -626,7 +627,7 @@ class InventoryScreen extends StatelessWidget {
|
||||
padding: const EdgeInsets.only(top: 2.0, bottom: 2.0),
|
||||
child: Text(
|
||||
stats.join(", "),
|
||||
style: const TextStyle(fontSize: 10, color: Colors.blueAccent),
|
||||
style: const TextStyle(fontSize: ThemeConfig.fontSizeSmall, color: ThemeConfig.statAtkColor),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
@@ -635,8 +636,7 @@ class InventoryScreen extends StatelessWidget {
|
||||
padding: const EdgeInsets.only(bottom: 2.0),
|
||||
child: Text(
|
||||
effectTexts.join("\n"),
|
||||
style: const TextStyle(fontSize: 9, color: Colors.orangeAccent),
|
||||
textAlign: TextAlign.center,
|
||||
style: const TextStyle(fontSize: ThemeConfig.fontSizeTiny, color: ThemeConfig.rarityLegendary),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'main_wrapper.dart';
|
||||
import '../widgets/responsive_container.dart';
|
||||
import '../game/save_manager.dart';
|
||||
import '../providers/battle_provider.dart';
|
||||
import '../game/config/theme_config.dart';
|
||||
|
||||
class MainMenuScreen extends StatefulWidget {
|
||||
const MainMenuScreen({super.key});
|
||||
@@ -58,7 +59,10 @@ class _MainMenuScreenState extends State<MainMenuScreen> {
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [Colors.black, Colors.blueGrey[900]!],
|
||||
colors: [
|
||||
ThemeConfig.mainMenuBgTop,
|
||||
ThemeConfig.mainMenuBgBottom,
|
||||
],
|
||||
),
|
||||
),
|
||||
child: ResponsiveContainer(
|
||||
@@ -67,23 +71,27 @@ class _MainMenuScreenState extends State<MainMenuScreen> {
|
||||
: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
const Icon(Icons.gavel, size: 100, color: Colors.amber),
|
||||
const Icon(
|
||||
Icons.gavel,
|
||||
size: 100,
|
||||
color: ThemeConfig.mainIconColor,
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
const Text(
|
||||
"COLOSSEUM'S CHOICE",
|
||||
style: TextStyle(
|
||||
fontSize: 32,
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: ThemeConfig.fontSizeHero,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
letterSpacing: 2.0,
|
||||
color: Colors.white,
|
||||
color: ThemeConfig.mainTitleColor,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 10),
|
||||
const Text(
|
||||
"Rise as a Legend",
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
color: Colors.grey,
|
||||
fontSize: ThemeConfig.fontSizeLarge,
|
||||
color: ThemeConfig.subTitleColor,
|
||||
fontStyle: FontStyle.italic,
|
||||
),
|
||||
),
|
||||
@@ -96,11 +104,11 @@ class _MainMenuScreenState extends State<MainMenuScreen> {
|
||||
horizontal: 50,
|
||||
vertical: 15,
|
||||
),
|
||||
backgroundColor: Colors.blueAccent,
|
||||
foregroundColor: Colors.white,
|
||||
backgroundColor: ThemeConfig.btnContinueBg,
|
||||
foregroundColor: ThemeConfig.btnContinueText,
|
||||
textStyle: const TextStyle(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: ThemeConfig.fontSizeXLarge,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
),
|
||||
),
|
||||
child: const Text("CONTINUE"),
|
||||
@@ -123,11 +131,11 @@ class _MainMenuScreenState extends State<MainMenuScreen> {
|
||||
horizontal: 50,
|
||||
vertical: 15,
|
||||
),
|
||||
backgroundColor: Colors.amber[700],
|
||||
foregroundColor: Colors.black,
|
||||
backgroundColor: ThemeConfig.btnNewGameBg,
|
||||
foregroundColor: ThemeConfig.btnNewGameText,
|
||||
textStyle: const TextStyle(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: ThemeConfig.fontSizeXLarge,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
),
|
||||
),
|
||||
child: const Text("NEW GAME"),
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'battle_screen.dart';
|
||||
import 'inventory_screen.dart';
|
||||
import 'settings_screen.dart';
|
||||
import '../widgets/responsive_container.dart';
|
||||
import '../game/config/theme_config.dart';
|
||||
|
||||
class MainWrapper extends StatefulWidget {
|
||||
const MainWrapper({super.key});
|
||||
@@ -23,7 +24,7 @@ class _MainWrapperState extends State<MainWrapper> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: Colors.black, // Outer background for web
|
||||
backgroundColor: ThemeConfig.mainMenuBgTop, // Outer background for web
|
||||
body: Center(
|
||||
child: ResponsiveContainer(
|
||||
child: Scaffold(
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import '../providers/battle_provider.dart';
|
||||
import 'main_menu_screen.dart';
|
||||
import '../game/config/theme_config.dart';
|
||||
|
||||
class SettingsScreen extends StatelessWidget {
|
||||
const SettingsScreen({super.key});
|
||||
@@ -15,28 +16,28 @@ class SettingsScreen extends StatelessWidget {
|
||||
const Text(
|
||||
'Settings',
|
||||
style: TextStyle(
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.white,
|
||||
fontSize: ThemeConfig.fontSizeTitle,
|
||||
fontWeight: ThemeConfig.fontWeightBold,
|
||||
color: ThemeConfig.textColorWhite,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 40),
|
||||
// Placeholder for future settings
|
||||
const Text(
|
||||
'Effect Intensity: Normal',
|
||||
style: TextStyle(color: Colors.white70),
|
||||
style: TextStyle(color: ThemeConfig.textColorWhite),
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
const Text(
|
||||
'Volume: 100%',
|
||||
style: TextStyle(color: Colors.white70),
|
||||
style: TextStyle(color: ThemeConfig.textColorWhite),
|
||||
),
|
||||
const SizedBox(height: 40),
|
||||
|
||||
// Restart Button
|
||||
ElevatedButton(
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: Colors.orange,
|
||||
backgroundColor: ThemeConfig.btnRestartBg,
|
||||
padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 12),
|
||||
),
|
||||
onPressed: () {
|
||||
@@ -63,7 +64,7 @@ class SettingsScreen extends StatelessWidget {
|
||||
// Return to Main Menu Button
|
||||
ElevatedButton(
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: Colors.red,
|
||||
backgroundColor: ThemeConfig.btnReturnMenuBg,
|
||||
padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 12),
|
||||
),
|
||||
onPressed: () {
|
||||
|
||||
Reference in New Issue
Block a user