From 4a0c7565d4091b1b6d5e310bd80b6ac780573881 Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Sun, 24 May 2026 22:19:07 +0200 Subject: [PATCH 1/3] Created PLayerStatus class --- src/main/java/Model/PlayerStatus.java | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/main/java/Model/PlayerStatus.java diff --git a/src/main/java/Model/PlayerStatus.java b/src/main/java/Model/PlayerStatus.java new file mode 100644 index 0000000..cf14ea8 --- /dev/null +++ b/src/main/java/Model/PlayerStatus.java @@ -0,0 +1,25 @@ +package Model; + +/** + * Enum representing the player's status level based on trading activity and performance. + * + * Status levels: + * - NOVICE: Starting level, no requirements + * - INVESTOR: Traded for at least 10 weeks AND increased net worth by at least 20% + * - SPECULATOR: Traded for at least 20 weeks AND doubled the net worth (100% increase) + */ +public enum PlayerStatus { + NOVICE("Novice"), + INVESTOR("Investor"), + SPECULATOR("Speculator"); + + private final String displayName; + + PlayerStatus(String displayName) { + this.displayName = displayName; + } + + public String getDisplayName() { + return displayName; + } +} From 445dd5b49df125b480ea2b79a68eca3d1a058c24 Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Sun, 24 May 2026 22:19:28 +0200 Subject: [PATCH 2/3] Edited Pkayer class for status --- src/main/java/Model/Player.java | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/main/java/Model/Player.java b/src/main/java/Model/Player.java index cf3d8a3..ef078a5 100644 --- a/src/main/java/Model/Player.java +++ b/src/main/java/Model/Player.java @@ -62,5 +62,35 @@ public TransactionArchive getTransactionArchive() { return this.transactionArchive; } + /** + * Returns the player's current status based on trading activity and net worth performance. + * + * Status levels: + * - 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 + * + * @return the player's current PlayerStatus + */ + public PlayerStatus getStatus() { + // Calculate total net worth: current cash + portfolio value + BigDecimal totalNetWorth = this.money.add(this.portfolio.getNetWorth()); + + // Get number of weeks with trading activity + int weeksActive = this.transactionArchive.countDistinctWeeks(); + + // Check for SPECULATOR status: 20+ weeks AND net worth doubled + if (weeksActive >= 20 && totalNetWorth.compareTo(this.startingMoney.multiply(new BigDecimal("2"))) >= 0) { + return PlayerStatus.SPECULATOR; + } + + // Check for INVESTOR status: 10+ weeks AND net worth increased by 20% + if (weeksActive >= 10 && totalNetWorth.compareTo(this.startingMoney.multiply(new BigDecimal("1.2"))) >= 0) { + return PlayerStatus.INVESTOR; + } + + // Default: NOVICE + return PlayerStatus.NOVICE; + } } From 58f8cac350d0cc2342f7e5b678d64a5192fe0815 Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Sun, 24 May 2026 22:19:45 +0200 Subject: [PATCH 3/3] Updated MainGameScene class for status --- src/main/java/View/MainGameScene.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/View/MainGameScene.java b/src/main/java/View/MainGameScene.java index 7684fff..fc7bd81 100644 --- a/src/main/java/View/MainGameScene.java +++ b/src/main/java/View/MainGameScene.java @@ -474,8 +474,10 @@ private void updateBuyInfo(String symbol, TextField qtyField, Label label) { } private void updateStatus() { + PlayerStatus playerStatus = player.getStatus(); statusLabel.setText( "Player: " + player.getName() + + " | Status: " + playerStatus.getDisplayName() + " | Week: " + exchange.getWeek() + " | Cash: $" + formatMoney(player.getMoney()) + " | Net Worth: $" + formatMoney(getNetWorth())