summaryrefslogtreecommitdiff
path: root/src/main/java/design/model/Round.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/design/model/Round.java')
-rw-r--r--src/main/java/design/model/Round.java29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/main/java/design/model/Round.java b/src/main/java/design/model/Round.java
index 9cc1462..e4442d3 100644
--- a/src/main/java/design/model/Round.java
+++ b/src/main/java/design/model/Round.java
@@ -1,20 +1,37 @@
package design.model;
+import com.fasterxml.jackson.annotation.JsonCreator;
+
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
public class Round {
- private final transient Course course;
+ private final Course course;
private final LocalDateTime dateTime;
private final Hole startingHole;
private final List<Play> plays;
+ private int currentHoleIndex;
+
+ @JsonCreator
+ private Round(Course course, LocalDateTime dateTime, Hole startingHole, List<Play> plays) {
+ this.course = course;
+ this.dateTime = dateTime;
+ this.startingHole = startingHole;
+ this.plays = plays;
+ // Allows the golfer to start anywhere on the course. Helps HolePalyContext be
+ // simpler.
+ this.currentHoleIndex = Math.max(0, startingHole.getNumber() - 1);
+ }
public Round(Course course, LocalDateTime dateTime, Hole startingHole) {
this.course = course;
this.dateTime = dateTime;
this.startingHole = startingHole;
plays = new ArrayList<>();
+ // Allows the golfer to start anywhere on the course. Helps HolePalyContext be
+ // simpler.
+ this.currentHoleIndex = Math.max(0, startingHole.getNumber() - 1);
}
public int getTotalSwings() {
@@ -48,4 +65,14 @@ public class Round {
public void addPlay(Play play) {
plays.add(play);
}
+
+ // Current hole
+ public Hole getCurrentHole() {
+ return course.getHoles().get(currentHoleIndex);
+ }
+
+ // Handles wraparound too
+ public void nextHole() {
+ currentHoleIndex = (currentHoleIndex + 1) % course.getHoleCount();
+ }
}