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

a-yyg 76591232+a-yyg at users.noreply.github.com
Thu Aug 12 06:09:22 UTC 2021


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
1064e963a0 SAGA2: Implement teleportOnMap command
b2ac6c2244 SAGA2: Change teleportOnClick to use right click


Commit: 1064e963a011f63b6acff0a48e5467ec76c2909a
    https://github.com/scummvm/scummvm/commit/1064e963a011f63b6acff0a48e5467ec76c2909a
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-08-12T15:05:13+09:00

Commit Message:
SAGA2: Implement teleportOnMap command

Changed paths:
    engines/saga2/automap.cpp
    engines/saga2/console.cpp
    engines/saga2/console.h
    engines/saga2/saga2.cpp
    engines/saga2/saga2.h


diff --git a/engines/saga2/automap.cpp b/engines/saga2/automap.cpp
index 387d8df170..01fbabe93d 100644
--- a/engines/saga2/automap.cpp
+++ b/engines/saga2/automap.cpp
@@ -323,6 +323,25 @@ bool CAutoMap::pointerHit(gPanelMessage &msg) {
 
 	if (Rect16(0, 0, extent.width, extent.height).ptInside(pos)) {
 		// mouse hit inside autoMap
+
+		if (g_vm->_teleportOnMap) {
+			TilePoint centerPt = TilePoint(((259 - pos.y) << (kTileUVShift + kPlatShift - 2)) + ((pos.x - 265) << (kTileUVShift + kPlatShift - 3)),
+										((259 - pos.y) << (kTileUVShift + kPlatShift - 2)) - ((pos.x - 265) << (kTileUVShift + kPlatShift - 3)),
+										0);
+
+			TilePoint pt = centerPt + (baseCoords << (kTileUVShift + kPlatShift));
+
+			Actor *a = getCenterActor();
+
+			int du = pt.u - a->getLocation().u;
+			int dv = pt.v - a->getLocation().v;
+
+			for (ObjectID pid = ActorBaseID; pid < ActorBaseID + kPlayerActors; ++pid) {
+				Actor *p = (Actor *)GameObject::objectAddress(pid);
+				TilePoint curLoc = p->getLocation();
+				p->setLocation(TilePoint(curLoc.u + du, curLoc.v + dv, 8));
+			}
+		}
 	} else {
 		// mouse hit outside autoMap area, close it
 		gWindow         *win;
diff --git a/engines/saga2/console.cpp b/engines/saga2/console.cpp
index f3a9221c25..202ef4d2e2 100644
--- a/engines/saga2/console.cpp
+++ b/engines/saga2/console.cpp
@@ -63,6 +63,8 @@ Console::Console(Saga2Engine *vm) : GUI::Debugger() {
 
 	registerCmd("teleport_on_click", WRAP_METHOD(Console, cmdTeleportOnClick));
 
+	registerCmd("teleport_on_map", WRAP_METHOD(Console, cmdTeleportOnMap));
+
 	registerCmd("teleport", WRAP_METHOD(Console, cmdTeleport));
 
 	registerCmd("teleport_to_npc", WRAP_METHOD(Console, cmdTeleportToNPC));
@@ -233,6 +235,17 @@ bool Console::cmdTeleportOnClick(int argc, const char **argv) {
 	return true;
 }
 
+bool Console::cmdTeleportOnMap(int argc, const char **argv) {
+	if (argc != 2)
+		debugPrintf("Usage: %s <1/0>\n", argv[0]);
+	else {
+		bool teleport = atoi(argv[1]);
+		_vm->_teleportOnMap = teleport;
+	}
+
+	return true;
+}
+
 bool Console::cmdTeleport(int argc, const char **argv) {
 	if (argc != 4)
 		debugPrintf("Usage: %s <u> <v> <z>\n", argv[0]);
diff --git a/engines/saga2/console.h b/engines/saga2/console.h
index 1601bc2036..aa21a4afce 100644
--- a/engines/saga2/console.h
+++ b/engines/saga2/console.h
@@ -61,6 +61,8 @@ private:
 
 	bool cmdTeleportOnClick(int argc, const char **argv);
 
+	bool cmdTeleportOnMap(int argc, const char **argv);
+
 	bool cmdTeleport(int argc, const char **argv);
 
 	bool cmdTeleportToNPC(int argc, const char **argv);
diff --git a/engines/saga2/saga2.cpp b/engines/saga2/saga2.cpp
index 0335d65d1c..f8f35d75b6 100644
--- a/engines/saga2/saga2.cpp
+++ b/engines/saga2/saga2.cpp
@@ -76,6 +76,7 @@ Saga2Engine::Saga2Engine(OSystem *syst)
 	_showPosition = false;
 	_showStats = false;
 	_teleportOnClick = false;
+	_teleportOnMap = false;
 
 	SearchMan.addSubDirectoryMatching(gameDataDir, "res");
 	SearchMan.addSubDirectoryMatching(gameDataDir, "dos/drivers"); // For Miles Sound files
diff --git a/engines/saga2/saga2.h b/engines/saga2/saga2.h
index 15d4dbc92d..602efacbb1 100644
--- a/engines/saga2/saga2.h
+++ b/engines/saga2/saga2.h
@@ -178,6 +178,7 @@ public:
 	bool _showNight;
 	bool _speechText;
 	bool _teleportOnClick;
+	bool _teleportOnMap;
 
 	bool _showPosition;
 	bool _showStats;


Commit: b2ac6c224485a19b51164124cf3051a24cf20c60
    https://github.com/scummvm/scummvm/commit/b2ac6c224485a19b51164124cf3051a24cf20c60
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-08-12T15:05:13+09:00

Commit Message:
SAGA2: Change teleportOnClick to use right click

Changed paths:
    engines/saga2/tilemode.cpp


diff --git a/engines/saga2/tilemode.cpp b/engines/saga2/tilemode.cpp
index 1d04c83463..bab07f3d29 100644
--- a/engines/saga2/tilemode.cpp
+++ b/engines/saga2/tilemode.cpp
@@ -1040,7 +1040,9 @@ static APPFUNC(cmdClickTileMap) {
 #if CHEATMOVE
 		selectedObject = pickedObject;
 #endif
-		if (isActor(pickedObject)) {
+		if (g_vm->_teleportOnClick) {
+			getCenterActor()->setLocation(walkToPos);
+		} else if (isActor(pickedObject)) {
 			PlayerActorID       playerID;
 
 			if (actorIDToPlayerID(pickedObject, playerID))
@@ -1223,9 +1225,7 @@ static APPFUNC(cmdClickTileMap) {
 			//  We're not pointing at an object and the mouse cursor
 			//  does not have an object
 			else {
-				if (g_vm->_teleportOnClick) {
-					getCenterActor()->setLocation(walkToPos);
-				} else if (g_vm->_mouseInfo->getIntent() == GrabInfo::WalkTo
+				if (g_vm->_mouseInfo->getIntent() == GrabInfo::WalkTo
 				        &&  g_vm->_mouseInfo->getDoable()) {
 					if (pickedTAI == NULL) {
 						navigateDirect(walkToPos, false);




More information about the Scummvm-git-logs mailing list