aboutsummaryrefslogtreecommitdiff
path: root/src/ch/epfl/xblast/server/Bonus.java
blob: 9bb47a2cb35b4b3ddd2168b8725b350e9acb34e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package ch.epfl.xblast.server;

/**
 * Bonuses.
 *
 * @author Pacien TRAN-GIRARD (261948)
 * @author Timothée FLOURE (257420)
 */
public enum Bonus {

    /**
     * Increases the maximum number of bombs used simultaneously.
     */
    INC_BOMB {
        @Override
        public Player applyTo(Player player) {
            if (player.maxBombs() < BOMBS_LIMIT)
                return player.withMaxBombs(player.maxBombs() + 1);
            else
                return player.withMaxBombs(BOMBS_LIMIT);
        }
    },

    /**
     * Increases the range of the bombs.
     */
    INC_RANGE {
        @Override
        public Player applyTo(Player player) {
            if (player.bombRange() < RANGE_LIMIT)
                return player.withBombRange(player.bombRange() + 1);
            else
                return player.withBombRange(RANGE_LIMIT);
        }
    };

    /**
     * Maximum number of bombs.
     */
    private static final int BOMBS_LIMIT = 9;

    /**
     * Maximum range of a bomb.
     */
    private static final int RANGE_LIMIT = 9;

    /**
     * Apply the bonus to the given player.
     *
     * @param player receiving the bonus
     * @return a new player with the modified values
     */
    abstract public Player applyTo(Player player);

}