Coverage Summary for Class: MoveDestination (it.polimi.ingsw.Controller)
Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
MoveDestination |
100%
(1/1)
|
100%
(6/6)
|
50%
(2/4)
|
91,7%
(11/12)
|
1 package it.polimi.ingsw.Controller;
2
3 import it.polimi.ingsw.Controller.Actions.MoveStudent;
4 import it.polimi.ingsw.Misc.OptionalValue;
5
6 import java.io.Serial;
7 import java.io.Serializable;
8
9 /**
10 * This class is used by {@link MoveStudent} to direct a pawn from the entrance to the correct destination
11 */
12 public class MoveDestination implements Serializable {
13 @Serial
14 private static final long serialVersionUID = 203L; // convention: 2 for controller, (01 -> 99) for objects
15 private final DestinationType destinationType;
16 private final OptionalValue<Integer> islandID;
17
18 /**
19 * Constructor used to point to an island
20 *
21 * @param islandID the id of the island to point to
22 */
23 private MoveDestination(int islandID) {
24 this.destinationType = DestinationType.ISLAND;
25 this.islandID = OptionalValue.of(islandID);
26 }
27
28 /**
29 * Constructor used to point to the dining room
30 */
31 private MoveDestination() {
32 this.destinationType = DestinationType.DININGROOM;
33 this.islandID = OptionalValue.empty();
34 }
35
36 /**
37 * call this method if you wish to point to the dining room
38 *
39 * @return a new object pointing to the dining room
40 */
41 public static MoveDestination toDiningRoom() {
42 return new MoveDestination();
43 }
44
45 /**
46 * call this method if you wish to point to an island
47 *
48 * @param islandID the id of the island to point to
49 * @return a new object pointing to the desired island id
50 */
51 public static MoveDestination toIsland(int islandID) {
52 return new MoveDestination(islandID);
53 }
54
55 /**
56 * @return the {@link DestinationType} selected during creation of the object
57 */
58 public DestinationType getDestinationType() {
59 return destinationType;
60 }
61
62 /**
63 * @return the ID of the island this class is pointing to, or null if the {@link DestinationType} is {@link DestinationType#DININGROOM}
64 */
65 public Integer getIslandID() {
66 if (this.destinationType == DestinationType.ISLAND && this.islandID.isPresent()) {
67 return this.islandID.get();
68 } else {
69 return null;
70 }
71 }
72 }