Skip to content

Commit

Permalink
feat: Add PlayerStatusEnum with 3 new statuses.
Browse files Browse the repository at this point in the history
  • Loading branch information
pawelsa committed May 25, 2026
1 parent e4b98e9 commit faa0905
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 10 deletions.
64 changes: 64 additions & 0 deletions src/main/java/edu/ntnu/idi/idatt/model/enums/PlayerStatusEnum.java
Original file line number Diff line number Diff line change
@@ -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;
}

}
19 changes: 9 additions & 10 deletions src/main/java/edu/ntnu/idi/idatt/model/player/Player.java
Original file line number Diff line number Diff line change
@@ -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;

Expand Down Expand Up @@ -73,23 +74,21 @@ public BigDecimal getNetWorth() {
* players trading career has been going.
* </p>
*
* @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;
}

Expand Down

0 comments on commit faa0905

Please sign in to comment.