diff --git a/src/game/gameFlow.ts b/src/game/gameFlow.ts index e580643..3501950 100644 --- a/src/game/gameFlow.ts +++ b/src/game/gameFlow.ts @@ -29,7 +29,7 @@ class GameFlow { break; case PHASE_ENUM.FORT: // Handle interactions at the fort - await this.handleFort(); + await this.handleSetupPhase(userInput); break; case PHASE_ENUM.HUNT: // Handle hunting logic @@ -258,7 +258,7 @@ class GameFlow { case 6: //Advance Phase this.gameState.subPhase = 0; - this.gameState.phase = PHASE_ENUM.START_TURN + this.gameState.phase === PHASE_ENUM.SETUP ? this.gameState.phase = PHASE_ENUM.START_TURN : this.gameState.phase = PHASE_ENUM.ACTION_CHOICE; await this.gameState.save() this.executeCurrentPhase() break; @@ -325,23 +325,24 @@ class GameFlow { errorMessage: `⚠️ You do not have enough money to purchase ${amount} units of ${itemType}. You have $${this.gameState.cashLeftAfterInitialPurchases} remaining.` }; } - + let modifier: number + this.gameState.phase !== PHASE_ENUM.FORT ? modifier = 1 : modifier = 2 / 3; // Update gameState based on itemType switch (itemType) { case PurchaseOption.OXEN: - this.gameState.amountSpentOnAnimals += totalCost; + this.gameState.amountSpentOnAnimals += totalCost * modifier; break; case PurchaseOption.FOOD: - this.gameState.amountSpentOnFood += totalCost; + this.gameState.amountSpentOnFood += totalCost * modifier; break; case PurchaseOption.AMMO: - this.gameState.amountSpentOnAmmunition += totalCost * 50; + this.gameState.amountSpentOnAmmunition += totalCost * 50 * modifier; break; case PurchaseOption.CLOTHING: - this.gameState.amountSpentOnClothing += totalCost; + this.gameState.amountSpentOnClothing += totalCost * modifier; break; case PurchaseOption.MISC: - this.gameState.amountSpentOnMiscellaneousSupplies += totalCost; + this.gameState.amountSpentOnMiscellaneousSupplies += totalCost * modifier; break; // Add cases for other item types } @@ -415,6 +416,8 @@ class GameFlow { break; case "3": // Stop at the Next Fort (if applicable) if (this.gameState.fortOptionFlag) { + this.gameState.subPhase = 2 + this.gameState.totalMileageWholeTrip -= 45; this.gameState.phase = PHASE_ENUM.FORT; await this.gameState.save() this.executeCurrentPhase() @@ -457,19 +460,15 @@ class GameFlow { return; } - + private async handleTravel(): Promise { + // Logic for handling the travel phase + } private async handleRidersAttack(userInput?: string | number): Promise { // Logic for handling a riders attack, may involve checking userInput for response to attack } - private async handleTravel(): Promise { - // Logic for handling the travel phase - } - private async handleFort(): Promise { - // Logic for interacting at the fort, such as purchasing supplies - } private async handleHunt(userInput?: string | number): Promise { // Logic for the hunt phase, determining success based on gameState attributes @@ -493,7 +492,7 @@ class GameFlow { responseMessage += `Better luck next time! Maybe practice your aim some more.\n\n` this.gameState.amountSpentOnAmmunition -= 50 } - this.gameState.phase = PHASE_ENUM.TRAVEL; + this.gameState.phase = PHASE_ENUM.ACTION_CHOICE; await this.gameState.save(); await this.executeCurrentPhase(); return;