Classes | |
| struct | Lerped |
Public Types | |
| enum | statusflags { FLG_DISPOSABLE = 0x0002, FLG_OWNED = 0x0004, FLG_CONTAINED = 0x0008, FLG_INVISIBLE = 0x0010, FLG_FLIPPED = 0x0020, FLG_IN_NPC_LIST = 0x0040, FLG_FAST_ONLY = 0x0080, FLG_GUMP_OPEN = 0x0100, FLG_EQUIPPED = 0x0200, FLG_BOUNCING = 0x0400, FLG_ETHEREAL = 0x0800, FLG_HANGING = 0x1000, FLG_FASTAREA = 0x2000, FLG_LOW_FRICTION = 0x4000, FLG_BROKEN = 0x8000 } |
| enum | extflags { EXT_FIXED = 0x0001, EXT_INCURMAP = 0x0002, EXT_LERP_NOPREV = 0x0008, EXT_HIGHLIGHT = 0x0010, EXT_CAMERA = 0x0020, EXT_SPRITE = 0x0040, EXT_TRANSPARENT = 0x0080, EXT_PERMANENT_NPC = 0x0100, EXT_TARGET = 0x0200, EXT_FEMALE = 0x8000 } |
Public Member Functions | |
| ObjId | getParent () const |
| Get the Container this Item is in, if any. (0 if not in a Container) | |
| void | setParent (ObjId p) |
| Set the parent container of this item. | |
| Container * | getParentAsContainer () const |
| Get the Container this Item is in, if any. (NULL if not in a Container) | |
| Container * | getRootContainer () const |
| Get the top-most Container this Item is in, if any. (NULL if not in a Container) | |
| const Item * | getTopItem () const |
| void | setLocation (int32 x, int32 y, int32 z) |
| void | setLocation (const Point3 &pt) |
| virtual void | move (int32 x, int32 y, int32 z) |
| void | move (const Point3 &pt) |
| Move, but with a point struct. | |
| bool | moveToContainer (Container *container, bool checkwghtvol=false) |
| void | moveToEtherealVoid () |
| Move an item to the Ethereal Void. | |
| void | returnFromEtherealVoid () |
| Move an item out of the Ethereal Void to where it originally was. | |
| void | movedByPlayer () |
| Check if moving this item is stealing; call AvatarStoleSomething if so. | |
| Point3 | getLocationAbsolute () const |
| Point3 | getLocation () const |
| int32 | getZ () const |
| Get this Item's Z coordinate. | |
| void | setZ (int32 z) |
| Set this Item's Z coordinate. | |
| void | getGumpLocation (int32 &x, int32 &y) const |
| void | setGumpLocation (int32 x, int32 y) |
| void | randomGumpLocation () |
| Point3 | getCentre () const |
| void | getFootpadWorld (int32 &x, int32 &y, int32 &z) const |
| Get the size of this item's 3D bounding box, in world coordinates. | |
| void | getFootpadData (int32 &x, int32 &y, int32 &z) const |
| Box | getWorldBox () const |
| Get the Box this item occupies in the world. Undef if item is contained. | |
| uint16 | getFlags () const |
| Get all flags. | |
| bool | hasFlags (uint16 flags) const |
| Does this item have any of the given flags mask set. | |
| void | setFlag (uint32 mask) |
| Set the flags set in the given mask. | |
| virtual void | setFlagRecursively (uint32 mask) |
| void | clearFlag (uint32 mask) |
| Clear the flags set in the given mask. | |
| void | setExtFlags (uint32 f) |
| Set _extendedFlags. | |
| uint32 | getExtFlags () const |
| Get _extendedFlags. | |
| bool | hasExtFlags (uint32 flags) const |
| Does item have any of the given extended flags. | |
| void | setExtFlag (uint32 mask) |
| Set the _extendedFlags set in the given mask. | |
| void | clearExtFlag (uint32 mask) |
| Clear the _extendedFlags set in the given mask. | |
| uint32 | getShape () const |
| Get this Item's shape number. | |
| void | setShape (uint32 shape) |
| Set this Item's shape number. | |
| uint32 | getFrame () const |
| Get this Item's frame number. | |
| void | setFrame (uint32 frame) |
| Set this Item's frame number. | |
| uint16 | getQuality () const |
| Get this Item's quality (a.k.a. 'Q') | |
| void | setQuality (uint16 quality) |
| Set this Item's quality (a.k.a 'Q');. | |
| uint16 | getNpcNum () const |
| void | setNpcNum (uint16 npcnum) |
| uint16 | getMapNum () const |
| void | setMapNum (uint16 mapnum) |
| const ShapeInfo * | getShapeInfo () const |
| Get the ShapeInfo object for this Item. (The pointer will be cached.) | |
| virtual const ShapeInfo * | getShapeInfoFromGameInstance () const |
| Get the ShapeInfo object for this Item from the game instance. | |
| const Shape * | getShapeObject () const |
| Get the Shape object for this Item. (The pointer will be cached.) | |
| uint16 | getFamily () const |
| bool | canMergeWith (const Item *other) const |
| Check if we can merge with another item. | |
| ObjId | getGump () const |
| Get the open ContainerGump for this Item, if any. (NULL if not open.) | |
| void | clearGump () |
| Call this to notify the Item's open Gump has closed. | |
| ObjId | openGump (uint32 gumpshape) |
| Open a gump with the given shape for this Item. | |
| void | closeGump () |
| Close this Item's gump, if any. | |
| ProcId | bark (const Std::string &msg) |
| void | clearBark () |
| Call this to notify the Item's open bark has closed. | |
| void | closeBark () |
| Close this Item's bark, if any. | |
| virtual void | destroy (bool delnow=false) |
| Destroy self. | |
| bool | overlaps (const Item &item2) const |
| Check if this item overlaps another item in 3D world-space. | |
| bool | overlapsxy (const Item &item2) const |
| Check if this item overlaps another item in the xy dims in 3D space. | |
| bool | isOn (const Item &item2) const |
| Check if this item is on top of another item. | |
| bool | isCompletelyOn (const Item &item2) const |
| Check if this item is on completely on top of another item. | |
| bool | isCentreOn (const Item &item2) const |
| Check if the centre of this item is on top of another item. | |
| bool | isOnScreen () const |
| Check if the item is currently entirely visible on screen. | |
| bool | isPartlyOnScreen () const |
| Check if the item is currently partly visible on screen. | |
| bool | canExistAt (int32 x, int32 y, int32 z, bool needsupport=false) const |
| Check if this item can exist at the given coordinates. | |
| bool | canExistAt (const Point3 &pt, bool needsupport=false) const |
| Direction | getDirToItemCentre (const Item &item2) const |
| Direction | getDirToItemCentre (const Point3 &pt) const |
| Same as above, but from a fixed point. | |
| int | getRange (const Item &item2, bool checkz=false) const |
| int | getRangeIfVisible (const Item &item2) const |
| get 'distance' to other item if it's visible (ie, there's nothing blocking the path) | |
| bool | canReach (const Item *other, int range, int32 x=0, int32 y=0, int32 z=0) const |
| virtual int32 | collideMove (int32 x, int32 y, int32 z, bool teleport, bool force, ObjId *hititem=0, uint8 *dirs=0) |
| int32 | ascend (int delta) |
| void | fall () |
| void | grab () |
| void | hurl (int xs, int ys, int zs, int grav) |
| Hurl the item in the given direction. | |
| void | setGravityPID (ProcId pid) |
| Set the PID of the GravityProcess for this Item. There should be only one. | |
| ProcId | getGravityPID () const |
| Get the PID of the GravityProcess for this Item (or 0) | |
| virtual GravityProcess * | ensureGravityProcess () |
| Get the GravityProcess of this Item, creating it if necessary. | |
| virtual uint32 | getWeight () const |
| Get the weight of this Item. | |
| virtual uint32 | getTotalWeight () const |
| Get the weight of this Item and its contents, if any. | |
| virtual uint32 | getVolume () const |
| Get the volume this item takes up in a container. | |
| void | explode (int explosion_type, bool destroy_item, bool cause_damage=true) |
| virtual uint16 | getDamageType () const |
| get the damage type this object does when hitting something | |
| virtual void | receiveHit (ObjId other, Direction dir, int damage, uint16 type) |
| uint16 | fireWeapon (int32 x, int32 y, int32 z, Direction dir, int firetype, bool findtarget) |
| fire the given weapon type in the given direction from location x, y, z. | |
| uint16 | fireDistance (const Item *other, Direction dir, int16 xoff, int16 yoff, int16 zoff) const |
| uint8 | getDamagePoints () const |
| get damage points, used in Crusader for item damage. | |
| void | setDamagePoints (uint8 points) |
| set damage points, used in Crusader for item damage. | |
| int32 | getTargetZRelativeToAttackerZ (int32 attackerz) const |
| unsigned int | countNearby (uint32 shape, uint16 range) const |
| count nearby objects of a given shape | |
| bool | canDrag () const |
| can this item be dragged? | |
| int | getThrowRange () const |
| bool | checkLoopScript (const uint8 *script, uint32 scriptsize) const |
| uint32 | callUsecodeEvent_look () |
| uint32 | callUsecodeEvent_use () |
| uint32 | callUsecodeEvent_anim () |
| uint32 | callUsecodeEvent_cachein () |
| uint32 | callUsecodeEvent_hit (ObjId hitted, int16 hitforce) |
| uint32 | callUsecodeEvent_gotHit (ObjId hitter, int16 hitforce) |
| uint32 | callUsecodeEvent_hatch () |
| uint32 | callUsecodeEvent_schedule (uint32 time) |
| uint32 | callUsecodeEvent_release () |
| uint32 | callUsecodeEvent_equip () |
| uint32 | callUsecodeEvent_equipWithParam (ObjId param) |
| uint32 | callUsecodeEvent_unequip () |
| uint32 | callUsecodeEvent_unequipWithParam (ObjId param) |
| uint32 | callUsecodeEvent_combine () |
| uint32 | callUsecodeEvent_calledFromAnim () |
| uint32 | callUsecodeEvent_enterFastArea () |
| uint32 | callUsecodeEvent_leaveFastArea () |
| uint32 | callUsecodeEvent_cast (uint16 unk) |
| uint32 | callUsecodeEvent_justMoved () |
| uint32 | callUsecodeEvent_AvatarStoleSomething (uint16 unk) |
| uint32 | callUsecodeEvent_guardianBark (int16 unk) |
| uint32 | callUsecodeEvent_unhatch () |
| uint32 | use () |
| Point3 | getLerped () const |
| Get lerped location. | |
| void | doLerp (int32 factor) |
| void | setupLerp (int32 gametick) |
| Setup the lerped info for this gametick and animate the item. | |
| virtual uint32 | enterFastArea () |
| The item has entered the fast area. | |
| virtual void | leaveFastArea () |
| Common::String | dumpInfo () const override |
| dump some info about this item to a string | |
| bool | loadData (Common::ReadStream *rs, uint32 version) |
| void | saveData (Common::WriteStream *ws) override |
| INTRINSIC (I_touch) | |
| INTRINSIC (I_getX) | |
| INTRINSIC (I_getY) | |
| INTRINSIC (I_getZ) | |
| INTRINSIC (I_getCX) | |
| INTRINSIC (I_getCY) | |
| INTRINSIC (I_getCZ) | |
| INTRINSIC (I_getPoint) | |
| INTRINSIC (I_getShape) | |
| INTRINSIC (I_setShape) | |
| INTRINSIC (I_getFrame) | |
| INTRINSIC (I_setFrame) | |
| INTRINSIC (I_getQuality) | |
| INTRINSIC (I_getUnkEggType) | |
| INTRINSIC (I_setUnkEggType) | |
| INTRINSIC (I_getQuantity) | |
| INTRINSIC (I_getContainer) | |
| INTRINSIC (I_getRootContainer) | |
| INTRINSIC (I_getQ) | |
| INTRINSIC (I_getQHi) | |
| INTRINSIC (I_getQLo) | |
| INTRINSIC (I_setQ) | |
| INTRINSIC (I_setQHi) | |
| INTRINSIC (I_setQLo) | |
| INTRINSIC (I_setQuality) | |
| INTRINSIC (I_setQuantity) | |
| INTRINSIC (I_setQAndCombine) | |
| INTRINSIC (I_getFamily) | |
| INTRINSIC (I_getTypeFlag) | |
| INTRINSIC (I_getStatus) | |
| INTRINSIC (I_orStatus) | |
| INTRINSIC (I_andStatus) | |
| INTRINSIC (I_getFootpadData) | |
| INTRINSIC (I_overlaps) | |
| INTRINSIC (I_overlapsXY) | |
| INTRINSIC (I_isOn) | |
| INTRINSIC (I_isCompletelyOn) | |
| INTRINSIC (I_isCentreOn) | |
| INTRINSIC (I_isInNpc) | |
| INTRINSIC (I_ascend) | |
| INTRINSIC (I_getWeight) | |
| INTRINSIC (I_getWeightIncludingContents) | |
| INTRINSIC (I_getVolume) | |
| INTRINSIC (I_bark) | |
| INTRINSIC (I_getMapArray) | |
| INTRINSIC (I_setMapArray) | |
| INTRINSIC (I_getNpcNum) | |
| INTRINSIC (I_setNpcNum) | |
| INTRINSIC (I_getDirToCoords) | |
| INTRINSIC (I_getDirFromCoords) | |
| INTRINSIC (I_getDirToItem) | |
| INTRINSIC (I_getDirFromItem) | |
| INTRINSIC (I_getDirFromTo16) | |
| INTRINSIC (I_getClosestDirectionInRange) | |
| INTRINSIC (I_look) | |
| INTRINSIC (I_use) | |
| INTRINSIC (I_gotHit) | |
| INTRINSIC (I_enterFastArea) | |
| INTRINSIC (I_cast) | |
| INTRINSIC (I_ask) | |
| INTRINSIC (I_getSliderInput) | |
| INTRINSIC (I_openGump) | |
| INTRINSIC (I_closeGump) | |
| INTRINSIC (I_create) | |
| INTRINSIC (I_legalCreateAtPoint) | |
| INTRINSIC (I_legalCreateAtCoords) | |
| INTRINSIC (I_legalCreateInCont) | |
| INTRINSIC (I_push) | |
| INTRINSIC (I_pop) | |
| INTRINSIC (I_popToCoords) | |
| INTRINSIC (I_popToContainer) | |
| INTRINSIC (I_popToEnd) | |
| INTRINSIC (I_destroy) | |
| INTRINSIC (I_move) | |
| INTRINSIC (I_legalMoveToPoint) | |
| INTRINSIC (I_legalMoveToContainer) | |
| INTRINSIC (I_hurl) | |
| INTRINSIC (I_shoot) | |
| INTRINSIC (I_fall) | |
| INTRINSIC (I_grab) | |
| INTRINSIC (I_igniteChaos) | |
| INTRINSIC (I_getFamilyOfType) | |
| INTRINSIC (I_getEtherealTop) | |
| INTRINSIC (I_guardianBark) | |
| INTRINSIC (I_getSurfaceWeight) | |
| INTRINSIC (I_isExplosive) | |
| INTRINSIC (I_receiveHit) | |
| INTRINSIC (I_explode) | |
| INTRINSIC (I_canReach) | |
| INTRINSIC (I_getRange) | |
| INTRINSIC (I_getRangeIfVisible) | |
| INTRINSIC (I_isCrusTypeNPC) | |
| INTRINSIC (I_setBroken) | |
| INTRINSIC (I_inFastArea) | |
| INTRINSIC (I_equip) | |
| INTRINSIC (I_unequip) | |
| INTRINSIC (I_avatarStoleSomething) | |
| INTRINSIC (I_isPartlyOnScreen) | |
| INTRINSIC (I_fireWeapon) | |
| INTRINSIC (I_fireDistance) | |
Public Member Functions inherited from Ultima::Ultima8::Object | |
| ObjId | getObjId () const |
| get this Object's objID | |
| virtual ObjId | assignObjId () |
| virtual void | clearObjId () |
| Clear objID of self and contents (if any) | |
| ProcId | callUsecode (uint16 classid, uint16 offset, const uint8 *args=0, int argsize=0) |
| bool | loadData (Common::ReadStream *rs, uint32 version) |
Static Public Attributes | |
| static const int | MAX_QUANTITY = 666 |
Protected Member Functions | |
| bool | isRobotCru () const |
| True if this is a Robot shape (in a fixed list) | |
| int | scaleReceivedDamageCru (int damage, uint16 type) const |
Protected Attributes | |
| uint32 | _frame |
| int32 | _x |
| int32 | _y |
| int32 | _z |
| uint16 | _flags |
| uint16 | _quality |
| uint16 | _npcNum |
| uint16 | _mapNum |
| uint32 | _extendedFlags |
| ObjId | _parent |
| const Shape * | _cachedShape |
| const ShapeInfo * | _cachedShapeInfo |
| Lerped | _lPrev |
| Lerped | _lNext |
| int32 | _ix |
| int32 | _iy |
| int32 | _iz |
| ObjId | _gump |
| ObjId | _bark |
| ProcId | _gravityPid |
| uint8 | _damagePoints |
Protected Attributes inherited from Ultima::Ultima8::Object | |
| ObjId | _objId |
| Enumerator | |
|---|---|
| FLG_DISPOSABLE | Item is discarded on map change. |
| FLG_OWNED | Item is owned by avatar. |
| FLG_CONTAINED | Item is in a container. |
| FLG_INVISIBLE | Item is invisible. |
| FLG_FLIPPED | Item is flipped horizontally. |
| FLG_IN_NPC_LIST | Item is a NPC. |
| FLG_FAST_ONLY | Item is discarded when leaving fast area. |
| FLG_GUMP_OPEN | Item has a gump open. |
| FLG_EQUIPPED | Item is equipped. |
| FLG_BOUNCING | Item has bounced. |
| FLG_ETHEREAL | Item is in the ethereal list - confirmed same meaning in crusader. |
| FLG_HANGING | Item is suspended in the air. |
| FLG_FASTAREA | Item is in the fast area. |
| FLG_LOW_FRICTION | Item has low friction. |
| FLG_BROKEN | Item is broken - Crusader only - broken items are not targetable. |
| Enumerator | |
|---|---|
| EXT_FIXED | Item came from FIXED. |
| EXT_INCURMAP | Item is in a CurrentMap display list. |
| EXT_LERP_NOPREV | Item can't be lerped this frame. |
| EXT_HIGHLIGHT | Item should be Painted highlighted. |
| EXT_CAMERA | Item is being followed by the camera. |
| EXT_SPRITE | Item is a sprite. |
| EXT_TRANSPARENT | Item should be painted transparent. |
| EXT_PERMANENT_NPC | Item is a permanent NPC. |
| EXT_TARGET | Item is the current reticle target in Crusader. |
| EXT_FEMALE | Item is Crusader Female NPC (controls sfx) |
| const Item* Ultima::Ultima8::Item::getTopItem | ( | ) | const |
| void Ultima::Ultima8::Item::setLocation | ( | int32 | x, |
| int32 | y, | ||
| int32 | z | ||
| ) |
Set item location. This strictly sets the location, and does not even update CurrentMap
|
virtual |
Move an item. This moves an item to the new location, and updates CurrentMap and fastArea if necessary.
Reimplemented in Ultima::Ultima8::MainActor.
| bool Ultima::Ultima8::Item::moveToContainer | ( | Container * | container, |
| bool | checkwghtvol = false |
||
| ) |
Move an item. This moves an item to a container and updates CurrentMap and fastArea if necessary.
| container | The container this item should be placed in |
| Point3 Ultima::Ultima8::Item::getLocationAbsolute | ( | ) | const |
|
inline |
| void Ultima::Ultima8::Item::getGumpLocation | ( | int32 & | x, |
| int32 & | y | ||
| ) | const |
Get this Item's location in a ContainerGump. Undefined if the Item is not in a Container.
| void Ultima::Ultima8::Item::setGumpLocation | ( | int32 | x, |
| int32 | y | ||
| ) |
Set the Item's location in a ContainerGump. NOP if the Item is not in a Container.
| void Ultima::Ultima8::Item::randomGumpLocation | ( | ) |
Randomize the Item's location in a ContainerGump. Effectively this sets the coordinates to (255,255) and lets the ContainerGump randomize the position when it is next opened.
| Point3 Ultima::Ultima8::Item::getCentre | ( | ) | const |
|
inline |
Get the size of this item's 3D bounding box, scaled as in the datafiles (i.e., the dimensions are not in the same unit as world coordinates!)
|
inline |
|
inline |
|
inline |
|
inline |
| uint16 Ultima::Ultima8::Item::getFamily | ( | ) | const |
| Direction Ultima::Ultima8::Item::getDirToItemCentre | ( | const Item & | item2 | ) | const |
Get direction from centre to another item's centre. Undefined if either item is contained or equipped.
| int Ultima::Ultima8::Item::getRange | ( | const Item & | item2, |
| bool | checkz = false |
||
| ) | const |
get 'distance' to other item. This is the maximum of the differences between the x, y (and possibly z) coordinates of the items.
| bool Ultima::Ultima8::Item::canReach | ( | const Item * | other, |
| int | range, | ||
| int32 | x = 0, |
||
| int32 | y = 0, |
||
| int32 | z = 0 |
||
| ) | const |
Check if this item can reach another item. (This includes LoS.)
| other | item to be reached |
| range | range |
| x | x coordinate of other to use, If zero, use real coords. |
| y | y coordinate of other to use |
| z | z coordinate of other to use. |
|
virtual |
Move the object to (x,y,z) colliding with objects in the way.
| teleport | move without colliding with objects between source and destination |
| force | force the object to get to the destination without being blocked by solid objects |
| hititem | if non-NULL, this is set to (one of) the item(s) blocking the movement, or to zero if nothing blocked it |
| dirs | if non-NULL, this is set to a bitmask of the x/y/z |
Reimplemented in Ultima::Ultima8::Actor.
| int32 Ultima::Ultima8::Item::ascend | ( | int | delta | ) |
Make the item move up (delta>0) or down (delta<0), including any items on top of it
| delta | distance in Z-direction to move |
| void Ultima::Ultima8::Item::fall | ( | ) |
Make the item fall down. This creates a GravityProcess to do the actual work if the Item doesn't already have one.
| void Ultima::Ultima8::Item::grab | ( | ) |
| void Ultima::Ultima8::Item::explode | ( | int | explosion_type, |
| bool | destroy_item, | ||
| bool | cause_damage = true |
||
| ) |
explode with explosion type (0,1,2), whether to destroy the item, and whether to cause splash damage.
|
virtual |
receive a hit
| other | The item delivering the hit |
| dir | The direction the hit is coming from (or inverse? CHECKME!) |
| damage | The force of the hit. Zero for default |
| type | The type of damage done. Zero for default |
Reimplemented in Ultima::Ultima8::Actor.
| uint16 Ultima::Ultima8::Item::fireDistance | ( | const Item * | other, |
| Direction | dir, | ||
| int16 | xoff, | ||
| int16 | yoff, | ||
| int16 | zoff | ||
| ) | const |
get the distance (in map tiles) if we were to fire in this direction to "other" and could hit, otherwise return 0.
| int32 Ultima::Ultima8::Item::getTargetZRelativeToAttackerZ | ( | int32 | attackerz | ) | const |
Get the right Z which an attacker should aim for, given the attacker's z. (Crusader only)
| int Ultima::Ultima8::Item::getThrowRange | ( | ) | const |
how far can this item be thrown?
| bool Ultima::Ultima8::Item::checkLoopScript | ( | const uint8 * | script, |
| uint32 | scriptsize | ||
| ) | const |
Check this Item against the given loopscript
| script | The loopscript to run |
| scriptsize | The size (in bytes) of the loopscript |
|
inline |
Do lerping for an in between frame (0-256) The result can be retrieved with getLerped(x,y,z)
| factor | The lerp factor: 0 is start of move, 256 is end of move |
|
virtual |
The item has left the fast area
Reimplemented in Ultima::Ultima8::Egg.
|
protected |
Scale a received damage value based on the current difficulty level and the type of object this is.