[Scummvm-git-logs] scummvm master -> 17df8305000cf5f52593f1807d4a913526de2188
dreammaster
paulfgilbert at gmail.com
Sat Oct 12 03:54:55 CEST 2019
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
a14550d7f1 GLK: Make glui32 match uint to hopefully prevent Amiga compilation errors
d41d11f390 GLK: JACL: Remove deprecated glk_startup.cpp
e779ebce4f GLK: JACL: Implement loading saves from the launcher
17df830500 GLK: JACL: Move JACL out of RELEASE_BUILD exclusion
Commit: a14550d7f1893be72a59f3653cf9e69a43b9077a
https://github.com/scummvm/scummvm/commit/a14550d7f1893be72a59f3653cf9e69a43b9077a
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2019-10-11T18:43:34-07:00
Commit Message:
GLK: Make glui32 match uint to hopefully prevent Amiga compilation errors
Changed paths:
engines/glk/glk_types.h
diff --git a/engines/glk/glk_types.h b/engines/glk/glk_types.h
index d3db3d4..be2ccb4 100644
--- a/engines/glk/glk_types.h
+++ b/engines/glk/glk_types.h
@@ -247,7 +247,7 @@ struct gidispatch_intconst_struct {
};
typedef gidispatch_intconst_struct gidispatch_intconst_t;
-typedef uint32 glui32;
+typedef uint glui32;
} // End of namespace Glk
Commit: d41d11f390200c09b465d8b4147bf59e26799101
https://github.com/scummvm/scummvm/commit/d41d11f390200c09b465d8b4147bf59e26799101
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2019-10-11T18:43:34-07:00
Commit Message:
GLK: JACL: Remove deprecated glk_startup.cpp
Changed paths:
R engines/glk/jacl/glk_startup.cpp
engines/glk/jacl/jacl_main.cpp
engines/glk/module.mk
diff --git a/engines/glk/jacl/glk_startup.cpp b/engines/glk/jacl/glk_startup.cpp
deleted file mode 100644
index b49a6cd..0000000
--- a/engines/glk/jacl/glk_startup.cpp
+++ /dev/null
@@ -1,166 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "glk/jacl/jacl.h"
-#include "glk/jacl/constants.h"
-#include "glk/jacl/language.h"
-#include "glk/jacl/prototypes.h"
-#include "glk/jacl/version.h"
-#include "glk/glk_api.h"
-#include "glk/streams.h"
-
-namespace Glk {
-namespace JACL {
-
-int jpp_error = FALSE;
-
-extern strid_t game_stream;
-extern char game_file[];
-extern char temp_buffer[];
-extern char error_buffer[];
-extern char processed_file[];
-
-short int encrypt;
-extern short int release;
-
-struct glkunix_startup_t {
- int argc;
- char **argv;
-};
-
-struct glkunix_argumentlist_t {
- const char *_switch;
- int _value;
- const char *_description;
-};
-
-glkunix_startup_t *arguments;
-
-/* THE STREAM FOR OPENING UP THE ARCHIVE CONTAINING GRAPHICS AND SOUND */
-extern strid_t blorb_stream;
-
-/* PROTOTYPE FOR NEEDED UTILITY FUNCTION */
-void create_paths();
-
-#ifdef UNUSED
-glkunix_argumentlist_t glkunix_arguments[] = {
- {"", glkunix_arg_ValueFollows, "filename: The game file to load." },
-
- {"-noencrypt", glkunix_arg_NoValue, "-noencrypt: Don't encrypt the processed game file."},
- {"-release", glkunix_arg_NoValue, "-release: Don't include the debug libraries in the .j2 file."},
- { NULL, glkunix_arg_End, NULL }
-};
-
-int glkunix_startup_code(glkunix_startup_t *data) {
- int index = 0;
-
- arguments = data;
-
-#ifdef GARGLK
- sprintf(temp_buffer, "JACL %d.%d.%d", J_VERSION, J_RELEASE, J_BUILD);
- garglk_set_program_name(temp_buffer);
- sprintf(temp_buffer, "JACL %d.%d.%d by Stuart Allen.\n", J_VERSION, J_RELEASE, J_BUILD);
- garglk_set_program_info(temp_buffer);
-#endif
-
- /* YOU CAN PUT OTHER STARTUP CODE IN glkunix_startup_code(). THIS SHOULD
- * GENERALLY BE LIMITED TO FINDING AND OPENING DATA FILES. */
-
- if (arguments->argc == 1) {
- sprintf(error_buffer, "%s^", NO_GAME);
- jpp_error = TRUE;
-
- /* WE NEED TO RETURN TRUE HERE SO THE INTERPRETER WILL OPEN A
- * GLK WINDOWS TO DISPLAY THE ERROR MESSAGE IN */
- return (TRUE);
- } else {
- strcpy(temp_buffer, arguments->argv[1]);
-
- /* THERE IS AT LEAST ONE ARGUMENT, POSSIBLY JUST THE GAME FILE, BUT
- * LOOK THROUGH THE LIST FOR ANYTHING THAT NEEDS ACTING ON */
- for (index = 0; index < data->argc; index++) {
- if (!strcmp(*data->argv, "-noencrypt")) {
- encrypt = FALSE;
- } else if (!strcmp(*data->argv, "-release")) {
- release = TRUE;
- }
-
- /* INCREMENT THE POINTER TO THE NEXT ARGUMENT */
- data->argv++;
- }
- }
-
- /* SETUP ALL THE EXPECTED PATHS */
- //create_paths(temp_buffer);
-
- /* PREPROCESS THE FILE AND WRITE IT OUT TO THE NEW FILE */
- /* WARNING: THIS FUNCTION USES stdio FUNCTIONS TO CREATE FILES
- * IN SUBDIRECTORIES. IT IS PORTABLE ACROSS MODERN DESKTOPS, IE
- * WINDOWS, MAC, UNIX ETC, BUT IT'S NOT GLK CODE... */
- if (jpp() == FALSE) {
- jpp_error = TRUE;
-
- /* WE NEED TO RETURN TRUE HERE SO THE INTERPRETER WILL OPEN A
- * GLK WINDOWS TO DISPLAY THE ERROR MESSAGE IN */
- return (TRUE);
- }
-
- /* THIS OPENS AN ARBITRARY FILE, IN READ-ONLY MODE. NOTE THAT THIS FUNCTION
- * IS *ONLY* AVAILABLE DURING glkunix_startup_code(). IT IS INHERENT
- * NON-PORTABLE; IT SHOULD NOT AND CANNOT BE CALLED FROM INSIDE
- * glk_main() NOTE: The middle argument FALSE indicates a binary file. */
- game_stream = glkunix_stream_open_pathname(processed_file, FALSE, 0);
-
- if (!game_stream) {
- strcpy(error_buffer, NOT_FOUND);
- jpp_error = TRUE;
-
- /* WE NEED TO RETURN TRUE HERE SO THE INTERPRETER WILL OPEN A
- * GLK WINDOWS TO DISPLAY THE ERROR MESSAGE IN */
- return (TRUE);
- }
-
- /* SET THE LIBRARY'S IDEA OF THE "CURRENT DIRECTORY" FOR THE EXECUTING
- * PROGRAM. THE ARGUMENT SHOULD BE THE NAME OF A FILE (NOT A DIRECTORY).
- * WHEN THIS IS SET, fileref_create_by_name() WILL CREATE FILES IN THE SAME
- * DIRECTORY AS THAT FILE, AND create_by_prompt() WILL BASE DEFAULT
- * FILENAMES OFF OF THE FILE. IF THIS IS NOT CALLED, THE LIBRARY WORKS IN
- * THE UNIX CURRENT WORKING DIRECTORY, AND PICKS REASONABLE DEFAULT
- * DEFAULTS. */
- glkunix_set_base_file(game_file);
-
- /* Set title of game */
-#ifdef GARGLK
- char *s;
- s = strrchr(game_file, '\\');
- if (!s) s = strrchr(game_file, '/');
- garglk_set_story_name(s ? s + 1 : game_file);
-#endif
-
- /* RETURN TRUE ERRORS OR NOT SO THE MAIN WINDOWS CAN BE OPENED AND
- * ANY ERROR MESSAGE DISPLAYED */
- return (TRUE);
-}
-#endif
-
-} // End of namespace JACL
-} // End of namespace Glk
diff --git a/engines/glk/jacl/jacl_main.cpp b/engines/glk/jacl/jacl_main.cpp
index bc8690a..9059482 100644
--- a/engines/glk/jacl/jacl_main.cpp
+++ b/engines/glk/jacl/jacl_main.cpp
@@ -102,6 +102,7 @@ int start_of_last_command;
int start_of_this_command;
int objects, integers, functions, strings;
+int jpp_error = FALSE;
/* A STREAM FOR THE GAME FILE, WHEN IT'S OPEN. */
strid_t game_stream = NULL;
diff --git a/engines/glk/module.mk b/engines/glk/module.mk
index b3a88ea..b9deea3 100644
--- a/engines/glk/module.mk
+++ b/engines/glk/module.mk
@@ -183,7 +183,6 @@ MODULE_OBJS := \
jacl/errors.o \
jacl/findroute.o \
jacl/glk_saver.o \
- jacl/glk_startup.o \
jacl/interpreter.o \
jacl/jacl.o \
jacl/jacl_main.o \
Commit: e779ebce4f5b68989708679fed13d06cad6197b2
https://github.com/scummvm/scummvm/commit/e779ebce4f5b68989708679fed13d06cad6197b2
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2019-10-11T18:43:34-07:00
Commit Message:
GLK: JACL: Implement loading saves from the launcher
Changed paths:
engines/glk/jacl/interpreter.cpp
engines/glk/jacl/jacl.cpp
engines/glk/jacl/jacl.h
engines/glk/jacl/jacl_main.cpp
diff --git a/engines/glk/jacl/interpreter.cpp b/engines/glk/jacl/interpreter.cpp
index 1203f65..38c618a 100644
--- a/engines/glk/jacl/interpreter.cpp
+++ b/engines/glk/jacl/interpreter.cpp
@@ -1094,7 +1094,7 @@ int execute(const char *funcname) {
noproprun();
return (exit_function(TRUE));
} else {
- if (g_vm->glk_image_draw(mainwin, (glui32) value_of(word[1], TRUE), imagealign_InlineDown, 0) == 0) {
+ if (!g_vm->loadingSavegame() && g_vm->glk_image_draw(mainwin, (glui32) value_of(word[1], TRUE), imagealign_InlineDown, 0) == 0) {
sprintf(error_buffer, "Unable to draw image: %ld", value_of(word[1], FALSE));
log_error(error_buffer, PLUS_STDERR);
}
diff --git a/engines/glk/jacl/jacl.cpp b/engines/glk/jacl/jacl.cpp
index daeffe9..d299059 100644
--- a/engines/glk/jacl/jacl.cpp
+++ b/engines/glk/jacl/jacl.cpp
@@ -22,6 +22,7 @@
#include "glk/jacl/jacl.h"
#include "glk/jacl/prototypes.h"
+#include "glk/jacl/types.h"
#include "common/config-manager.h"
namespace Glk {
@@ -68,5 +69,16 @@ Common::Error JACL::writeGameData(Common::WriteStream *ws) {
return success ? Common::kNoError : Common::kWritingFailed;
}
+bool JACL::loadLauncherSavegame() {
+ int saveSlot = _saveSlot;
+ _saveSlot = -1;
+
+ if (loadGameState(saveSlot).getCode() == Common::kNoError)
+ return true;
+
+ write_text(cstring_resolve("CANT_RESTORE")->value);
+ return false;
+}
+
} // End of namespace JACL
} // End of namespace Glk
diff --git a/engines/glk/jacl/jacl.h b/engines/glk/jacl/jacl.h
index b49b121..958238d 100644
--- a/engines/glk/jacl/jacl.h
+++ b/engines/glk/jacl/jacl.h
@@ -80,6 +80,11 @@ public:
bool loadingSavegame() const {
return _saveSlot != -1;
}
+
+ /**
+ * Does the actual loading of the savegame from a luancher
+ */
+ bool loadLauncherSavegame();
};
extern JACL *g_vm;
diff --git a/engines/glk/jacl/jacl_main.cpp b/engines/glk/jacl/jacl_main.cpp
index 9059482..1b6b34b 100644
--- a/engines/glk/jacl/jacl_main.cpp
+++ b/engines/glk/jacl/jacl_main.cpp
@@ -262,6 +262,7 @@ void glk_main() {
return;
}
+
/* DUMMY RETRIEVE OF 'HERE' FOR TESTING OF GAME STATE */
get_here();
@@ -289,70 +290,82 @@ void glk_main() {
jacl_set_window(inputwin);
}
- /* OUTPUT THE CUSTOM COMMAND PROMPT */
- write_text(string_resolve("command_prompt")->value);
+ // If loading a savegame from the launcher, do it now
+ if (g_vm->loadingSavegame()) {
+ // Load the game
+ if (g_vm->loadLauncherSavegame()) {
+ // Do a look action
+ const uint32 LOOK[5] = { 'l', 'o', 'o', 'k', 0 };
+ Common::copy(LOOK, LOOK + 5, command_buffer_uni);
+ ev.val1 = 4;
+ } else {
+ continue;
+ }
+ } else {
+ /* OUTPUT THE CUSTOM COMMAND PROMPT */
+ write_text(string_resolve("command_prompt")->value);
#ifdef NOUNICODE
- g_vm->glk_request_line_event(inputwin, command_buffer, 255, 0);
+ g_vm->glk_request_line_event(inputwin, command_buffer, 255, 0);
#else
- g_vm->glk_request_line_event_uni(inputwin, command_buffer_uni, 255, 0);
+ g_vm->glk_request_line_event_uni(inputwin, command_buffer_uni, 255, 0);
#endif
- jacl_set_window(inputwin);
+ jacl_set_window(inputwin);
- gotline = FALSE;
+ gotline = FALSE;
+
+ while (!gotline) {
+ /* GRAB AN EVENT. */
+ g_vm->glk_select(&ev);
+ if (g_vm->shouldQuit())
+ return;
+
+ switch (ev.type) {
+
+ case evtype_LineInput:
+ if (ev.window == inputwin) {
+ gotline = TRUE;
+ jacl_set_window(mainwin);
+ /* REALLY THE EVENT CAN *ONLY* BE FROM MAINWIN,
+ * BECAUSE WE NEVER REQUEST LINE INPUT FROM THE
+ * STATUS WINDOW. BUT WE DO A PARANOIA TEST,
+ * BECAUSE COMMANDBUF IS ONLY FILLED IF THE LINE
+ * EVENT COMES FROM THE MAINWIN REQUEST. IF THE
+ * LINE EVENT COMES FROM ANYWHERE ELSE, WE IGNORE
+ * IT. */
+ }
+ break;
- while (!gotline) {
- /* GRAB AN EVENT. */
- g_vm->glk_select(&ev);
- if (g_vm->shouldQuit())
- return;
+ case evtype_SoundNotify:
+ /* A SOUND HAS FINISHED PLAYING CALL +sound_finished
+ * WITH THE RESOUCE NUMBER AS THE FIRST ARGUMENT
+ * AND THE CHANNEL NUMBER AS THE SECOND ARGUMENT */
+ sprintf(temp_buffer, "+sound_finished<%d<%d", (int) ev.val1, (int) ev.val2 - 1);
+ execute(temp_buffer);
+ break;
- switch (ev.type) {
+ case evtype_Timer:
+ /* A TIMER EVENT IS TRIGGERED PERIODICALLY IF THE GAME
+ * REQUESTS THEM. THIS SIMPLY EXECUTES THE FUNCTION
+ * +timer WHICH IS LIKE +eachturn EXCEPT IT DOESN'T
+ * WAIT FOR THE PLAYER TO TYPE A COMMAND */
- case evtype_LineInput:
- if (ev.window == inputwin) {
- gotline = TRUE;
jacl_set_window(mainwin);
- /* REALLY THE EVENT CAN *ONLY* BE FROM MAINWIN,
- * BECAUSE WE NEVER REQUEST LINE INPUT FROM THE
- * STATUS WINDOW. BUT WE DO A PARANOIA TEST,
- * BECAUSE COMMANDBUF IS ONLY FILLED IF THE LINE
- * EVENT COMES FROM THE MAINWIN REQUEST. IF THE
- * LINE EVENT COMES FROM ANYWHERE ELSE, WE IGNORE
- * IT. */
- }
- break;
-
- case evtype_SoundNotify:
- /* A SOUND HAS FINISHED PLAYING CALL +sound_finished
- * WITH THE RESOUCE NUMBER AS THE FIRST ARGUMENT
- * AND THE CHANNEL NUMBER AS THE SECOND ARGUMENT */
- sprintf(temp_buffer, "+sound_finished<%d<%d", (int) ev.val1, (int) ev.val2 - 1);
- execute(temp_buffer);
- break;
-
- case evtype_Timer:
- /* A TIMER EVENT IS TRIGGERED PERIODICALLY IF THE GAME
- * REQUESTS THEM. THIS SIMPLY EXECUTES THE FUNCTION
- * +timer WHICH IS LIKE +eachturn EXCEPT IT DOESN'T
- * WAIT FOR THE PLAYER TO TYPE A COMMAND */
-
- jacl_set_window(mainwin);
- execute("+timer");
- break;
+ execute("+timer");
+ break;
- case evtype_Arrange:
- /* WINDOWS HAVE CHANGED SIZE, SO WE HAVE TO REDRAW THE
- * STATUS WINDOW. */
- status_line();
- break;
+ case evtype_Arrange:
+ /* WINDOWS HAVE CHANGED SIZE, SO WE HAVE TO REDRAW THE
+ * STATUS WINDOW. */
+ status_line();
+ break;
- default:
- break;
+ default:
+ break;
+ }
}
}
-
// THE PLAYER'S INPUT WILL BE UTF-32. CONVERT IT TO UTF-8 AND NULL TERMINATE IT
#ifndef NOUNICODE
convert_to_utf8(command_buffer_uni, ev.val1);
@@ -707,8 +720,9 @@ void restore_game_state() {
}
void write_text(const char *string_buffer) {
- int index,
- length;
+ int index, length;
+ if (g_vm->loadingSavegame())
+ return;
if (!strcmp(string_buffer, "tilde")) {
g_vm->glk_put_string("~");
Commit: 17df8305000cf5f52593f1807d4a913526de2188
https://github.com/scummvm/scummvm/commit/17df8305000cf5f52593f1807d4a913526de2188
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2019-10-11T18:43:34-07:00
Commit Message:
GLK: JACL: Move JACL out of RELEASE_BUILD exclusion
Changed paths:
engines/glk/detection.cpp
diff --git a/engines/glk/detection.cpp b/engines/glk/detection.cpp
index 08dd7d0..325e15b 100644
--- a/engines/glk/detection.cpp
+++ b/engines/glk/detection.cpp
@@ -167,10 +167,10 @@ Common::Error GlkMetaEngine::createInstance(OSystem *syst, Engine **engine) cons
else if ((*engine = create<Glk::Frotz::FrotzMetaEngine, Glk::Frotz::Frotz>(syst, gameDesc)) != nullptr) {}
else if ((*engine = create<Glk::Glulxe::GlulxeMetaEngine, Glk::Glulxe::Glulxe>(syst, gameDesc)) != nullptr) {}
else if ((*engine = create<Glk::Hugo::HugoMetaEngine, Glk::Hugo::Hugo>(syst, gameDesc)) != nullptr) {}
+ else if ((*engine = create<Glk::JACL::JACLMetaEngine, Glk::JACL::JACL>(syst, gameDesc)) != nullptr) {}
else if ((*engine = create<Glk::Quest::QuestMetaEngine, Glk::Quest::Quest>(syst, gameDesc)) != nullptr) {}
else if ((*engine = create<Glk::Scott::ScottMetaEngine, Glk::Scott::Scott>(syst, gameDesc)) != nullptr) {}
#ifndef RELEASE_BUILD
- else if ((*engine = create<Glk::JACL::JACLMetaEngine, Glk::JACL::JACL>(syst, gameDesc)) != nullptr) {}
else if ((*engine = create<Glk::Magnetic::MagneticMetaEngine, Glk::Magnetic::Magnetic>(syst, gameDesc)) != nullptr) {}
else if ((td = Glk::TADS::TADSMetaEngine::findGame(gameDesc._gameId.c_str()))._description) {
if (td._options & Glk::TADS::OPTION_TADS3)
@@ -217,10 +217,10 @@ PlainGameList GlkMetaEngine::getSupportedGames() const {
Glk::Frotz::FrotzMetaEngine::getSupportedGames(list);
Glk::Glulxe::GlulxeMetaEngine::getSupportedGames(list);
Glk::Hugo::HugoMetaEngine::getSupportedGames(list);
+ Glk::JACL::JACLMetaEngine::getSupportedGames(list);
Glk::Quest::QuestMetaEngine::getSupportedGames(list);
Glk::Scott::ScottMetaEngine::getSupportedGames(list);
#ifndef RELEASE_BUILD
- Glk::JACL::JACLMetaEngine::getSupportedGames(list);
Glk::Magnetic::MagneticMetaEngine::getSupportedGames(list);
Glk::TADS::TADSMetaEngine::getSupportedGames(list);
#endif
@@ -250,6 +250,9 @@ PlainGameDescriptor GlkMetaEngine::findGame(const char *gameId) const {
gd = Glk::Hugo::HugoMetaEngine::findGame(gameId);
if (gd._description) return gd;
+ gd = Glk::JACL::JACLMetaEngine::findGame(gameId);
+ if (gd._description) return gd;
+
gd = Glk::Quest::QuestMetaEngine::findGame(gameId);
if (gd._description) return gd;
@@ -257,9 +260,6 @@ PlainGameDescriptor GlkMetaEngine::findGame(const char *gameId) const {
if (gd._description) return gd;
#ifndef RELEASE_BUILD
- gd = Glk::JACL::JACLMetaEngine::findGame(gameId);
- if (gd._description) return gd;
-
gd = Glk::Magnetic::MagneticMetaEngine::findGame(gameId);
if (gd._description) return gd;
@@ -281,11 +281,11 @@ DetectedGames GlkMetaEngine::detectGames(const Common::FSList &fslist) const {
Glk::Frotz::FrotzMetaEngine::detectGames(fslist, detectedGames);
Glk::Glulxe::GlulxeMetaEngine::detectGames(fslist, detectedGames);
Glk::Hugo::HugoMetaEngine::detectGames(fslist, detectedGames);
+ Glk::JACL::JACLMetaEngine::detectGames(fslist, detectedGames);
Glk::Quest::QuestMetaEngine::detectGames(fslist, detectedGames);
Glk::Scott::ScottMetaEngine::detectGames(fslist, detectedGames);
#ifndef RELEASE_BUILD
- Glk::JACL::JACLMetaEngine::detectGames(fslist, detectedGames);
Glk::Magnetic::MagneticMetaEngine::detectGames(fslist, detectedGames);
Glk::TADS::TADSMetaEngine::detectGames(fslist, detectedGames);
#endif
@@ -302,11 +302,11 @@ void GlkMetaEngine::detectClashes() const {
Glk::Frotz::FrotzMetaEngine::detectClashes(map);
Glk::Glulxe::GlulxeMetaEngine::detectClashes(map);
Glk::Hugo::HugoMetaEngine::detectClashes(map);
+ Glk::JACL::JACLMetaEngine::detectClashes(map);
Glk::Quest::QuestMetaEngine::detectClashes(map);
Glk::Scott::ScottMetaEngine::detectClashes(map);
#ifndef RELEASE_BUILD
- Glk::JACL::JACLMetaEngine::detectClashes(map);
Glk::Magnetic::MagneticMetaEngine::detectClashes(map);
Glk::TADS::TADSMetaEngine::detectClashes(map);
#endif
More information about the Scummvm-git-logs
mailing list