update
- refactoring conifg
This commit is contained in:
@@ -16,6 +16,7 @@ import '../game/model/damage_event.dart'; // DamageEvent import
|
||||
import '../game/model/effect_event.dart'; // EffectEvent import
|
||||
|
||||
import '../game/save_manager.dart';
|
||||
import '../game/config/game_config.dart';
|
||||
|
||||
class EnemyIntent {
|
||||
final EnemyActionType type;
|
||||
@@ -104,7 +105,7 @@ class BattleProvider with ChangeNotifier {
|
||||
}
|
||||
|
||||
// Give test gold
|
||||
player.gold = 50;
|
||||
player.gold = GameConfig.startingGold;
|
||||
|
||||
// Provide starter equipment
|
||||
final starterSword = Item(
|
||||
@@ -172,11 +173,11 @@ class BattleProvider with ChangeNotifier {
|
||||
StageType type;
|
||||
|
||||
// Stage Type Logic
|
||||
if (stage % 10 == 0) {
|
||||
if (stage % GameConfig.eliteStageInterval == 0) {
|
||||
type = StageType.elite; // Every 10th stage is a Boss/Elite
|
||||
} else if (stage % 5 == 0) {
|
||||
} else if (stage % GameConfig.shopStageInterval == 0) {
|
||||
type = StageType.shop; // Every 5th stage is a Shop (except 10, 20...)
|
||||
} else if (stage % 8 == 0) {
|
||||
} else if (stage % GameConfig.restStageInterval == 0) {
|
||||
type = StageType.rest; // Every 8th stage is a Rest
|
||||
} else {
|
||||
type = StageType.battle;
|
||||
@@ -255,9 +256,9 @@ class BattleProvider with ChangeNotifier {
|
||||
/// Generate 4 random items for the shop based on current stage tier
|
||||
List<Item> _generateShopItems() {
|
||||
ItemTier currentTier = ItemTier.tier1;
|
||||
if (stage > 24)
|
||||
if (stage > GameConfig.tier2StageMax)
|
||||
currentTier = ItemTier.tier3;
|
||||
else if (stage > 12)
|
||||
else if (stage > GameConfig.tier1StageMax)
|
||||
currentTier = ItemTier.tier2;
|
||||
|
||||
List<Item> items = [];
|
||||
@@ -271,7 +272,7 @@ class BattleProvider with ChangeNotifier {
|
||||
}
|
||||
|
||||
void rerollShopItems() {
|
||||
const int rerollCost = 50;
|
||||
const int rerollCost = GameConfig.shopRerollCost;
|
||||
if (player.gold >= rerollCost) {
|
||||
player.gold -= rerollCost;
|
||||
// Modify the existing list because shopItems is final
|
||||
@@ -381,11 +382,11 @@ class BattleProvider with ChangeNotifier {
|
||||
|
||||
// Animation Delays to sync with Impact
|
||||
if (risk == RiskLevel.safe) {
|
||||
await Future.delayed(const Duration(milliseconds: 500));
|
||||
await Future.delayed(const Duration(milliseconds: GameConfig.animDelaySafe));
|
||||
} else if (risk == RiskLevel.normal) {
|
||||
await Future.delayed(const Duration(milliseconds: 400));
|
||||
await Future.delayed(const Duration(milliseconds: GameConfig.animDelayNormal));
|
||||
} else if (risk == RiskLevel.risky) {
|
||||
await Future.delayed(const Duration(milliseconds: 1100));
|
||||
await Future.delayed(const Duration(milliseconds: GameConfig.animDelayRisky));
|
||||
}
|
||||
|
||||
int damageToHp = 0;
|
||||
@@ -477,19 +478,19 @@ class BattleProvider with ChangeNotifier {
|
||||
return;
|
||||
}
|
||||
|
||||
Future.delayed(const Duration(seconds: 1), () => _enemyTurn());
|
||||
Future.delayed(const Duration(milliseconds: GameConfig.animDelayEnemyTurn), () => _enemyTurn());
|
||||
}
|
||||
|
||||
Future<void> _enemyTurn() async {
|
||||
if (!isPlayerTurn && (player.isDead || enemy.isDead)) return;
|
||||
|
||||
_addLog("Enemy's turn...");
|
||||
await Future.delayed(const Duration(seconds: 1));
|
||||
await Future.delayed(const Duration(milliseconds: GameConfig.animDelayEnemyTurn));
|
||||
|
||||
// Enemy Turn Start Logic
|
||||
// Armor decay
|
||||
if (enemy.armor > 0) {
|
||||
enemy.armor = (enemy.armor * 0.5).toInt();
|
||||
enemy.armor = (enemy.armor * GameConfig.armorDecayRate).toInt();
|
||||
_addLog("Enemy's armor decayed to ${enemy.armor}.");
|
||||
}
|
||||
|
||||
@@ -578,7 +579,7 @@ class BattleProvider with ChangeNotifier {
|
||||
// Player Turn Start Logic
|
||||
// Armor decay
|
||||
if (player.armor > 0) {
|
||||
player.armor = (player.armor * 0.5).toInt();
|
||||
player.armor = (player.armor * GameConfig.armorDecayRate).toInt();
|
||||
_addLog("Player's armor decayed to ${player.armor}.");
|
||||
}
|
||||
|
||||
@@ -665,7 +666,7 @@ class BattleProvider with ChangeNotifier {
|
||||
}) {
|
||||
// Check Vulnerable
|
||||
if (target.hasStatus(StatusEffectType.vulnerable)) {
|
||||
damage = (damage * 1.5).toInt();
|
||||
damage = (damage * GameConfig.vulnerableDamageMultiplier).toInt();
|
||||
_addLog("Vulnerable! Damage increased to $damage.");
|
||||
type = DamageType.vulnerable;
|
||||
}
|
||||
@@ -704,9 +705,9 @@ class BattleProvider with ChangeNotifier {
|
||||
// Since we just refactored ItemTable, let's use getRandomItem!
|
||||
|
||||
ItemTier currentTier = ItemTier.tier1;
|
||||
if (stage > 24)
|
||||
if (stage > GameConfig.tier2StageMax)
|
||||
currentTier = ItemTier.tier3;
|
||||
else if (stage > 12)
|
||||
else if (stage > GameConfig.tier1StageMax)
|
||||
currentTier = ItemTier.tier2;
|
||||
|
||||
rewardOptions = [];
|
||||
@@ -749,7 +750,7 @@ class BattleProvider with ChangeNotifier {
|
||||
}
|
||||
|
||||
// Heal player after selecting reward
|
||||
int healAmount = GameMath.floor(player.totalMaxHp * 0.1);
|
||||
int healAmount = GameMath.floor(player.totalMaxHp * GameConfig.stageHealRatio);
|
||||
player.heal(healAmount);
|
||||
_addLog("Stage Cleared! Recovered $healAmount HP.");
|
||||
|
||||
@@ -793,7 +794,7 @@ class BattleProvider with ChangeNotifier {
|
||||
|
||||
void sellItem(Item item) {
|
||||
if (player.inventory.remove(item)) {
|
||||
int sellPrice = GameMath.floor(item.price * 0.6);
|
||||
int sellPrice = GameMath.floor(item.price * GameConfig.sellPriceMultiplier);
|
||||
player.gold += sellPrice;
|
||||
_addLog("Sold ${item.name} for $sellPrice G.");
|
||||
notifyListeners();
|
||||
|
||||
Reference in New Issue
Block a user