|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectwyvern.kernel.properties.PList
wyvern.kernel.maps.MapObject
The top level implementation of the Wyvern class heirarchy.
| Field Summary | |
protected static boolean |
IN_MAP_EDITOR
|
protected GameObjectEventSupport |
listenerList_
A lazily-instantiated helper class that registers event listeners. |
| Fields inherited from class wyvern.kernel.properties.PList |
readOnly_ |
| Fields inherited from interface wyvern.lib.PropertyList |
PROPERTY_PACKAGE |
| Constructor Summary | |
MapObject()
|
|
| Method Summary | |
void |
addContainerChangeListener(ContainerChangeListener l)
Adds a listener to be notified when an object enters or leaves a container. |
protected void |
addDefaultProperty(java.lang.String name)
Adds a (boolean) property to the object if the object doesn't already have the property. |
void |
addMapChangeListener(MapChangeListener l)
Adds a listener to be notified when the object is added to or removed from a map. |
void |
addMapMotionListener(MapMotionListener l)
Adds a listener to be notified when an object moves in its map. |
void |
addMethodHook(MethodHookCallback callback,
java.lang.String methodName)
Registers for the specified method-hook. |
void |
addMotionTracker(MotionTracker t)
Adds a MotionTracker to get map-change and map-motion events. |
void |
addObjectTracker(ObjectTracker t)
Adds an ObjectTracker to get map-change, map-motion, and container-change events all delivered to a single place. |
void |
addPrefix(java.lang.String prefix,
boolean id)
Adds a prefix to the short description, such as "+3". |
void |
addSuffix(java.lang.String suffix,
boolean id)
Adds a suffix to the short description, such as "of Durability". |
protected void |
addToMap(GameMap map,
java.util.List newpos)
Places the object in the specified map at all locations in the passed list. |
boolean |
bless()
Blesses the object, or if it's cursed, upgrades it to uncursed. |
java.util.List |
broadcast(java.lang.String msg)
Broadcasts a message to every player in sight of this object, not including the player who initiated it (if this is a player). |
java.util.List |
broadcast(java.lang.String msg,
byte style)
Broadcasts a message to every player in earshot of this object, not including the player who initiated it (if this is a player). |
java.util.List |
broadcast(java.lang.String msg,
Predicate p)
Sends the specified message to players in earshot of this object, not including the player who initiated it (if this is a player). |
java.util.List |
broadcast(java.lang.String msg,
Predicate p,
byte style)
Sends the specified message to player in sight of this object, not including the player who initiated it (if this is a player). |
java.util.List |
broadcast(java.lang.String msg,
Predicate p,
byte style,
int radius)
Sends the specified message to everyone in sight. |
boolean |
canEnter(GameMap map,
Point p)
Determines if it's possible for the (part of) object to enter this square. |
GameObject |
canEnterBlockedBy(GameMap map,
Point p)
Determines if it's possible for the (part of) object to enter this square. |
boolean |
canMove(GameMap map,
java.util.List dest)
Checks each point in the destination list to see if the object could go there. |
boolean |
canMove(int dir)
Determines whether it's possible for the agent to move to the passed location. |
GameObject |
canMoveBlockedBy(GameMap map,
java.util.List dest)
Checks each point in the destination list to see if the object could go there. |
GameObject |
canMoveBlockedBy(int dir)
Determines whether it's possible for the agent to move to the passed location. |
boolean |
canMoveTo(GameMap map,
Point p)
Determines whether it's possible for the agent to be teleported to the passed location without changing shape. |
GameObject |
canMoveToBlockedBy(GameMap map,
Point p)
Determines whether it's possible for the agent to be teleported to the passed location without changing shape. |
java.lang.String |
checkDrop(Commandable agent,
Container destination)
Checks whether the object can be dropped, thrown, given away, put in a bag, or otherwise disposed of by the bearer. |
boolean |
curse()
Curses the object, or if it's blessed, downgrades it to uncursed. |
void |
cycleFrame()
Cycles the animation frame for the object. |
void |
destroy()
Tells the object to destroy itself. |
protected void |
ensureListenerList()
Lazily creates the EventSupport object so we can start adding various custom EventListeners. |
protected void |
ensureWeight(java.lang.String weight)
This method is for the convenience of subclasses. |
java.util.LinkedList |
externalize()
Produces a text-serialized version of the object and its properties. |
protected void |
fireContainerEntered(Bag bag)
|
protected void |
fireContainerExited(Bag bag)
|
protected void |
fireEnteredMap(GameMap map,
int x,
int y)
|
protected void |
fireExitedMap(GameMap map,
int x,
int y)
|
protected void |
fireMovedInMap(GameMap map,
java.util.List src,
java.util.List dest)
|
int |
getAlpha()
Returns the alpha value for this object (1-100). |
Appearance |
getAppearance()
Returns the object's Appearance property. |
Archetype |
getArchetype()
Returns the parent archetype for this object. |
java.lang.String |
getBaseName()
Returns the basic description of the object, usually the "short" or the "id" property. |
long |
getBaseWeight()
Returns the weight of a single unit of the object. |
java.lang.String |
getBitmap()
Returns the bitmap string for this object (it's also stored in the Appearance property, so this method is just for convenience). |
Rectangle |
getBounds()
Returns the bounding rectangle for this object. |
java.lang.String |
getCanonicalClassName()
Returns the name of the object's class in a form suitable for writing to a map file. |
java.lang.String |
getCategory()
Returns the relative path for this object (it's also stored in the appearance property, so this method is just for convenience). |
Bag |
getContainer()
Returns the container (Bag or Inventory) this object is in, or null if it's not in a container. |
java.lang.String |
getCreator()
Returns the name of the Wizard who created this object, if any. |
java.lang.String |
getDamagedDescription()
Returns a message like "It is badly damaged". |
java.lang.String |
getDescription()
Returns a long-description for the object. |
int |
getDirection()
Returns the direction this object is facing. |
java.lang.String |
getGenderPossessive()
Returns "his", "her" or "its", as appropriate to the Player (or GameObject's) "sex" property. |
java.lang.String |
getGenderPronoun()
Returns "him", "her" or "it", as appropriate to the Player (or GameObject's) "sex" property. |
java.lang.String |
getImage()
Returns the image path, such as "monsters/dragon/red_dragon", or "wiz/foo/bar/bugbear" |
int[] |
getImageDescriptor(int x,
int y)
Returns a single appearance descriptor for the object at the specified (x, y) location. |
int[] |
getImageDescriptors()
Returns an appearance descriptor for the object. |
int |
getLayer()
Returns the drawing layer this object should be drawn in. |
java.util.List |
getLocations()
Returns all the map locations this object occupies. |
GameMap |
getMap()
Returns the GameMap reference stored in the instance data for this object, set by setMapLink(). |
GameMap |
getMapLink()
Returns the GameMap reference stored in the instance data for this object, set by setMapLink(). |
Material |
getMaterial()
Returns the (primary) Material this object is made from. |
java.lang.String |
getMaterialDescription()
Returns "It is made of |
Mover |
getMover()
Returns the Mover used by this object. |
java.lang.String |
getOwningPlayer()
Returns the owner of this object. |
GameMap |
getParentMap()
Returns the map this object resides in. |
java.util.List |
getPrefixes(boolean id)
Returns a list of prefixes that are to be prepended to the object's short description. |
int |
getQuantity()
Convenience method for returning the value of the "quantity" property. |
Point |
getReferenceLoc()
Returns the "reference location" for this object, which is the first Point in the object's location list. |
java.util.List |
getRelativeLocs()
Returns a list of relative locations. |
java.lang.String |
getShortDesc()
Returns a short description for the object. |
java.util.List |
getSuffixes(boolean id)
Returns a list of suffixes that are to be appended to the object's short description. |
int |
getTile(int xloc,
int yloc)
Returns the tile number for this object at this location. |
int |
getTile(Point p)
Returns the tile number for this object at this location. |
int |
getValue()
Returns the amount (in gold pieces) that the object would cost in a standard shop. |
long |
getWeight()
Returns the weight of this object in grams. |
protected java.lang.String |
groupString(java.lang.String desc)
Mangles the short description to include quantity information. |
boolean |
inContainer()
Returns true if the object is currently in a Bag or Inventory. |
void |
initialize()
Initializes the object's default properties. |
protected void |
initLocs()
Initializes the location list to 1 point. |
boolean |
inMapEditor()
Returns true if we're currently in the Map Editor rather than in a live game. |
void |
invalidate()
Notifies the parent container (bag, inv or map) that a visual change has occurred in this object. |
void |
invalidateImage()
Notifies the object's parent container (bag, inv or map) that the object's image has changed. |
void |
invalidateParent()
Notifies the object's parent container (bag, inv or map) that this object's image and/or text description have changed. |
void |
invalidateText()
Notifies the parent container (bag, inv or map) that a textual change has occurred in this object. |
boolean |
isAnimated()
Returns true if the item has an "anima" property, typically an AnimationParams. |
boolean |
isAttackable()
Returns true if this is an Attackable. |
boolean |
isBlessed()
Returns true if the object is blessed. |
boolean |
isCommandable()
Returns true if (and only if) this object has an event queue and can be commanded (i.e. it's an instance of Commandable). |
boolean |
isCursed()
Returns true if the object is cursed (or damned). |
boolean |
isDamned()
Returns true if the object is damned (a more powerful curse). |
boolean |
isGroupable()
Returns true if the object has the "groupable" property, so that it will combine with similar objects to form a group (or "stack", as many players call it). |
boolean |
isIdentified()
Returns true if the item is identified. |
boolean |
isMonster()
Returns true if (and only if) this is a Monster (and not a Player). |
boolean |
isMonsterOrPlayer()
Returns true if this is a Monster or Player |
boolean |
isPlayer()
Returns true if (and only if) this is a Player. |
boolean |
isTerrain()
Returns true if (and only if) this object is an instance of class Terrain, or a subclass. |
boolean |
isUncursed()
Returns true if the object is uncursed, meaning it's not damned, cursed, or blessed. |
boolean |
isUnpaid()
Returns true if the item has the "unpaid" property. |
boolean |
isWizard()
Returns true if (and only if) this is a Player with the "wizard" property. |
GameObject |
makeClone()
Produces a clone of this object. |
void |
markPaid()
Marks the object as paid-for. |
void |
markUnpaid()
Marks the object as unpaid. |
void |
move(int xoffset,
int yoffset)
Translates the object to a new relative location. |
boolean |
occupies(int x,
int y)
Returns true if the object (in whole or in part) occupies the specified location. |
void |
positionAt(GameObject obj)
Sets the object in the map where another object is located. |
void |
positionAtMap(GameMap map,
GameObject obj)
Sets the object in the map where another object is located. |
void |
remove()
Removes this object from its map. |
void |
removeContainerChangeListener(ContainerChangeListener l)
Removes a ContainerChangeListener that was previously added with addContainerChangeListener(). |
protected void |
removeFromMap(GameMap map,
java.util.List locations)
Removes all references to the object from the map. |
void |
removeMapChangeListener(MapChangeListener l)
Removes a MapChangeListener that was previously added with addMapChangeListener(). |
void |
removeMapMotionListener(MapMotionListener l)
Removes a MapMotionListener that was previously added with addMapMotionListener(). |
void |
removeMethodHook(MethodHookCallback callback,
java.lang.String methodName)
Unregisters for the specified method-hook. |
void |
removeMotionTracker(MotionTracker t)
Removes a MotionTracker previously added with addMotionTracker. |
void |
removeObjectTracker(ObjectTracker t)
Removes an ObjectTracker previously added with addObjectTracker(). |
void |
removePrefix(java.lang.String prefix,
boolean id)
Removes a prefix from the list of prefixes for the short description. |
void |
removeSuffix(java.lang.String suffix,
boolean id)
Removes a suffix from the list of suffixes for the short description. |
void |
runMethodHook(java.lang.String hookName,
java.lang.Object data)
Runs the specific method hook. |
void |
setAlpha(int alpha)
Sets the alpha value for this appearance (1-100). |
void |
setAnimated(boolean animate)
Starts or stops the object's animation timer. |
void |
setBitmap(java.lang.String bitmap)
Sets just the file basename for the GameObject's appearance. |
void |
setCategory(java.lang.String category)
Sets the relative path for the object's image |
Bag |
setContainer(Bag container)
Sets the link to the parent container. |
protected void |
setDefaultBitmap(java.lang.String bmp)
Deprecated. setDefaultBitmap() and setDefaultCategory() are deprecated - use setDefaultImage(path) instead |
protected void |
setDefaultCategory(java.lang.String cat)
Deprecated. setDefaultBitmap() and setDefaultCategory() are deprecated - use setDefaultImage(path) instead |
protected void |
setDefaultDesc(java.lang.String desc)
Sets long description if we don't have one. |
protected void |
setDefaultImage(java.lang.String path)
Sets image if we don't have it already |
protected void |
setDefaultIntProperty(java.lang.String name,
int value)
Sets an int property if it's not already set. |
protected void |
setDefaultLayer(int layer)
Sets the layer for the image if getLayer() == 0. |
protected void |
setDefaultMaterial(Material material)
If we don't already have a "material" property from the object's archetype, sets "material" to the passed Material. |
protected void |
setDefaultProperty(java.lang.String name,
java.lang.Object value)
Sets a property if it's not already set. |
protected void |
setDefaultShortDesc(java.lang.String shortdesc)
Sets short description if we don't have one. |
void |
setDirection(int direction)
Sets the direction this object is facing. |
void |
setImage(java.lang.String image)
Sets the image (relative path + filename) for this object. |
void |
setImage(java.lang.String path,
java.lang.String img)
Sets the image (relative path + filename) for this object. |
void |
setLayer(int layer)
Sets the drawing layer this object appears in. |
void |
setLocations(java.util.List dest)
Sets an object's location-list using absolute coordinates. |
void |
setMap(GameMap map,
int x,
int y)
Sets the parent map for this object, passing requested location at which to put the object. |
GameMap |
setMapLink(GameMap map)
Sets the parent map for this object. |
void |
setQuantity(int quantity)
Sets a quantity on the object. |
void |
setShape(java.util.List new_shape)
This is the setSize() method for non-rectangular objects. |
void |
setSize(int width,
int height)
Shapes the object into a rectangle of the specified dimensions. |
void |
setTransientSize(int width,
int height)
Calls setSize, but saves our original size first, in a transient property called "real-size". |
void |
setWeight(long weight)
Sets the weight of the object in grams. |
void |
setWeight(java.lang.String weight)
Sets a new weight for the object. |
void |
teleport(int x,
int y)
Teleports the object to a completely new map location. |
java.lang.String |
toString()
Returns the short (usually one-line) description of the object. |
protected void |
updateMapLocation(java.util.List src,
java.util.List dest)
This method is called by move(), teleport() and setLocations() to remove the object from its old locations and place it in its new locations. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
protected static final boolean IN_MAP_EDITOR
protected GameObjectEventSupport listenerList_
| Constructor Detail |
public MapObject()
| Method Detail |
public void initialize()
GameObject
initialize in interface GameObjectpublic java.util.List getLocations()
GameObject
getLocations in interface GameObjectprotected void initLocs()
public java.util.List getRelativeLocs()
GameObject
getRelativeLocs in interface GameObject
public boolean occupies(int x,
int y)
GameObject
occupies in interface GameObjectx - the x coordinate to checky - the y coordinate to check
public Point getReferenceLoc()
GameObjectFor rectangular objects, it defaults to the upper-left corner of the object. Objects can return any point they like for their reference location, although it's recommended that they return a point that exists in their location-list.
getReferenceLoc in interface GameObject
public void setSize(int width,
int height)
GameObjectYou can also use the setShape() method, but this is much easier for the 90+ percent of all objects that are rectangular.
This method keeps the object at the same reference location. That is, it obtains the object's current "position" by taking the first location from its locations list, and it makes sure the locations are all relative to this point, which is treated as the object's upper-left corner for the new rectangle.
Note that this is a "low-level" method: it doesn't do any checking to ensure that the object won't wind up in an invalid state (such as overlapping a wall) when it resizes. The caller should perform such checks before calling this method.
setSize in interface GameObjectwidth - the new width of the objectheight - the new height of the object
public void setTransientSize(int width,
int height)
GameObject
setTransientSize in interface GameObjectwidth - the width of the object, in map coordinatesheight - the height of the object, in map coordinatespublic void setShape(java.util.List new_shape)
GameObjectYou pass in a list of Points consisting of the relative positions the object occupies. They will be translated to the object's previous "reference position" (defined as the first location in its old locations list).
setShape in interface GameObjectnew_shape - a list of points that the object occupiespublic void setLocations(java.util.List dest)
GameObjectThis method assumes you know what you're doing, and will let you do things like put a player in a wall, so be careful.
The passed destination is used "as-is" as the new location list. Don't use the list again after passing it in to this method. (Typically you should pass in an ArrayList for performance).
setLocations in interface GameObjectdest - the new set of locations the object occupies.
public void move(int xoffset,
int yoffset)
GameObjectThe preferred way to move a Commandable is to command() it with command ( "move <direction>" ). This will ensure that the object only moves as fast as it can, and will run the pre- and post-move hooks so that others can participate in the event, possibly vetoing it if it's not allowed.
move in interface GameObjectxoffset - the x offset to move the objectyoffset - the y offset to move the object
public void teleport(int x,
int y)
GameObject
teleport in interface GameObjectx - the new x location for the object.y - the new y location for the object.public void remove()
GameObject
remove in interface GameObjectpublic void positionAt(GameObject obj)
GameObject
positionAt in interface GameObjectobj - another GameObject to use for the location.
We will be placed at the passed object's reference location.GameObject.setMap(wyvern.lib.GameMap, int, int)
public void positionAtMap(GameMap map,
GameObject obj)
GameObject
positionAtMap in interface GameObjectmap - the new parent map for this objectobj - another GameObject to use for the location.
We will be placed at the passed object's reference location.GameObject.setMap(wyvern.lib.GameMap, int, int)
public void setMap(GameMap map,
int x,
int y)
GameObjectFor example, if a 2x2 object is placed at (10,10), then the object's upper-left corner is its reference loc, so a reference to the object is placed at (10,10). The remaining three locations are placed at (11,10), (10,11) and (11,11).
For objects that wish to subclass this method, it does the following:
setMap in interface GameObjectmap - the new parent map for this objectx - the x coord in the map to place the object.y - the y coord in the map to place the object.public GameMap setMapLink(GameMap map)
GameObjectDoesn't actually put the object in the map - you have to call map.add(obj, x, y) for each location the object occupies in order for it to really be in the map.
setMapLink in interface GameObjectmap - the map the object should think it's in.
getMap() will return this value.
public GameMap getParentMap()
GameObject
getParentMap in interface GameObjectpublic GameMap getMap()
GameObject
getMap in interface GameObjectpublic GameMap getMapLink()
GameObject
getMapLink in interface GameObjectpublic boolean inContainer()
GameObject
inContainer in interface GameObjectpublic Bag getContainer()
GameObject
getContainer in interface GameObjectpublic Bag setContainer(Bag container)
GameObject
setContainer in interface GameObjectcontainer - the container we've been placed in, or
null to remove the link. Returns whatever container we
were in before the change, or null if none.public Rectangle getBounds()
GameObject
getBounds in interface GameObject
public boolean canMoveTo(GameMap map,
Point p)
GameObjectKeep in mind that the map contents can change (e.g. monsters can move in the way, walls can appear and disappear), so the results from this method can become stale if you wait too long. It's safe if you call it on the Scheduler thread and then use the results before relinquishing the Scheduler thread.
Generally speaking, this method is useful for computing paths, such as for AIs determining where their monster should try to go.
canMoveTo in interface GameObjectmap - the map to teleport top - the point in that map
public GameObject canMoveToBlockedBy(GameMap map,
Point p)
GameObjectKeep in mind that the map contents can change (e.g. monsters can move in the way, walls can appear and disappear), so the results from this method can become stale if you wait too long. It's safe if you call it on the Scheduler thread and then use the results before relinquishing the Scheduler thread.
Generally speaking, this method is useful for computing paths, such as for AIs determining where their monster should try to go.
canMoveToBlockedBy in interface GameObjectmap - the map to teleport top - the point in that map
public boolean canMove(int dir)
GameObject
canMove in interface GameObjectdir - the wyvern.lib.Direction constant consisting of
a direction to move from the monster's current location.public GameObject canMoveBlockedBy(int dir)
GameObject
canMoveBlockedBy in interface GameObjectdir - the wyvern.lib.Direction constant consisting of
a direction to move from the monster's current location.
public boolean canMove(GameMap map,
java.util.List dest)
GameObject
canMove in interface GameObjectmap - the destination mapdest - the proposed destination list (map locations)
public GameObject canMoveBlockedBy(GameMap map,
java.util.List dest)
GameObject
canMoveBlockedBy in interface GameObjectmap - the destination mapdest - the proposed destination list (map locations)
public boolean canEnter(GameMap map,
Point p)
GameObject