[Scummvm-git-logs] scummvm master -> ae779198b98b5f384dd35ffc2e6780208d94e201
OMGPizzaGuy
noreply at scummvm.org
Sat Dec 31 04:40:20 UTC 2022
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
ae779198b9 ULTIMA8: Fix ObjectManager::objectInfo command output
Commit: ae779198b98b5f384dd35ffc2e6780208d94e201
https://github.com/scummvm/scummvm/commit/ae779198b98b5f384dd35ffc2e6780208d94e201
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2022-12-30T22:39:58-06:00
Commit Message:
ULTIMA8: Fix ObjectManager::objectInfo command output
A mix of logging methods caused data to be skipped on the debug console. Building a string in Object::dumpInfo instead of logging allows for flexible use.
Changed paths:
engines/ultima/ultima8/gumps/container_gump.cpp
engines/ultima/ultima8/gumps/game_map_gump.cpp
engines/ultima/ultima8/gumps/target_gump.cpp
engines/ultima/ultima8/kernel/object.cpp
engines/ultima/ultima8/kernel/object.h
engines/ultima/ultima8/misc/debugger.cpp
engines/ultima/ultima8/usecode/uc_machine.cpp
engines/ultima/ultima8/world/actors/actor.cpp
engines/ultima/ultima8/world/actors/actor.h
engines/ultima/ultima8/world/actors/animation_tracker.cpp
engines/ultima/ultima8/world/actors/main_actor.cpp
engines/ultima/ultima8/world/actors/pathfinder.cpp
engines/ultima/ultima8/world/container.cpp
engines/ultima/ultima8/world/container.h
engines/ultima/ultima8/world/current_map.cpp
engines/ultima/ultima8/world/egg.cpp
engines/ultima/ultima8/world/egg.h
engines/ultima/ultima8/world/item.cpp
engines/ultima/ultima8/world/item.h
diff --git a/engines/ultima/ultima8/gumps/container_gump.cpp b/engines/ultima/ultima8/gumps/container_gump.cpp
index ad275297fa0..8a0874c10ae 100644
--- a/engines/ultima/ultima8/gumps/container_gump.cpp
+++ b/engines/ultima/ultima8/gumps/container_gump.cpp
@@ -313,7 +313,7 @@ void ContainerGump::onMouseClick(int button, int32 mx, int32 my) {
Item *item = getItem(objID);
if (item) {
- item->dumpInfo();
+ pout << item->dumpInfo() << Std::endl;
if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
pout << "Can't look: avatarInStasis" << Std::endl;
@@ -334,7 +334,7 @@ void ContainerGump::onMouseDouble(int button, int32 mx, int32 my) {
Item *item = getItem(objID);
if (item) {
- item->dumpInfo();
+ pout << item->dumpInfo() << Std::endl;
if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
pout << "Can't use: avatarInStasis" << Std::endl;
diff --git a/engines/ultima/ultima8/gumps/game_map_gump.cpp b/engines/ultima/ultima8/gumps/game_map_gump.cpp
index 8880d99768c..66312b62574 100644
--- a/engines/ultima/ultima8/gumps/game_map_gump.cpp
+++ b/engines/ultima/ultima8/gumps/game_map_gump.cpp
@@ -303,7 +303,7 @@ void GameMapGump::onMouseClick(int button, int32 mx, int32 my) {
if (item) {
int32 xv, yv, zv;
item->getLocation(xv, yv, zv);
- item->dumpInfo();
+ pout << item->dumpInfo() << Std::endl;
if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
pout << "Can't look: avatarInStasis" << Std::endl;
@@ -319,7 +319,7 @@ void GameMapGump::onMouseClick(int button, int32 mx, int32 my) {
if (item) {
int32 xv, yv, zv;
item->getLocation(xv, yv, zv);
- item->dumpInfo();
+ pout << item->dumpInfo() << Std::endl;
#if 1
Actor *avatarControlled = getControlledActor();
@@ -368,7 +368,7 @@ void GameMapGump::onMouseDouble(int button, int32 mx, int32 my) {
if (item) {
int32 xv, yv, zv;
item->getLocation(xv, yv, zv);
- item->dumpInfo();
+ pout << item->dumpInfo() << Std::endl;
int range = 128; // CONSTANT!
if (GAME_IS_CRUSADER) {
diff --git a/engines/ultima/ultima8/gumps/target_gump.cpp b/engines/ultima/ultima8/gumps/target_gump.cpp
index daff18ae037..7cbb41cf78c 100644
--- a/engines/ultima/ultima8/gumps/target_gump.cpp
+++ b/engines/ultima/ultima8/gumps/target_gump.cpp
@@ -85,8 +85,7 @@ void TargetGump::onMouseUp(int button, int32 mx, int32 my) {
if (item) {
// done
- pout << "Target result: ";
- item->dumpInfo();
+ pout << "Target result: " << item->dumpInfo() << Std::endl;
_processResult = objId;
Close();
diff --git a/engines/ultima/ultima8/kernel/object.cpp b/engines/ultima/ultima8/kernel/object.cpp
index 63715886eee..2247be2d580 100644
--- a/engines/ultima/ultima8/kernel/object.cpp
+++ b/engines/ultima/ultima8/kernel/object.cpp
@@ -50,8 +50,8 @@ void Object::clearObjId() {
_objId = 0xFFFF;
}
-void Object::dumpInfo() const {
- g_debugger->debugPrintf("Object %d (class %s)\n", getObjId(), GetClassType()._className);
+Common::String Object::dumpInfo() const {
+ return Common::String::format("Object %d (class %s)", getObjId(), GetClassType()._className);
}
ProcId Object::callUsecode(uint16 classid, uint16 offset,
diff --git a/engines/ultima/ultima8/kernel/object.h b/engines/ultima/ultima8/kernel/object.h
index a8f89d5420e..6b9944adbc0 100644
--- a/engines/ultima/ultima8/kernel/object.h
+++ b/engines/ultima/ultima8/kernel/object.h
@@ -49,8 +49,8 @@ public:
//! Clear objID of self and contents (if any)
virtual void clearObjId();
- //! dump some info about this object to pout
- virtual void dumpInfo() const;
+ //! dump some info about this object to a string
+ virtual Common::String dumpInfo() const;
//! Spawn a usecode function on this object
//! \param classid The usecode class to run
diff --git a/engines/ultima/ultima8/misc/debugger.cpp b/engines/ultima/ultima8/misc/debugger.cpp
index abdad27b389..a733a6cc28b 100644
--- a/engines/ultima/ultima8/misc/debugger.cpp
+++ b/engines/ultima/ultima8/misc/debugger.cpp
@@ -1479,7 +1479,7 @@ bool Debugger::cmdObjectInfo(int argc, const char **argv) {
else
debugPrintf("No such object: %d\n", objid);
} else {
- obj->dumpInfo();
+ debugPrintf("%s\n", obj->dumpInfo().c_str());
}
}
diff --git a/engines/ultima/ultima8/usecode/uc_machine.cpp b/engines/ultima/ultima8/usecode/uc_machine.cpp
index c7f5791507c..a22dc8fd10d 100644
--- a/engines/ultima/ultima8/usecode/uc_machine.cpp
+++ b/engines/ultima/ultima8/usecode/uc_machine.cpp
@@ -386,7 +386,7 @@ void UCMachine::execProcess(UCProcess *p) {
}
warning("Unhandled intrinsic %u \'%s\'? (%s) called", func, _convUse->intrinsics()[func], info.c_str());
if (testItem) {
- testItem->dumpInfo();
+ warning("%s", testItem->dumpInfo().c_str());
}
} else {
//!! hackish
diff --git a/engines/ultima/ultima8/world/actors/actor.cpp b/engines/ultima/ultima8/world/actors/actor.cpp
index 3db5f80fee0..d45e34c0e02 100644
--- a/engines/ultima/ultima8/world/actors/actor.cpp
+++ b/engines/ultima/ultima8/world/actors/actor.cpp
@@ -1985,15 +1985,11 @@ Actor *Actor::createActor(uint32 shape, uint32 frame) {
return newactor;
}
-void Actor::dumpInfo() const {
- Container::dumpInfo();
-
- pout << " Actor hp: " << _hitPoints << ", mp: " << _mana << ", str: " << _strength
- << ", dex: " << _dexterity << ", int: " << _intelligence
- << ", ac: " << getArmourClass() << ", defense: " << ConsoleStream::hex
- << getDefenseType() << " align: " << getAlignment() << " enemy: "
- << getEnemyAlignment() << ", flags: " << _actorFlags << ", activity: " << _currentActivityNo
- << ConsoleStream::dec << Std::endl;
+Common::String Actor::dumpInfo() const {
+ return Container::dumpInfo() +
+ Common::String::format("; Actor hp: %u, mp: %d, str: %d, dex: %d, int: %d, ac: %u, defense: %x, align: %x, enemy: %x, flags: %x, activity: %x",
+ _hitPoints, _mana, _strength, _dexterity, _intelligence, getArmourClass(),
+ getDefenseType(), getAlignment(), getEnemyAlignment(), _actorFlags, _currentActivityNo);
}
void Actor::addFireAnimOffsets(int32 &x, int32 &y, int32 &z) {
diff --git a/engines/ultima/ultima8/world/actors/actor.h b/engines/ultima/ultima8/world/actors/actor.h
index cb59e494d8c..bcd624dcfd5 100644
--- a/engines/ultima/ultima8/world/actors/actor.h
+++ b/engines/ultima/ultima8/world/actors/actor.h
@@ -277,7 +277,7 @@ public:
uint16 assignObjId() override; // assign an NPC objid
- void dumpInfo() const override;
+ Common::String dumpInfo() const override;
bool loadData(Common::ReadStream *rs, uint32 version);
void saveData(Common::WriteStream *ws) override;
diff --git a/engines/ultima/ultima8/world/actors/animation_tracker.cpp b/engines/ultima/ultima8/world/actors/animation_tracker.cpp
index 923cdb52309..c5499a0fefd 100644
--- a/engines/ultima/ultima8/world/actors/animation_tracker.cpp
+++ b/engines/ultima/ultima8/world/actors/animation_tracker.cpp
@@ -498,8 +498,7 @@ void AnimationTracker::checkWeaponHit() {
hit = itemid;
#ifdef WATCHACTOR
if (a->getObjId() == watchactor) {
- pout << "hit: ";
- item->dumpInfo();
+ pout << "hit: " << item->dumpInfo() << Std::endl;
}
#endif
break;
diff --git a/engines/ultima/ultima8/world/actors/main_actor.cpp b/engines/ultima/ultima8/world/actors/main_actor.cpp
index cece6763b37..3700b81f908 100644
--- a/engines/ultima/ultima8/world/actors/main_actor.cpp
+++ b/engines/ultima/ultima8/world/actors/main_actor.cpp
@@ -419,7 +419,7 @@ void MainActor::teleport(int mapNum, int teleport_id) {
egg->getLocation(xv, yv, zv);
pout << "Found destination: " << xv << "," << yv << "," << zv << Std::endl;
- egg->dumpInfo();
+ pout << egg->dumpInfo() << Std::endl;
if (GAME_IS_CRUSADER) {
// Keep the camera on the avatar (the snap process will update on next move)
diff --git a/engines/ultima/ultima8/world/actors/pathfinder.cpp b/engines/ultima/ultima8/world/actors/pathfinder.cpp
index e24915e82ce..78dbf3529fe 100644
--- a/engines/ultima/ultima8/world/actors/pathfinder.cpp
+++ b/engines/ultima/ultima8/world/actors/pathfinder.cpp
@@ -501,7 +501,7 @@ void Pathfinder::expandNode(PathNode *node) {
bool Pathfinder::pathfind(Std::vector<PathfindingAction> &path) {
if (_targetItem) {
debugC(kDebugPath, "Actor %u pathfinding to item %u", _actor->getObjId(), _targetItem->getObjId());
- _targetItem->dumpInfo();
+ debugC(kDebugPath, "Target Item: %s", _targetItem->dumpInfo().c_str());
} else {
debugC(kDebugPath, "Actor %u pathfinding to (%d, %d, %d)", _actor->getObjId(), _targetX, _targetY, _targetZ);
}
diff --git a/engines/ultima/ultima8/world/container.cpp b/engines/ultima/ultima8/world/container.cpp
index e0086a60c5c..bd7bce260e3 100644
--- a/engines/ultima/ultima8/world/container.cpp
+++ b/engines/ultima/ultima8/world/container.cpp
@@ -325,12 +325,10 @@ void Container::getItemsWithShapeFamily(Std::vector<Item *> &itemlist, uint16 fa
}
-void Container::dumpInfo() const {
- Item::dumpInfo();
-
- pout << " Container vol: " << getContentVolume() << "/" << getCapacity()
- << ", total weight: " << getTotalWeight()
- << ", items: " << _contents.size() << Std::endl;
+Common::String Container::dumpInfo() const {
+ return Item::dumpInfo() +
+ Common::String::format("; Container vol: %u/%u, total weight: %u, items: %u",
+ getContentVolume(), getCapacity(), getTotalWeight(), _contents.size());
}
void Container::saveData(Common::WriteStream *ws) {
diff --git a/engines/ultima/ultima8/world/container.h b/engines/ultima/ultima8/world/container.h
index 4d4feef0746..1511dc8e9fe 100644
--- a/engines/ultima/ultima8/world/container.h
+++ b/engines/ultima/ultima8/world/container.h
@@ -114,7 +114,7 @@ public:
//! Destroy self
void destroy(bool delnow = false) override;
- void dumpInfo() const override;
+ Common::String dumpInfo() const override;
bool loadData(Common::ReadStream *rs, uint32 version);
void saveData(Common::WriteStream *ws) override;
diff --git a/engines/ultima/ultima8/world/current_map.cpp b/engines/ultima/ultima8/world/current_map.cpp
index bc1ec5b0cf0..9da8b305886 100644
--- a/engines/ultima/ultima8/world/current_map.cpp
+++ b/engines/ultima/ultima8/world/current_map.cpp
@@ -817,7 +817,7 @@ bool CurrentMap::isValidPosition(int32 x, int32 y, int32 z,
startz + zd <= iz || startz >= iz + izd)) {
// overlapping an item. Invalid position
#if 0
- item->dumpInfo();
+ pout << item->dumpInfo() << Std::endl;
#endif
if (blocker == nullptr) {
blocker = item;
@@ -1390,8 +1390,7 @@ uint32 CurrentMap::I_canExistAtPoint(const uint8 *args, unsigned int /*argsize*/
ARG_WORLDPOINT(pt);
if (other) {
- debug("I_canExistAtPoint other object: ");
- other->dumpInfo();
+ debug("I_canExistAtPoint other object: %s", other->dumpInfo().c_str());
} else {
debug("I_canExistAtPoint other object null.");
}
diff --git a/engines/ultima/ultima8/world/egg.cpp b/engines/ultima/ultima8/world/egg.cpp
index cbff9c90445..c61f7a795bd 100644
--- a/engines/ultima/ultima8/world/egg.cpp
+++ b/engines/ultima/ultima8/world/egg.cpp
@@ -52,10 +52,9 @@ uint16 Egg::unhatch() {
return 0;
}
-void Egg::dumpInfo() const {
- Item::dumpInfo();
- pout << "range: " << getXRange() << "," << getYRange()
- << ", hatched=" << _hatched << Std::endl;
+Common::String Egg::dumpInfo() const {
+ return Item::dumpInfo() +
+ Common::String::format(", range: %d, %d, hatched=%d", getXRange(), getYRange(), _hatched);
}
void Egg::leaveFastArea() {
diff --git a/engines/ultima/ultima8/world/egg.h b/engines/ultima/ultima8/world/egg.h
index 4287415f357..9a94a4b7fda 100644
--- a/engines/ultima/ultima8/world/egg.h
+++ b/engines/ultima/ultima8/world/egg.h
@@ -65,7 +65,7 @@ public:
_hatched = false;
}
- void dumpInfo() const override;
+ Common::String dumpInfo() const override;
bool loadData(Common::ReadStream *rs, uint32 version);
void saveData(Common::WriteStream *ws) override;
diff --git a/engines/ultima/ultima8/world/item.cpp b/engines/ultima/ultima8/world/item.cpp
index b46efb58909..6fdf8543920 100644
--- a/engines/ultima/ultima8/world/item.cpp
+++ b/engines/ultima/ultima8/world/item.cpp
@@ -84,38 +84,35 @@ Item::Item()
Item::~Item() {
}
-void Item::dumpInfo() const {
- pout << "Item " << getObjId() << " (class "
- << GetClassType()._className << ", shape "
- << getShape();
+Common::String Item::dumpInfo() const {
+ Common::String info = Common::String::format("Item %u (class %s, shape %u)", getObjId(), GetClassType()._className, getShape());
const char *ucname = GameData::get_instance()->getMainUsecode()->get_class_name(_shape);
if (ucname != nullptr) {
- pout << " (uc:" << ucname << ")";
+ info += Common::String::format(" (uc: %s)", ucname);
}
- pout << ", " << getFrame() << ", (";
+ info += Common::String::format(", %u, (", getFrame());
if (_parent) {
int32 gx, gy;
getGumpLocation(gx, gy);
- pout << gx << "," << gy;
+ info += Common::String::format("%d, %d", gx, gy);
} else {
- pout << _x << "," << _y << "," << _z;
+ info += Common::String::format("%d, %d, %d", _x, _y, _z);
}
- pout << ") q:" << getQuality()
- << ", m:" << getMapNum() << ", n:" << getNpcNum()
- << ", f:0x" << ConsoleStream::hex << getFlags() << ", ef:0x"
- << getExtFlags();
+ info += Common::String::format(") q: %u, m: %u, n: %u, f: 0x%x, ef: 0x%x",
+ getQuality(), getMapNum() , getNpcNum(), getFlags(), getExtFlags());
- const ShapeInfo *info = getShapeInfo();
- if (info) {
- pout << " shapeinfo f:" << info->_flags << ", fam:"
- << info->_family << ", et:" << info->_equipType;
+ const ShapeInfo *si = getShapeInfo();
+ if (si) {
+ info += Common::String::format(" shapeinfo f: %x, fam: %x, et: %x",
+ si->_flags, si->_family, si->_equipType);
}
- pout << ")" << ConsoleStream::dec << Std::endl;
+ info += ")";
+ return info;
}
Container *Item::getParentAsContainer() const {
@@ -3486,7 +3483,7 @@ uint32 Item::I_popToContainer(const uint8 *args, unsigned int /*argsize*/) {
item->move(pt);
} else {
warning("Trying to popToContainer to invalid container (%u)", id_citem);
- item->dumpInfo();
+ warning("%s", item->dumpInfo().c_str());
// This object now has no home, destroy it - unless it doesn't think it's
// ethereal, in that case it is somehow there by mistake?
if (item->getFlags() & FLG_ETHEREAL) {
@@ -3529,7 +3526,7 @@ uint32 Item::I_popToEnd(const uint8 *args, unsigned int /*argsize*/) {
item->move(pt);
} else {
warning("Trying to popToEnd to invalid container (%u)", id_citem);
- item->dumpInfo();
+ warning("%s", item->dumpInfo().c_str());
// This object now has no home, destroy it - unless it doesn't think it's
// ethereal, in that case it is somehow there by mistake?
if (item->getFlags() & FLG_ETHEREAL) {
diff --git a/engines/ultima/ultima8/world/item.h b/engines/ultima/ultima8/world/item.h
index e8fd1ef3b6c..67a90f5968d 100644
--- a/engines/ultima/ultima8/world/item.h
+++ b/engines/ultima/ultima8/world/item.h
@@ -497,8 +497,8 @@ public:
//! \note This can destroy the object
virtual void leaveFastArea();
- //! dump some info about this item to pout
- void dumpInfo() const override;
+ //! dump some info about this item to a string
+ Common::String dumpInfo() const override;
bool loadData(Common::ReadStream *rs, uint32 version);
void saveData(Common::WriteStream *ws) override;
More information about the Scummvm-git-logs
mailing list