package com.amaya.game.entities.environment; import com.amaya.game.entities.modifiers.CommandsFactory; import com.amaya.game.entities.modifiers.Mandate; import com.amaya.game.entities.modifiers.Modifier; /** */ public class Alien extends Drop { /* [ CONSTANTS ] ========================================================================================================================================= */ /** dummy instance for operations 'without NULL'. */ public static final Alien GREEN = green(DUMMY_OFFSET); /** dummy instance for operations 'without NULL'. */ public static final Alien YELLOW = yellow(DUMMY_OFFSET); /** dummy instance for operations 'without NULL'. */ public static final Alien ORANGE = orange(DUMMY_OFFSET); /** enum of known alien types. */ public static enum KnownAliens { GREEN, YELLOW, ORANGE } /* [ CONSTRUCTORS ] ====================================================================================================================================== */ /** hidden constructor. Use static methods for instance creation. */ protected Alien(final Mandate modifier) { super(modifier); } /** new instance of Green alien with randomized trajectory. */ public static Alien green(final float xOffset) { return new Alien(CommandsFactory.points(5)) .randomizeTrajectory(xOffset) .setTag(KnownAliens.GREEN); } /** new instance of Yellow alien with randomized trajectory. */ public static Alien yellow(final float xOffset) { return new Alien(CommandsFactory.points(10)) .randomizeTrajectory(xOffset) .setTag(KnownAliens.YELLOW); } /** new instance of Orange alien with randomized trajectory. */ public static Alien orange(final float xOffset) { return new Alien(CommandsFactory.points(30)) .randomizeTrajectory(xOffset) .setTag(KnownAliens.ORANGE); } /* [ GETTER / SETTER METHODS ] =========================================================================================================================== */ /** Get alien cost in points. */ public int getPoints() { return (int) ((Modifier) getModifier()).Value; } }