ScummVM API documentation
Ultima::Ultima8::Container Class Reference
Inheritance diagram for Ultima::Ultima8::Container:
Ultima::Ultima8::Item Ultima::Ultima8::Object Ultima::Ultima8::Actor Ultima::Ultima8::MainActor

Public Member Functions

virtual bool CanAddItem (Item *item, bool checkwghtvol=false)
 
virtual bool addItem (Item *item, bool checkwghtvol=false)
 
virtual bool removeItem (Item *item)
 
virtual bool moveItemToEnd (Item *item)
 
void removeContents ()
 
void destroyContents ()
 Destroy all contents.
 
void setFlagRecursively (uint32 mask) override
 Set flag on container and all its contents recursively.
 
void containerSearch (UCList *itemlist, const uint8 *loopscript, uint32 scriptsize, bool recurse) const
 
ItemgetFirstItemWithShape (uint16 shapeno, bool recurse)
 
void getItemsWithShapeFamily (Std::vector< Item *> &itemlist, uint16 family, bool recurse)
 
uint32 getTotalWeight () const override
 
virtual uint32 getCapacity () const
 Get the container's capacity.
 
virtual uint32 getContentVolume () const
 Get the total volume used up by the container's current contents.
 
ObjId assignObjId () override
 
void clearObjId () override
 Clear objIDs of self and contents.
 
void destroy (bool delnow=false) override
 Destroy self.
 
Common::String dumpInfo () const override
 dump some info about this object to a string
 
bool loadData (Common::ReadStream *rs, uint32 version)
 
void saveData (Common::WriteStream *ws) override
 
 INTRINSIC (I_removeContents)
 
 INTRINSIC (I_destroyContents)
 
- Public Member Functions inherited from Ultima::Ultima8::Item
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.
 
ContainergetParentAsContainer () const
 Get the Container this Item is in, if any. (NULL if not in a Container)
 
ContainergetRootContainer () const
 Get the top-most Container this Item is in, if any. (NULL if not in a Container)
 
const ItemgetTopItem () 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.
 
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 ShapeInfogetShapeInfo () const
 Get the ShapeInfo object for this Item. (The pointer will be cached.)
 
virtual const ShapeInfogetShapeInfoFromGameInstance () const
 Get the ShapeInfo object for this Item from the game instance.
 
const ShapegetShapeObject () 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, ObjId id=0)
 
void clearBark ()
 Call this to notify the Item's open bark has closed.
 
void closeBark ()
 Close this Item's bark, if any.
 
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 GravityProcessensureGravityProcess ()
 Get the GravityProcess of this Item, creating it if necessary.
 
virtual uint32 getWeight () const
 Get the weight of this Item.
 
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
 
ProcId callUsecode (uint16 classid, uint16 offset, const uint8 *args=0, int argsize=0)
 
bool loadData (Common::ReadStream *rs, uint32 version)
 

Protected Attributes

Std::list< Item * > _contents
 
- Protected Attributes inherited from Ultima::Ultima8::Item
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
 

Additional Inherited Members

- Public Types inherited from Ultima::Ultima8::Item
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
}
 
- Static Public Attributes inherited from Ultima::Ultima8::Item
static const int MAX_QUANTITY = 666
 
- Protected Member Functions inherited from Ultima::Ultima8::Item
bool isRobotCru () const
 True if this is a Robot shape (in a fixed list)
 
int scaleReceivedDamageCru (int damage, uint16 type) const
 

Member Function Documentation

◆ CanAddItem()

virtual bool Ultima::Ultima8::Container::CanAddItem ( Item item,
bool  checkwghtvol = false 
)
virtual

Check if an item can be added to the container

Parameters
itemThe item to check
checkwghtvolNeed to check weight and volume?
Returns
true if item can be added, false if not

Reimplemented in Ultima::Ultima8::MainActor.

◆ addItem()

virtual bool Ultima::Ultima8::Container::addItem ( Item item,
bool  checkwghtvol = false 
)
virtual

Add an item to the container. This does NOT update item.

Parameters
itemThe item to add
checkwghtvolNeed to check weight and volume?
Returns
true if item was added, false if failed

Reimplemented in Ultima::Ultima8::MainActor.

◆ removeItem()

virtual bool Ultima::Ultima8::Container::removeItem ( Item item)
virtual

Remove an item from the container. This does NOT update item.

Parameters
itemThe item to remove
Returns
true if successful, false if item wasn't in container

Reimplemented in Ultima::Ultima8::Actor.

◆ moveItemToEnd()

virtual bool Ultima::Ultima8::Container::moveItemToEnd ( Item item)
virtual

Move an item to the end of the contents list

Parameters
itemThe item to move
Returns
true if successful, false if item isn't in this container

◆ removeContents()

void Ultima::Ultima8::Container::removeContents ( )

Remove all contents, moving them to this container's parent. (Or into the world if this container has no parent.) Note: not yet implemented

◆ containerSearch()

void Ultima::Ultima8::Container::containerSearch ( UCList itemlist,
const uint8 *  loopscript,
uint32  scriptsize,
bool  recurse 
) const

Search the container for items matching the given loopscript.

Parameters
itemlistThe matching items are appended to this list
loopscriptThe loopscript to match items against
scriptsizeThe size (in bytes) of the loopscript
recurseIf true, search through child-containers too

◆ getFirstItemWithShape()

Item* Ultima::Ultima8::Container::getFirstItemWithShape ( uint16  shapeno,
bool  recurse 
)

A simpler search of the container which just gets the first item with a given shape number, optionally recursively.

Returns
The first item with that shape, or nullptr if nothing found.

◆ getItemsWithShapeFamily()

void Ultima::Ultima8::Container::getItemsWithShapeFamily ( Std::vector< Item *> &  itemlist,
uint16  family,
bool  recurse 
)

A simpler search of the container which just gets the items with a given shape family, optionally recursively.

Returns
The first item with that shape, or nullptr if nothing found.

◆ getTotalWeight()

uint32 Ultima::Ultima8::Container::getTotalWeight ( ) const
overridevirtual

Get the weight of the container and its contents

Returns
weight

Reimplemented from Ultima::Ultima8::Item.

◆ assignObjId()

ObjId Ultima::Ultima8::Container::assignObjId ( )
overridevirtual

Assign self and contents an objID

Returns
the assiged ID

Reimplemented from Ultima::Ultima8::Object.


The documentation for this class was generated from the following file: