|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
This is the interface for the highest-level object in the game heirarchy. All objects (players, monsters, weapons, etc.) share this interface.
The Wyvern documentation often uses the terms GameObject, MapObject and game object interchangeably. The primary implementation of GameObject is MapObject.
Every game object is always in a container of some sort at all times. The parent container will be a GameMap, a Bag, an inventory, or any other container that can hold the object.
Any object found in the game that isn't derived from MapObject is likely to be an "engine object" that helps implement some sort of game behavior without actually being part of the game per se.
Nearly all game objects inherit properties from an Archetype, which represents an XML file containing a list of properties.
Field Summary |
Fields inherited from interface wyvern.lib.PropertyList |
PROPERTY_PACKAGE |
Method Summary | |
void |
addContainerChangeListener(ContainerChangeListener l)
Adds a listener to be notified when an object enters or leaves a container. |
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 |
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". |
boolean |
bless()
Blesses the object, or if it's cursed, upgrades it to uncursed. |
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. |
java.util.LinkedList |
externalize()
Produces a text-serialized version of the object and its properties. |
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. |
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. |
boolean |
inContainer()
Returns true if the object is currently in a Bag or Inventory. |
void |
initialize()
Initializes the object's default properties. |
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(). |
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 |
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 |
setAlpha(int alpha)
Sets the alpha value for this appearance (1-100). |
void |
setAnimated(boolean animated)
Starts or stops the object's animation timer. |
void |
setBitmap(java.lang.String bitmap)
Deprecated. setBitmap() and setCategory() are deprecated - use setImage(path) instead |
void |
setCategory(java.lang.String category)
Deprecated. setBitmap() and setCategory() are deprecated - use setImage(path) instead |
Bag |
setContainer(Bag container)
Sets the link to the parent container. |
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)
Deprecated. this method is deprecated - use setImage(path) instead |
void |
setLayer(int layer)
Sets the drawing layer this object appears in. |
void |
setLocations(java.util.List locations)
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. |
Methods inherited from interface wyvern.lib.MethodHookable |
addMethodHook, removeMethodHook, runMethodHook |
Methods inherited from interface wyvern.lib.Broadcaster |
broadcast, broadcast, broadcast, broadcast, broadcast |
Method Detail |
public Appearance getAppearance()
public int[] getImageDescriptors()
Normally you don't need to mess with this method. It's for the client and the map editor.
public int[] getImageDescriptor(int x, int y)
The descriptor consists of an offset and a bitmap number. The offset specifies where to draw the bitmap, in absolute coordinates, so that the specified square has the correct representation. This is used primarily by the Map Editor to draw a particular square of an object, but anyone can use it for that purpose.
Normally you don't need to mess with this method. It's for the client and the map editor.
public int getTile(int xloc, int yloc)
xloc
- object x locationyloc
- object y location
public int getTile(Point p)
p
- object (x, y) location
public void setImage(java.lang.String path, java.lang.String img)
path
- the relative path, such as "monsters/goblin"img
- the file name, with no extension, and usually
no direction or animation specifiers, e.g. "red_dragon".public void setImage(java.lang.String image)
image
- the relative path and file basename for the
object, such as "armor/gloves/gauntlets_of_power". Shouldn't
include any directional or animation specifiers like ".E1",
and shouldn't include the image file extension.public java.lang.String getImage()
public java.lang.String getBitmap()
public java.lang.String getCategory()
public int getLayer()
public int getDirection()
public java.lang.String getDescription()
public java.lang.String getShortDesc()
public void setBitmap(java.lang.String bitmap)
bitmap
- the path (in the art-cache directory) to the bitmappublic void setCategory(java.lang.String category)
category
- the relative path, such as "wiz/foo/myart",
or "armor/misc".public void setLayer(int layer)
layer
- the drawing layerpublic int getAlpha()
public void setAlpha(int alpha)
alpha
- the alpha valuepublic void setDirection(int direction)
direction
- a valid wyvern.lib.Direction constant. Direction.NONE
is valid, but Direction.ILLEGAL_DIR isn't. (Direction.SOUTH, etc.
are valid).public void setAnimated(boolean animated)
An object's animation properties (frame rate, number of frames) are stored an an AnimationParams bean property called "anima".
Calling setAnimated(true) will start the timer based on the parameters in that property. If no such property exists, a default one will be created and added to the object.
To change an object's animation cycle:
setAnimated(false)
setAnimated(true)
animated
- true to start animation, false to stop itAnimationParams
public void cycleFrame()
Normally this method is called by the object's animation timer.
public void invalidate()
public void invalidateText()
public void invalidateImage()
public void invalidateParent()
public java.util.List getLocations()
public java.util.List getRelativeLocs()
public boolean occupies(int x, int y)
x
- the x coordinate to checky
- the y coordinate to check
public GameMap getParentMap()
public Point getReferenceLoc()
For 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.
public Rectangle getBounds()
public void setMap(GameMap map, int x, int y)
For 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:
map
- 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 getMap()
public GameMap setMapLink(GameMap map)
Doesn'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.
map
- the map the object should think it's in.
getMap() will return this value.
public GameMap getMapLink()
public void positionAtMap(GameMap map, GameObject obj)
map
- 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.setMap(wyvern.lib.GameMap, int, int)
public void positionAt(GameObject obj)
obj
- another GameObject to use for the location.
We will be placed at the passed object's reference location.setMap(wyvern.lib.GameMap, int, int)
public void setSize(int width, int height)
You 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.
width
- the new width of the objectheight
- the new height of the object
java.lang.IllegalArgumentException
- if width or height <= 0public void setTransientSize(int width, int height)
width
- the width of the object, in map coordinatesheight
- the height of the object, in map coordinates
java.lang.IllegalArgumentException
- if width or height <= 0public void setShape(java.util.List new_shape)
You 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).
new_shape
- a list of points that the object occupiespublic void setLocations(java.util.List locations)
This 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).
locations
- the new set of locations the object occupies.public void move(int xoffset, int yoffset)
The 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.
xoffset
- the x offset to move the objectyoffset
- the y offset to move the objectpublic void teleport(int x, int y)
x
- the new x location for the object.y
- the new y location for the object.public void remove()
public void initialize()
public java.util.LinkedList externalize()
Before writing the object, we call getDefaultProperties() and don't write any properties on the object that are considered defaults by the object's class.
Transient properties are not included in the externalized text.
public Archetype getArchetype()
public GameObject makeClone()
public void destroy()
This method is called when the object's parent map is unloaded, when a wizard disposes the object, or when the object is destroyed via some natural force (e.g. a fireball). If you override this method, make sure to call the superclass version, so the superclass can perform its own cleanup if needed.
public java.lang.String getCanonicalClassName()
public long getWeight()
public long getBaseWeight()
This method is equivalent to ((Weight)getProperty("weight")).getValue().
public void setWeight(java.lang.String weight)
weight
- the weight as a parseable string, such as "10 lb"
or "22gm".Weight
public void setWeight(long weight)
weight
- the new weight, in grams.Weight
public boolean isGroupable()
public void setQuantity(int quantity)
The general contract of groupable items is that you treat the group as a single object when querying its properties. For instance, getWeight() will return the weight of the composite; you don't have to multiply by the quantity. The short and long descriptions will automatically be updated to reflect the quantity. getValue() will return the total value of the items in the group, and so on.
quantity
- the new number of items in the group
java.lang.IllegalArgumentException
- if any of the following
is true:
public int getQuantity()
public int getValue()
public java.lang.String checkDrop(Commandable agent, Container destination)
agent
- the person trying to drop itdestination
- the intended destination for the dropped
object. It can be a Bag ("put"), a GameMap ("drop, throw"),
or an Inventory ("give"). Should never be null.
public boolean inContainer()
public Bag getContainer()
public Bag setContainer(Bag container)
container
- 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 java.lang.String getMaterialDescription()
public Material getMaterial()
public java.lang.String getDamagedDescription()
public void addPrefix(java.lang.String prefix, boolean id)
prefix
- the prefix to addid
- true if it's only supposed to show when the
item is identified. If false, it's always visible.public void addSuffix(java.lang.String suffix, boolean id)
suffix
- the suffix to addid
- true if the suffix should only show up when the
item is identified. If false, it's always visible.public void removePrefix(java.lang.String prefix, boolean id)
prefix
- the prefix to remove; does nothing if the
prefix wasn't already in the listid
- which list to use: if true, removes from the
identified-prefixes list; else removes from the prefixes
that are always visible.public void removeSuffix(java.lang.String suffix, boolean id)
suffix
- the suffix to remove; does nothing if the
suffix wasn't already in the listid
- which list to use: if true, removes from the
identified-suffixes list; else removes from the suffixes
that are always visible.public java.util.List getPrefixes(boolean id)
id
- which list to use: if true, removes from the
identified-prefixes list; else returns the prefixes
that are always visible.
public java.util.List getSuffixes(boolean id)
id
- which list to use: if true, removes from the
identified-suffixes list; else returns the suffixes
that are always visible.
public boolean canMoveTo(GameMap map, Point p)
Keep 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.
map
- the map to teleport top
- the point in that map
public GameObject canMoveToBlockedBy(GameMap map, Point p)
Keep 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.
map
- the map to teleport top
- the point in that map
public boolean canMove(int dir)
dir
- the wyvern.lib.Direction constant consisting of
a direction to move from the monster's current location.public GameObject canMoveBlockedBy(int dir)
dir
- 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)
map
- the destination mapdest
- the proposed destination list (map locations)
public GameObject canMoveBlockedBy(GameMap map, java.util.List dest)
map
- the destination mapdest
- the proposed destination list (map locations)
public boolean canEnter(GameMap map, Point p)
map
- the map to teleport top
- the point in that map
public GameObject canEnterBlockedBy(GameMap map, Point p)
map
- the map to teleport top
- the point in that map
public Mover getMover()
public boolean bless()
public boolean curse()
public boolean isCursed()
public boolean isBlessed()
public boolean isDamned()
public boolean isUncursed()
public boolean isUnpaid()
public boolean isAnimated()
public void markPaid()
public void markUnpaid()
public boolean isIdentified()
public java.lang.String getGenderPossessive()
public java.lang.String getGenderPronoun()
public java.lang.String getOwningPlayer()
public boolean isPlayer()
public boolean isWizard()
public boolean isMonster()
public boolean isMonsterOrPlayer()
public boolean isCommandable()
public boolean isAttackable()
public boolean isTerrain()
public java.lang.String getCreator()
public boolean inMapEditor()
public void addMapChangeListener(MapChangeListener l)
public void removeMapChangeListener(MapChangeListener l)
public void addMapMotionListener(MapMotionListener l)
public void removeMapMotionListener(MapMotionListener l)
public void addContainerChangeListener(ContainerChangeListener l)
public void removeContainerChangeListener(ContainerChangeListener l)
public void addMotionTracker(MotionTracker t)
public void removeMotionTracker(MotionTracker t)
public void addObjectTracker(ObjectTracker t)
public void removeObjectTracker(ObjectTracker t)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |