Skip to content

Commit

Permalink
Add SkillLevel in Game
Browse files Browse the repository at this point in the history
  • Loading branch information
JJtan2002 committed Oct 15, 2024
1 parent 0de15a2 commit 3e9d72d
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/main/java/seedu/address/model/game/Game.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public class Game {

public final String gameName;
public final Username username;
public final SkillLevel skillLevel;

/**
* Constructs a {@code Game} without a username.
Expand All @@ -31,6 +32,7 @@ public Game(String gameName) {
checkArgument(isValidGameName(gameName), MESSAGE_CONSTRAINTS);
this.gameName = gameName;
this.username = null;
this.skillLevel = null;
}

/**
Expand All @@ -43,6 +45,20 @@ public Game(String gameName, String username) {
checkArgument(isValidGameName(gameName), MESSAGE_CONSTRAINTS);
this.gameName = gameName;
this.username = new Username(username);
this.skillLevel = null;
}

/**
* Constructs a {@code Game} with a username.
*
* @param gameName A valid Game name.
*/
public Game(String gameName, String username, SkillLevel skillLevel) {
requireNonNull(gameName);
checkArgument(isValidGameName(gameName), MESSAGE_CONSTRAINTS);
this.gameName = gameName;
this.username = new Username(username);
this.skillLevel = new SkillLevel(skillLevel);
}

/**
Expand Down
73 changes: 73 additions & 0 deletions src/main/java/seedu/address/model/game/SkillLevel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package seedu.address.model.game;

import static java.util.Objects.requireNonNull;
import static seedu.address.commons.util.AppUtil.checkArgument;

/**
* Describes the Person's skill level in a Game.
*/
public class SkillLevel {

private static final String MESSAGE_CONSTRAINTS =
"Skill Level should not be blank";

/*
* Regex expression matches Strings that contain at least one non-whitespace character.
*/
private static final String VALIDATION_REGEX = "^(?!\\s*$).+";

private final String skillLevel;

/**
* Constructs a {@code SkillLevel}.
*
* @param skillLevel a valid skill level or rank.
*/
public SkillLevel(String skillLevel) {
requireNonNull(skillLevel);
checkArgument(isValidSkillLevel(skillLevel), MESSAGE_CONSTRAINTS);
this.skillLevel = skillLevel;
}

/**
* Returns true if a given string is a valid SkillLevel.
*/
public static boolean isValidSkillLevel(String test) {
return test.matches(VALIDATION_REGEX);
}

/**
* Getter for skillLevel field.
*/
public String getSkillLevel() {
return skillLevel;
}

@Override
public boolean equals(Object other) {
if (other == this) {
return true;
}

// instanceof handles nulls
if (!(other instanceof SkillLevel)) {
return false;
}

SkillLevel otherName = (SkillLevel) other;
return skillLevel.equals(otherName.skillLevel);
}

@Override
public int hashCode() {
return skillLevel.hashCode();
}

/**
* Format state as text for viewing.
*/
public String toString() {
return skillLevel;
}

}

0 comments on commit 3e9d72d

Please sign in to comment.