[Scummvm-git-logs] scummvm master -> 81d7a7b1f7435beb1399f344331278579eb237d8

OMGPizzaGuy noreply at scummvm.org
Fri May 17 01:01:36 UTC 2024


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:
81d7a7b1f7 ULTIMA8: Show stat changes when dragging items over paperdoll.


Commit: 81d7a7b1f7435beb1399f344331278579eb237d8
    https://github.com/scummvm/scummvm/commit/81d7a7b1f7435beb1399f344331278579eb237d8
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2024-05-16T20:01:20-05:00

Commit Message:
ULTIMA8: Show stat changes when dragging items over paperdoll.
Fixes #14034

Changed paths:
    engines/ultima/ultima8/gumps/paperdoll_gump.cpp
    engines/ultima/ultima8/gumps/paperdoll_gump.h


diff --git a/engines/ultima/ultima8/gumps/paperdoll_gump.cpp b/engines/ultima/ultima8/gumps/paperdoll_gump.cpp
index 837eb662f33..53230cc6745 100644
--- a/engines/ultima/ultima8/gumps/paperdoll_gump.cpp
+++ b/engines/ultima/ultima8/gumps/paperdoll_gump.cpp
@@ -79,6 +79,7 @@ static const int statbuttony = 84;
 
 
 PaperdollGump::PaperdollGump() : ContainerGump(), _statButtonId(0),
+		_draggingArmourClass(0), _draggingWeight(0),
 		_backpackRect(49, 25, 59, 50) {
 	Common::fill(_cachedText, _cachedText + 14, (RenderedText *)nullptr);
 	Common::fill(_cachedVal, _cachedVal + 7, 0);
@@ -87,7 +88,8 @@ PaperdollGump::PaperdollGump() : ContainerGump(), _statButtonId(0),
 PaperdollGump::PaperdollGump(const Shape *shape, uint32 frameNum, uint16 owner,
 		uint32 Flags, int32 layer)
 		: ContainerGump(shape, frameNum, owner, Flags, layer),
-		_statButtonId(0), _backpackRect(49, 25, 59, 50) {
+		_statButtonId(0), _draggingArmourClass(0), _draggingWeight(0),
+		_backpackRect(49, 25, 59, 50) {
 	_statButtonId = 0;
 
 	Common::fill(_cachedText, _cachedText + 14, (RenderedText *)nullptr);
@@ -167,13 +169,20 @@ void PaperdollGump::PaintStats(RenderSurface *surf, int32 lerp_factor) {
 	Actor *a = getActor(_owner);
 	assert(a);
 
+	int armour = a->getArmourClass();
+	int weight = a->getTotalWeight();
+	if (_displayDragging) {
+		armour += _draggingArmourClass;
+		weight += _draggingWeight;
+	}
+
 	PaintStat(surf, 0, _TL_("STR"), a->getStr());
 	PaintStat(surf, 1, _TL_("INT"), a->getInt());
 	PaintStat(surf, 2, _TL_("DEX"), a->getDex());
-	PaintStat(surf, 3, _TL_("ARMR"), a->getArmourClass());
+	PaintStat(surf, 3, _TL_("ARMR"), armour);
 	PaintStat(surf, 4, _TL_("HITS"), a->getHP());
 	PaintStat(surf, 5, _TL_("MANA"), a->getMana());
-	PaintStat(surf, 6, _TL_("WGHT"), a->getTotalWeight() / 10);
+	PaintStat(surf, 6, _TL_("WGHT"), weight / 10);
 }
 
 void PaperdollGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled) {
@@ -338,8 +347,14 @@ bool PaperdollGump::DraggingItem(Item *item, int mx, int my) {
 	_draggingShape = item->getShape();
 	_draggingFrame = item->getFrame();
 	_draggingFlags = item->getFlags();
+	_draggingArmourClass = 0;
+	_draggingWeight = 0;
 
-	int equiptype = item->getShapeInfo()->_equipType;
+	if (item->getTopItem()->getObjId() != _owner)
+		_draggingWeight = item->getWeight();
+
+	const ShapeInfo *si = item->getShapeInfo();
+	int equiptype = si->_equipType;
 	// determine target location and set dragging_x/y
 	if (!over_backpack && equiptype) {
 		// check if item will fit (weight/volume/etc...)
@@ -348,6 +363,13 @@ bool PaperdollGump::DraggingItem(Item *item, int mx, int my) {
 			return false;
 		}
 
+		if (si->_armourInfo) {
+			_draggingArmourClass += si->_armourInfo[_draggingFrame]._armourClass;
+		}
+		if (si->_weaponInfo) {
+			_draggingArmourClass += si->_weaponInfo->_armourBonus;
+		}
+
 		_draggingFrame++;
 		_draggingX = equipcoords[equiptype].x;
 		_draggingY = equipcoords[equiptype].y;
@@ -367,6 +389,8 @@ bool PaperdollGump::DraggingItem(Item *item, int mx, int my) {
 
 void PaperdollGump::DropItem(Item *item, int mx, int my) {
 	_displayDragging = false;
+	_draggingArmourClass = 0;
+	_draggingWeight = 0;
 
 	Actor *a = getActor(_owner);
 	assert(a);
diff --git a/engines/ultima/ultima8/gumps/paperdoll_gump.h b/engines/ultima/ultima8/gumps/paperdoll_gump.h
index 9ef786196dd..cfdb265e063 100644
--- a/engines/ultima/ultima8/gumps/paperdoll_gump.h
+++ b/engines/ultima/ultima8/gumps/paperdoll_gump.h
@@ -81,6 +81,10 @@ protected:
 	int _cachedVal[7]; // constant!!
 
 	uint16 _statButtonId;
+
+	uint32 _draggingArmourClass;
+	uint32 _draggingWeight;
+
 private:
 	const Rect _backpackRect;
 };




More information about the Scummvm-git-logs mailing list