diff --git a/src/main/java/Model/Player/Player.java b/src/main/java/Model/Player/Player.java index 0429144..9e2c3f8 100644 --- a/src/main/java/Model/Player/Player.java +++ b/src/main/java/Model/Player/Player.java @@ -115,9 +115,11 @@ public TransactionArchive getTransactionArchive() { /** * Returns the player's current status based on trading activity and net worth performance. * Status levels: + * - ROOKIE: Net worth is 1/4 or less of starting capital (significant losses) * - NOVICE: Starting level, no requirements * - INVESTOR: At least 10 weeks of trading AND net worth increased by at least 20% * - SPECULATOR: At least 20 weeks of trading AND net worth at least doubled + * - TYCOON: At least 50 weeks of trading AND net worth at least 5x * * @return the player's current PlayerStatus */ @@ -127,6 +129,18 @@ public PlayerStatus getStatus() { // Get number of weeks with trading activity int weeksActive = this.transactionArchive.countDistinctWeeks(); + + // Check for ROOKIE status: net worth is 1/4 or less of starting capital (significant losses) + if (totalNetWorth.compareTo(this + .startingMoney.multiply(new BigDecimal("0.25"))) <= 0) { + return PlayerStatus.ROOKIE; + } + + // Check for TYCOON status: 50+ weeks AND net worth increased 5x + if (weeksActive >= 50 && totalNetWorth.compareTo(this + .startingMoney.multiply(new BigDecimal("5"))) >= 0) { + return PlayerStatus.TYCOON; + } // Check for SPECULATOR status: 20+ weeks AND net worth doubled if (weeksActive >= 20 && totalNetWorth.compareTo(this diff --git a/src/main/java/Model/Player/PlayerStatus.java b/src/main/java/Model/Player/PlayerStatus.java index 36013fc..6c77321 100644 --- a/src/main/java/Model/Player/PlayerStatus.java +++ b/src/main/java/Model/Player/PlayerStatus.java @@ -5,14 +5,18 @@ * Status levels are determined by trading activity (weeks with transactions) * and net worth performance compared to starting capital. * Levels: + * - ROOKIE: Net worth is 1/4 or less of starting capital (significant losses) * - NOVICE: Initial status (default) * - INVESTOR: 10+ weeks of trading AND net worth increased by 20% * - SPECULATOR: 20+ weeks of trading AND net worth doubled + * - TYCOON: 50+ weeks of trading AND net worth increased 5x */ public enum PlayerStatus { + ROOKIE("Rookie"), NOVICE("Novice"), INVESTOR("Investor"), - SPECULATOR("Speculator"); + SPECULATOR("Speculator"), + TYCOON("Tycoon"); private final String displayName; diff --git a/src/main/java/Model/Purchase/Purchase.java b/src/main/java/Model/Purchase/Purchase.java index 5deaa55..3e26cd6 100644 --- a/src/main/java/Model/Purchase/Purchase.java +++ b/src/main/java/Model/Purchase/Purchase.java @@ -44,7 +44,8 @@ public void commit(Player player) { if (player.getMoney().compareTo(price) < 0) { throw new IllegalStateException( - "Insufficient funds: required " + price + ", available " + player.getMoney() + "Insufficient funds: required " + price.toPlainString() + + ", available " + player.getMoney().toPlainString() ); }