[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