[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