[Scummvm-git-logs] scummvm master -> 473cf8dd730caa9ddcac59e6313cded94d90553b
dreammaster
noreply at scummvm.org
Sat Nov 18 05:59:16 UTC 2023
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:
473cf8dd73 ULTIMA: Split the games up into sub-engines
Commit: 473cf8dd730caa9ddcac59e6313cded94d90553b
https://github.com/scummvm/scummvm/commit/473cf8dd730caa9ddcac59e6313cded94d90553b
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-11-17T19:59:08-10:00
Commit Message:
ULTIMA: Split the games up into sub-engines
Changed paths:
engines/ultima/configure.engine
engines/ultima/detection_tables.h
engines/ultima/metaengine.cpp
engines/ultima/module.mk
diff --git a/engines/ultima/configure.engine b/engines/ultima/configure.engine
index 291efd035c6..bf849aa483a 100644
--- a/engines/ultima/configure.engine
+++ b/engines/ultima/configure.engine
@@ -1,3 +1,7 @@
# This file is included from the main "configure" script
# add_engine [name] [desc] [build-by-default] [subengines] [base games] [deps]
-add_engine ultima "Ultima" yes "" "" "highres 16bit lua"
+add_engine ultima "Ultima" no "ultima1 ultima4 ultima6 ultima8"
+add_engine ultima1 "Ultima I - The First Age of Darkness" no "" "" ""
+add_engine ultima4 "Ultima IV - Quest of the Avatar" yes "" "" ""
+add_engine ultima6 "Ultima VI = The False Prophet" yes "" "" "highres 16bit lua"
+add_engine ultima8 "Ultima VIII - Pagan" yes "" "" "highres 16bit"
diff --git a/engines/ultima/detection_tables.h b/engines/ultima/detection_tables.h
index e9df23a8b72..bd05343b11e 100644
--- a/engines/ultima/detection_tables.h
+++ b/engines/ultima/detection_tables.h
@@ -32,7 +32,7 @@ namespace Ultima {
#define GUI_OPTIONS_SAVAGE_EMPIRE GUIO0()
static const UltimaGameDescription GAME_DESCRIPTIONS[] = {
-#ifndef RELEASE_BUILD
+#ifdef ENABLE_ULTIMA1
{
// Ultima I - The First Age of Darkness
{
@@ -85,6 +85,7 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = {
},
#endif
+#ifdef ENABLE_ULTIMA4
{
// Ultima IV - Quest of the Avatar
{
@@ -114,7 +115,9 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = {
GAME_ULTIMA4,
GF_VGA_ENHANCED
},
+#endif
+#ifdef ENABLE_ULTIMA6
// GOG Ultima VI
{
{
@@ -297,7 +300,9 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = {
GAME_ULTIMA6,
GF_VGA_ENHANCED
},
+#endif
+#ifdef ENABLE_ULTIMA8
// Ultima VIII - CD (provided by ddeluca1com, bug #11944)
{
{
@@ -626,7 +631,9 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = {
GAME_CRUSADER_REG,
0
},
+#endif
+#ifdef ENABLE_ULTIMA6
// GOG Martian Dreams
{
{
@@ -747,6 +754,7 @@ static const UltimaGameDescription GAME_DESCRIPTIONS[] = {
GAME_SAVAGE_EMPIRE,
GF_VGA_ENHANCED
},
+#endif
{ AD_TABLE_END_MARKER, (GameId)0, 0 }
};
diff --git a/engines/ultima/metaengine.cpp b/engines/ultima/metaengine.cpp
index 0cd7d624b5b..c834c9ac50e 100644
--- a/engines/ultima/metaengine.cpp
+++ b/engines/ultima/metaengine.cpp
@@ -27,13 +27,21 @@
#include "common/str-array.h"
#include "common/memstream.h"
#include "common/translation.h"
+#ifdef ENABLE_ULTIMA1
#include "ultima/shared/early/ultima_early.h"
+#endif
+#ifdef ENABLE_ULTIMA4
#include "ultima/ultima4/ultima4.h"
#include "ultima/ultima4/metaengine.h"
+#endif
+#ifdef ENABLE_ULTIMA6
#include "ultima/nuvie/metaengine.h"
#include "ultima/nuvie/nuvie.h"
+#endif
+#ifdef ENABLE_ULTIMA8
#include "ultima/ultima8/ultima8.h"
#include "ultima/ultima8/metaengine.h"
+#endif
#include "ultima/metaengine.h"
@@ -174,24 +182,30 @@ const ADExtraGuiOptionsMap *UltimaMetaEngine::getAdvancedExtraGuiOptions() const
Common::Error UltimaMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
const Ultima::UltimaGameDescription *gd = (const Ultima::UltimaGameDescription *)desc;
switch (gd->gameId) {
-#ifndef RELEASE_BUILD
+#ifdef ENABLE_ULTIMA1
case Ultima::GAME_ULTIMA1:
*engine = new Ultima::Shared::UltimaEarlyEngine(syst, gd);
break;
#endif
+#ifdef ENABLE_ULTIMA4
case Ultima::GAME_ULTIMA4:
*engine = new Ultima::Ultima4::Ultima4Engine(syst, gd);
break;
+#endif
+#ifdef ENABLE_ULTIMA6
case Ultima::GAME_ULTIMA6:
case Ultima::GAME_MARTIAN_DREAMS:
case Ultima::GAME_SAVAGE_EMPIRE:
*engine = new Ultima::Nuvie::NuvieEngine(syst, gd);
break;
+#endif
+#ifdef ENABLE_ULTIMA8
case Ultima::GAME_ULTIMA8:
case Ultima::GAME_CRUSADER_REG:
case Ultima::GAME_CRUSADER_REM:
*engine = new Ultima::Ultima8::Ultima8Engine(syst, gd);
break;
+#endif
default:
return Common::kUnsupportedGameidError;
@@ -206,9 +220,11 @@ int UltimaMetaEngine::getMaximumSaveSlot() const {
SaveStateList UltimaMetaEngine::listSaves(const char *target) const {
SaveStateList saveList = AdvancedMetaEngine::listSaves(target);
+#ifdef ENABLE_ULTIMA6
Common::String gameId = getGameId(target);
if (gameId == "ultima6" || gameId == "ultima6_enh")
Ultima::Nuvie::MetaEngine::listSaves(saveList);
+#endif
return saveList;
}
@@ -216,6 +232,7 @@ SaveStateList UltimaMetaEngine::listSaves(const char *target) const {
SaveStateDescriptor UltimaMetaEngine::querySaveMetaInfos(const char *target, int slot) const {
SaveStateDescriptor desc = AdvancedMetaEngine::querySaveMetaInfos(target, slot);
if (!desc.isValid() && slot > 0) {
+#ifdef ENABLE_ULTIMA8
Common::String gameId = getGameId(target);
if (gameId == "ultima8") {
Common::String filename = getSavegameFile(slot, target);
@@ -223,18 +240,25 @@ SaveStateDescriptor UltimaMetaEngine::querySaveMetaInfos(const char *target, int
if (!Ultima::Ultima8::MetaEngine::querySaveMetaInfos(filename, desc))
return SaveStateDescriptor();
}
+#endif
}
return desc;
}
Common::KeymapArray UltimaMetaEngine::initKeymaps(const char *target) const {
+#if defined(ENABLE_ULTIMA4) || defined(ENABLE_ULTIMA8)
const Common::String gameId = getGameId(target);
+#endif
+
+#ifdef ENABLE_ULTIMA4
if (gameId == "ultima4" || gameId == "ultima4_enh")
return Ultima::Ultima4::MetaEngine::initKeymaps();
+#endif
+#ifdef ENABLE_ULTIMA8
if (gameId == "ultima8" || gameId == "remorse" || gameId == "regret")
return Ultima::Ultima8::MetaEngine::initKeymaps(gameId);
-
+#endif
return Common::KeymapArray();
}
diff --git a/engines/ultima/module.mk b/engines/ultima/module.mk
index 7c2985082ad..aad1ad4ef58 100644
--- a/engines/ultima/module.mk
+++ b/engines/ultima/module.mk
@@ -52,7 +52,10 @@ MODULE_OBJS := \
shared/maps/map_tile.o \
shared/maps/map_widget.o \
shared/maps/creature.o \
- shared/std/string.o \
+ shared/std/string.o
+
+ifdef ENABLE_ULTIMA1
+MODULE_OBJS += \
ultima0/core/resources.o \
ultima0/game.o \
ultima0/resources.o \
@@ -132,7 +135,11 @@ MODULE_OBJS := \
ultima1/widgets/urban_player.o \
ultima1/widgets/urban_widget.o \
ultima1/widgets/wench.o \
- ultima1/game.o \
+ ultima1/game.o
+endif
+
+ifdef ENABLE_ULTIMA4
+MODULE_OBJS += \
ultima4/controllers/alpha_action_controller.o \
ultima4/controllers/camp_controller.o \
ultima4/controllers/combat_controller.o \
@@ -219,7 +226,11 @@ MODULE_OBJS := \
ultima4/views/tileview.o \
ultima4/views/view.o \
ultima4/metaengine.o \
- ultima4/ultima4.o \
+ ultima4/ultima4.o
+endif
+
+ifdef ENABLE_ULTIMA6
+MODULE_OBJS += \
nuvie/metaengine.o \
nuvie/nuvie.o \
nuvie/actors/actor.o \
@@ -380,7 +391,11 @@ MODULE_OBJS := \
nuvie/views/sun_moon_ribbon.o \
nuvie/views/sun_moon_strip_widget.o \
nuvie/views/view.o \
- nuvie/views/view_manager.o \
+ nuvie/views/view_manager.o
+endif
+
+ifdef ENABLE_ULTIMA8
+MODULE_OBJS += \
ultima8/metaengine.o \
ultima8/ultima8.o \
ultima8/audio/audio_channel.o \
@@ -584,6 +599,7 @@ MODULE_OBJS := \
ultima8/world/actors/targeted_anim_process.o \
ultima8/world/actors/teleport_to_egg_process.o \
ultima8/world/actors/u8_avatar_mover_process.o
+endif
# This module can be built as a plugin
ifeq ($(ENABLE_ULTIMA), DYNAMIC_PLUGIN)
More information about the Scummvm-git-logs
mailing list