Coverage Summary for Class: Tower (it.polimi.ingsw.Model)
Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Tower |
100%
(1/1)
|
100%
(3/3)
|
100%
(2/2)
|
80%
(8/10)
|
1 package it.polimi.ingsw.Model;
2
3 import it.polimi.ingsw.Exceptions.Input.DuplicateElementException;
4 import it.polimi.ingsw.Exceptions.Input.InvalidElementException;
5 import it.polimi.ingsw.Logger;
6 import it.polimi.ingsw.Model.Enums.TowerColour;
7
8 import java.io.Serial;
9 import java.io.Serializable;
10
11 /**
12 * Allows for the representation of the game's tower pawn
13 */
14 public class Tower implements Serializable {
15 @Serial
16 private static final long serialVersionUID = 131L; // convention: 1 for model, (01 -> 99) for objects
17 private final TowerColour colour;
18 private final TowerStorage storage;
19
20 /**
21 * Creates a Tower by assigning it a colour and a storage. A tower may find itself inside the storage or outside of it,
22 * in which case it has the ability to return to its storage on its own.
23 *
24 * @param colour the {@link TowerColour} assigned to the tower
25 * @param storage the {@link TowerStorage} object responsible for storing towers during the game
26 */
27 public Tower(TowerColour colour, TowerStorage storage) {
28 if (!colour.equals(storage.getColour())) {
29 throw new IllegalArgumentException("Tower's colour and TowerStorage's colour are different");
30 }
31 this.colour = colour;
32 this.storage = storage;
33 }
34
35 /**
36 * Get the colour of the tower
37 *
38 * @return the {@link TowerColour} of the tower
39 */
40 public TowerColour getColour() {
41 return colour;
42 }
43
44 /**
45 * Send the tower back to its {@link TowerStorage}. If the tower is already back in storage, then nothing is done.
46 *
47 * @throws InvalidElementException if {@link #getColour()} is different than {@link TowerStorage#getColour()}
48 */
49 public void linkBackToStorage() throws InvalidElementException {
50 try {
51 this.storage.pushTower(this);
52 } catch (DuplicateElementException e) {
53 Logger.warning("a tower that was already in storage tried to get back into it");
54 }
55 }
56 }