/*******************************************************************************
* Copyright (c) 2015
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*******************************************************************************/
package jsettlers.common.mapobject;
import java.util.*;
public enum EMapObjectType {
TREE_GROWING,
TREE_ADULT,
TREE_DEAD,
CORN_GROWING,
CORN_ADULT,
CORN_DEAD,
WINE_GROWING,
WINE_HARVESTABLE,
WINE_DEAD,
WINE_BOWL,
WAVES,
STONE,
/**
* This is the arrow object type.
* <p>
* Map objects with type arrow must implement {@link IArrowMapObject}
*/
ARROW,
/**
* A Ghost (disappearing settler).
*/
GHOST,
/**
* A working area mark. A progress of 0 means the outer ring, 1 means the inner ring. Currently, there are 4 rings.
*/
WORKAREA_MARK(false),
/**
* The coal-mark for mountains. 0 means few coal, 1 is a lot.
*/
FOUND_COAL,
FOUND_IRON,
FOUND_GOLD,
FOUND_GEMSTONE,
FOUND_BRIMSTONE,
FOUND_NOTHING,
/**
* The sign that marks the center of a building site.
*/
BUILDINGSITE_SIGN,
/**
* Building site borders.
*/
BUILDINGSITE_POST,
/**
* in front of a door
*/
FLAG_DOOR,
/**
* on top of the roof
*/
FLAG_ROOF,
/**
* the rest of a stone that can not be cut any more.
*/
CUT_OFF_STONE,
/**
* Type of objects used to view the user where a building can be build.
* <p />
* The value of the construction mark is given by {@link IMapObject} .getStateProgress().<br>
* The value ranges from 0 to 1 where 0 is best and 1 is worst.<br>
* If there is no marking at a position, the building can not be constructed there.
*/
CONSTRUCTION_MARK(false),
/**
* Type to represent material stacks.
* <p />
* {@link IMapObject}s of this type must implement {@link IStackMapObject}.
*/
STACK_OBJECT,
/**
* Type to represent a Building
* <p />
* {@link IMapObject}s of this type must implement {@link IBuildingMapObject}.
*/
BUILDING,
/**
* Type to represent the Building shown when placing for construction.
*/
PLACEMENT_BUILDING,
/**
* Simple smoke
*/
SMOKE,
/**
* A pig. Progress is ignored.
*/
PIG,
/**
* A donkey (in the donkey farm)
*/
DONKEY,
/**
* cloud of smoke when a building get's torn down.
*/
BUILDING_DECONSTRUCTION_SMOKE,
PLANT_DECORATION,
DESERT_DECORATION,
/**
* Animated fish in the water.
*/
FISH_DECORATION,
/**
* Doesn't need to be drawn. <br>
* Must implement {@link IAttackableTowerMapObject}.
*/
ATTACKABLE_TOWER,
/**
* doesn't need to be drawn.
*/
INFORMABLE_MAP_OBJECT;
public static final EMapObjectType[] VALUES = EMapObjectType.values();
public final byte ordinal;
/**
* If true, objects of this type should be saved. If false, they should not be persisted.
*/
public final boolean persistent;
public static final Set<EMapObjectType> TO_BE_REMOVED_WHEN_FLATTENED = EnumSet.of(
EMapObjectType.ARROW,
EMapObjectType.CORN_GROWING,
EMapObjectType.CORN_ADULT,
EMapObjectType.CORN_DEAD,
EMapObjectType.WINE_GROWING,
EMapObjectType.WINE_HARVESTABLE,
EMapObjectType.WINE_DEAD,
EMapObjectType.CUT_OFF_STONE,
EMapObjectType.DESERT_DECORATION,
EMapObjectType.PLANT_DECORATION,
EMapObjectType.TREE_DEAD
);
EMapObjectType() {
this(true);
}
EMapObjectType(boolean persistent) {
this.ordinal = (byte) super.ordinal();
this.persistent = persistent;
}
}