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); }