[Scummvm-git-logs] scummvm master -> e13588744def229091cc8d3129e439d176ec6265

a-yyg 76591232+a-yyg at users.noreply.github.com
Thu Jul 1 15:08:48 UTC 2021


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:
e13588744d SAGA2: Fix more global constructor warnings


Commit: e13588744def229091cc8d3129e439d176ec6265
    https://github.com/scummvm/scummvm/commit/e13588744def229091cc8d3129e439d176ec6265
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-07-02T00:06:55+09:00

Commit Message:
SAGA2: Fix more global constructor warnings

Changed paths:
    engines/saga2/dispnode.cpp
    engines/saga2/dispnode.h
    engines/saga2/objects.h
    engines/saga2/tcoords.h
    engines/saga2/tile.cpp
    engines/saga2/tile.h
    engines/saga2/tilemode.cpp


diff --git a/engines/saga2/dispnode.cpp b/engines/saga2/dispnode.cpp
index cc31d73293..ed3c8380e4 100644
--- a/engines/saga2/dispnode.cpp
+++ b/engines/saga2/dispnode.cpp
@@ -814,7 +814,7 @@ void DisplayNode::drawObject(void) {
 //-----------------------------------------------------------------------
 //	Do mouse hit-test on objects
 
-ObjectID pickObject(const Point16 &mouse, TilePoint &objPos) {
+ObjectID pickObject(const Point16 &mouse, StaticTilePoint &objPos) {
 	DisplayNode     *dn;
 	ObjectID        result = Nothing;
 	int32           dist = maxint32;
@@ -871,7 +871,7 @@ ObjectID pickObject(const Point16 &mouse, TilePoint &objPos) {
 					if (GetSpritePixel(spr, flipped, testPoint)) {
 						dist = newDist;
 						result = obj->thisID();
-						objPos = loc;
+						objPos.set(loc.u, loc.v, loc.z);
 						objPos.z += MAX(-spr->offset.y - testPoint.y, 0);
 					} else if (result == Nothing) { //  If no object found yet
 						Point16     testPoint2;
@@ -890,7 +890,7 @@ ObjectID pickObject(const Point16 &mouse, TilePoint &objPos) {
 						for (testPoint2.x = minX; testPoint2.x <= maxX; testPoint2.x++) {
 							if (GetSpritePixel(spr, flipped, testPoint2)) {
 								result = obj->thisID();
-								objPos = loc;
+								objPos.set(loc.u, loc.v, loc.z);
 								objPos.z += MAX(-spr->offset.y - testPoint.y, 0);
 								break;
 							}
diff --git a/engines/saga2/dispnode.h b/engines/saga2/dispnode.h
index 5fd8c4df94..a77fdbe08c 100644
--- a/engines/saga2/dispnode.h
+++ b/engines/saga2/dispnode.h
@@ -34,6 +34,7 @@ namespace Saga2 {
 
 class GameObject;
 struct TilePoint;
+struct StaticTilePoint;
 
 class Effectron;
 
@@ -47,7 +48,7 @@ class DisplayNode {
 	friend class    DisplayNodeList;
 	friend class    SpellDisplayList;
 	friend class    GameObject;
-	friend ObjectID pickObject(const Point16 &mouse, TilePoint &objPos);
+	friend ObjectID pickObject(const Point16 &mouse, StaticTilePoint &objPos);
 
 private:
 	DisplayNode             *nextDisplayed;         // pointer to next in display list
@@ -84,7 +85,7 @@ public:
 const int           maxDisplayed = 100;
 
 class DisplayNodeList {
-	friend ObjectID pickObject(const Point16 &mouse, TilePoint &objPos);
+	friend ObjectID pickObject(const Point16 &mouse, StaticTilePoint &objPos);
 
 public:
 	uint16              count;                  // number of entries in list
diff --git a/engines/saga2/objects.h b/engines/saga2/objects.h
index 89b1595fab..b62a73a251 100644
--- a/engines/saga2/objects.h
+++ b/engines/saga2/objects.h
@@ -1349,7 +1349,7 @@ bool lineOfSight(
 bool objObscured(GameObject *testObj);
 
 //  Determine which object mouse pointer is picking
-ObjectID pickObject(const Point16 &mouse, TilePoint &objPos);
+ObjectID pickObject(const Point16 &mouse, StaticTilePoint &objPos);
 
 //  Create enchantment attach it to object
 ObjectID EnchantObject(
diff --git a/engines/saga2/tcoords.h b/engines/saga2/tcoords.h
index 7471471f03..d27cd7fc8f 100644
--- a/engines/saga2/tcoords.h
+++ b/engines/saga2/tcoords.h
@@ -88,6 +88,24 @@ struct StaticTilePoint {
 		return p;
 	}
 
+	friend StaticTilePoint operator<<(StaticTilePoint a, int b) {
+		int16 nu = a.u << b;
+		int16 nv = a.v << b;
+		int16 nz = a.z << b;
+		StaticTilePoint p = {nu, nv, nz};
+
+		return p;
+	}
+
+	friend StaticTilePoint operator>>(StaticTilePoint a, int b) {
+		int16 nu = a.u >> b;
+		int16 nv = a.v >> b;
+		int16 nz = a.z >> b;
+		StaticTilePoint p = {nu, nv, nz};
+
+		return p;
+	}
+
 	void operator+=(StaticTilePoint a) {
 		u += a.u;
 		v += a.v;
diff --git a/engines/saga2/tile.cpp b/engines/saga2/tile.cpp
index 5af94ad051..496890c6dc 100644
--- a/engines/saga2/tile.cpp
+++ b/engines/saga2/tile.cpp
@@ -3528,14 +3528,13 @@ void showAbstractTile(const TilePoint &tp, TileInfo *ti) {
 
 //  Compute the picked position as if the mouse were pointing at the same
 //  level as the protagainist's feet.
-TilePoint pickTilePos(Point32 pos, const TilePoint &protagPos) {
-	TilePoint       coords;
+StaticTilePoint pickTilePos(Point32 pos, const TilePoint &protagPos) {
+	StaticTilePoint coords = {0, 0, 0};
 
 	pos.x += tileScroll.x;
 	pos.y += tileScroll.y + protagPos.z;
 
-	coords = XYToUV(pos);
-	coords.z = protagPos.z;
+	coords.set(XYToUV(pos).u, XYToUV(pos).v, protagPos.z);
 
 	return coords;
 }
@@ -4052,11 +4051,12 @@ bool pointOnHiddenSurface(
 //-----------------------------------------------------------------------
 //	Return the TilePoint at which the mouse it pointing
 
-TilePoint pickTile(Point32 pos,
+StaticTilePoint pickTile(Point32 pos,
                    const TilePoint &protagPos,
-                   TilePoint *floorResult,
+                   StaticTilePoint *floorResult,
                    ActiveItemPtr *pickTAI) {
 	WorldMapData    *curMap = &mapList[currentMapNum];
+	StaticTilePoint result = {0, 0, 0};
 
 	TilePoint       pickCoords,
 	                floorCoords,
@@ -4244,16 +4244,22 @@ TilePoint pickTile(Point32 pos,
 		zMax = protagPos.z + kMaxPickHeight + (coords - protagPos).quickHDistance();
 	}
 
+	result.set(pickCoords.u, pickCoords.v, pickCoords.z);
+
 	//  If no tile was found, return the default.
 	if (!bestTile) {
-		if (floorResult) *floorResult = floorCoords;
-		if (pickTAI) *pickTAI = nullptr;
-		return pickCoords;
+		if (floorResult)
+			floorResult->set(floorCoords.u, floorCoords.v, floorCoords.z);
+		if (pickTAI)
+			*pickTAI = nullptr;
+		return result;
 	}
 
-	if (floorResult) *floorResult = floorCoords;
-	if (pickTAI) *pickTAI = bestTileTAI;
-	return pickCoords;
+	if (floorResult)
+		floorResult->set(floorCoords.u, floorCoords.v, floorCoords.z);
+	if (pickTAI)
+		*pickTAI = bestTileTAI;
+	return result;
 }
 
 /* ===================================================================== *
diff --git a/engines/saga2/tile.h b/engines/saga2/tile.h
index 2f4b167cca..d17b3d46a1 100644
--- a/engines/saga2/tile.h
+++ b/engines/saga2/tile.h
@@ -1053,13 +1053,12 @@ uint16 lineDist(
  * ============================================================================ */
 
 //  Converts Local XY to UV coordinates
-TilePoint pickTilePos(Point32 pos, const TilePoint &protagPos);
-TilePoint pickTile(Point32 pos,
+StaticTilePoint pickTilePos(Point32 pos, const TilePoint &protagPos);
+StaticTilePoint pickTile(Point32 pos,
                    const TilePoint &protagPos,
-                   TilePoint *floor = NULL,
+                   StaticTilePoint *floor = NULL,
                    ActiveItemPtr *pickTAI = NULL);
 
-
 //  Function to select a nearby site
 TilePoint selectNearbySite(
     ObjectID        worldID,
diff --git a/engines/saga2/tilemode.cpp b/engines/saga2/tilemode.cpp
index b16a833d36..6044e53406 100644
--- a/engines/saga2/tilemode.cpp
+++ b/engines/saga2/tilemode.cpp
@@ -127,10 +127,10 @@ void incrementActiveFaction(Actor *a);
 
 //  dispatch functions
 static APPFUNC(cmdClickTileMap);                 // appFunc for map display
-TilePoint           tilePickPos,            // mouse coord over tilemap (floor)
-                    tilePickExactPos,       // mouse coord of click on tilemap
-                    objPickPos,             // coord of mouse picked object
-                    walkToPos;              // navigation target location
+static StaticTilePoint tilePickPos = {0, 0, 0},       // mouse coord over tilemap (floor)
+                       tilePickExactPos = {0, 0, 0},  // mouse coord of click on tilemap
+                       objPickPos = {0, 0, 0},        // coord of mouse picked object
+                       walkToPos = {0, 0, 0};         // navigation target location
 
 ObjectID            pickedObject;           // which object picked by mouse
 ActiveItemPtr       pickedTAI;              // which active item instance
@@ -481,7 +481,9 @@ static void evalMouseState(void) {
 						g_vm->_mouseInfo->setIntent(GrabInfo::Attack);
 					else {
 						g_vm->_mouseInfo->setIntent(GrabInfo::WalkTo);
-						walkToPos = obj->getLocation();
+						walkToPos.set(obj->getLocation().u,
+						              obj->getLocation().v,
+						              obj->getLocation().z);
 					}
 				} else
 					//  The mouse is not pointing at an object
@@ -526,7 +528,9 @@ static void evalMouseState(void) {
 						g_vm->_mouseInfo->setDoable(true);
 					} else {
 						g_vm->_mouseInfo->setIntent(GrabInfo::WalkTo);
-						walkToPos = obj->getLocation();
+						walkToPos.set(obj->getLocation().u,
+						              obj->getLocation().v,
+						              obj->getLocation().z);
 					}
 				} else
 					//  Center actor is not aggressive
@@ -541,7 +545,9 @@ static void evalMouseState(void) {
 						    !a->isDead()
 						    ?   GrabInfo::WalkTo
 						    :   GrabInfo::Open);
-						walkToPos = obj->getLocation();
+						walkToPos.set(obj->getLocation().u,
+						              obj->getLocation().v,
+						              obj->getLocation().z);
 					} else {
 						g_vm->_mouseInfo->setIntent(obj->isCarryable()
 						                    ? GrabInfo::PickUp




More information about the Scummvm-git-logs mailing list