From faa0905cb1615ae1495d8d30c2a6b23e328dad2c Mon Sep 17 00:00:00 2001 From: pawelsa Date: Mon, 25 May 2026 23:01:44 +0200 Subject: [PATCH] feat: Add PlayerStatusEnum with 3 new statuses. --- .../idatt/model/enums/PlayerStatusEnum.java | 64 +++++++++++++++++++ .../ntnu/idi/idatt/model/player/Player.java | 19 +++--- 2 files changed, 73 insertions(+), 10 deletions(-) create mode 100644 src/main/java/edu/ntnu/idi/idatt/model/enums/PlayerStatusEnum.java diff --git a/src/main/java/edu/ntnu/idi/idatt/model/enums/PlayerStatusEnum.java b/src/main/java/edu/ntnu/idi/idatt/model/enums/PlayerStatusEnum.java new file mode 100644 index 0000000..35ccf73 --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt/model/enums/PlayerStatusEnum.java @@ -0,0 +1,64 @@ +package edu.ntnu.idi.idatt.model.enums; + +import java.math.BigDecimal; + +import edu.ntnu.idi.idatt.model.player.Player; + +/** + * Enum class that holds the different player statuses. + * + * @see Player + */ +public enum PlayerStatusEnum { + ROARING_KITTY("Roaring Kitty", 50, new BigDecimal("8")), + DIAMOND_HANDS("Diamond Hands", 10, new BigDecimal("3")), + PAPER_HANDS("Paper Hands", 100, new BigDecimal("2")), + SPECULATOR("Speculator", 20, new BigDecimal("2")), + INVESTOR("Investor", 10, new BigDecimal("1.2")), + NOVICE("Novice", 0, BigDecimal.ZERO); + + private final String title; + private final int tradingWeeks; + private final BigDecimal ratio; + + /** + * Constructor for PlayerStatusEnum + * + * @param title - Status name + * @param tradingWeeks - How many weeks in trading to reach status. + * @param ratio - NetWorth/starting money + */ + PlayerStatusEnum(String title, int tradingWeeks, BigDecimal ratio) { + this.title = title; + this.tradingWeeks = tradingWeeks; + this.ratio = ratio; + } + + /** + * Getter for title. + * + * @return String; + */ + public String getTitle() { + return title; + } + + /** + * Getter for trading weeks. + * + * @return int; + */ + public int getTradingWeeks() { + return tradingWeeks; + } + + /** + * Getter for ratio. + * + * @return BigDecimal. + */ + public BigDecimal getRatio() { + return ratio; + } + +} diff --git a/src/main/java/edu/ntnu/idi/idatt/model/player/Player.java b/src/main/java/edu/ntnu/idi/idatt/model/player/Player.java index d0a21e2..33e1932 100644 --- a/src/main/java/edu/ntnu/idi/idatt/model/player/Player.java +++ b/src/main/java/edu/ntnu/idi/idatt/model/player/Player.java @@ -1,5 +1,6 @@ package edu.ntnu.idi.idatt.model.player; +import edu.ntnu.idi.idatt.model.enums.PlayerStatusEnum; import edu.ntnu.idi.idatt.model.portfolio.Portfolio; import edu.ntnu.idi.idatt.model.transaction.TransactionArchive; @@ -73,23 +74,21 @@ public BigDecimal getNetWorth() { * players trading career has been going. *

* - * @return String of corresponding title. TODO: Change to ENUM!!! + * @return String of corresponding title. */ public String getStatus() { int tradingWeeks = transactionArchive.countDistinctWeeks(); BigDecimal netWorth = this.getNetWorth().divide(this.startingMoney, 2, RoundingMode.HALF_UP); - if (tradingWeeks >= 20 && netWorth.compareTo(new BigDecimal("2")) >= 0) { - return "Speculator"; + for (PlayerStatusEnum status : PlayerStatusEnum.values()) { + if (tradingWeeks >= status.getTradingWeeks() && netWorth.compareTo(status.getRatio()) >= 0) { + return status.getTitle(); + } } - - if (tradingWeeks >= 10 && netWorth.compareTo(new BigDecimal("1.2")) >= 0) { - return "Investor"; - } - - return "Novice"; + return PlayerStatusEnum.NOVICE.getTitle(); } - public BigDecimal getStartingMoney(){ + + public BigDecimal getStartingMoney() { return startingMoney; }