aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authoryinsimei2017-03-21 21:07:58 +0100
committerEugene Sandulenko2017-07-13 18:27:45 +0200
commit94439e2ce311734bfe7bb5700a6584b7550ea8f9 (patch)
tree9e7b3caace8eef3c5f78a5043f4a0557aab3df10 /engines
parentb9358b92b8feb55581fe8c458ebf67534242d7fe (diff)
downloadscummvm-rg350-94439e2ce311734bfe7bb5700a6584b7550ea8f9.tar.gz
scummvm-rg350-94439e2ce311734bfe7bb5700a6584b7550ea8f9.tar.bz2
scummvm-rg350-94439e2ce311734bfe7bb5700a6584b7550ea8f9.zip
SLUDGE: Add first classes in scummvm to detect .slg game file
Diffstat (limited to 'engines')
-rw-r--r--engines/sludge/configure.engine3
-rw-r--r--engines/sludge/console.cpp34
-rw-r--r--engines/sludge/console.h44
-rw-r--r--engines/sludge/detection.cpp98
-rw-r--r--engines/sludge/module.mk17
-rw-r--r--engines/sludge/sludge.cpp74
-rw-r--r--engines/sludge/sludge.h66
7 files changed, 336 insertions, 0 deletions
diff --git a/engines/sludge/configure.engine b/engines/sludge/configure.engine
new file mode 100644
index 0000000000..24ae50dcf7
--- /dev/null
+++ b/engines/sludge/configure.engine
@@ -0,0 +1,3 @@
+# This file is included from the main "configure" script
+# add_engine [name] [desc] [build-by-default] [subengines] [base games] [deps]
+add_engine sludge "Sludge" yes \ No newline at end of file
diff --git a/engines/sludge/console.cpp b/engines/sludge/console.cpp
new file mode 100644
index 0000000000..95d70b9c6d
--- /dev/null
+++ b/engines/sludge/console.cpp
@@ -0,0 +1,34 @@
+/* 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 "sludge/console.h"
+
+namespace Sludge {
+
+SludgeConsole::SludgeConsole(SludgeEngine *vm) : GUI::Debugger() {
+ _vm = vm;
+}
+
+SludgeConsole::~SludgeConsole() {
+}
+
+} // End of namespace Sludge
diff --git a/engines/sludge/console.h b/engines/sludge/console.h
new file mode 100644
index 0000000000..5f9640972a
--- /dev/null
+++ b/engines/sludge/console.h
@@ -0,0 +1,44 @@
+/* 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.
+ *
+ */
+
+#ifndef SLUDGE_CONSOLE_H
+#define SLUDGE_CONSOLE_H
+
+#include "gui/debugger.h"
+
+namespace Sludge {
+
+class SludgeEngine;
+
+// Example console class
+class SludgeConsole : public GUI::Debugger {
+public:
+ SludgeConsole(SludgeEngine *vm);
+ virtual ~SludgeConsole(void);
+
+private:
+ SludgeEngine *_vm;
+};
+
+} // End of namespace Sludge
+
+#endif /* SLUDGE_CONSOLE_H */
diff --git a/engines/sludge/detection.cpp b/engines/sludge/detection.cpp
new file mode 100644
index 0000000000..8297165f73
--- /dev/null
+++ b/engines/sludge/detection.cpp
@@ -0,0 +1,98 @@
+/* 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 "common/debug.h"
+
+#include "engines/advancedDetector.h"
+
+#include "sludge/sludge.h"
+
+namespace Sludge {
+
+struct SludgeGameDescription {
+ ADGameDescription desc;
+
+ int gameType;
+};
+
+int SludgeEngine::getGameType() const { return _gameDescription->gameType; }
+const char *SludgeEngine::getGameId() const { return _gameDescription->desc.gameId;}
+uint32 SludgeEngine::getFeatures() const { return _gameDescription->desc.flags; }
+Common::Language SludgeEngine::getLanguage() const { return _gameDescription->desc.language; }
+
+} // End of namespace Sludge
+
+static const PlainGameDescriptor sludgeGames[] = {
+ { "sludge", "Sludge Game" },
+ { "welcome", "Welcome Example" },
+ { 0, 0 }
+};
+
+namespace Sludge {
+static const SludgeGameDescription gameDescriptions[] = {
+ {
+ {
+ "welcome",
+ "",
+ AD_ENTRY1("Welcome.slg", "50445503761cf6684fe3270d0860a4c3"),
+ Common::EN_ANY,
+ Common::kPlatformUnknown,
+ ADGF_NO_FLAGS,
+ GUIO0()
+ },
+ 0
+ },
+
+ { AD_TABLE_END_MARKER, 0 }
+};
+
+} // End of namespace Sludge
+
+class SludgeMetaEngine : public AdvancedMetaEngine {
+public:
+ SludgeMetaEngine() : AdvancedMetaEngine(Sludge::gameDescriptions, sizeof(Sludge::SludgeGameDescription), sludgeGames) {
+ _singleId = "sludge";
+ _maxScanDepth = 1;
+ }
+
+ virtual const char *getName() const {
+ return "Sludge Engine";
+ }
+
+ virtual const char *getOriginalCopyright() const {
+ return "Copyright (C) 2000-2014 Hungry Software and contributors";
+ }
+
+
+ virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
+ const Sludge::SludgeGameDescription *gd = (const Sludge::SludgeGameDescription *)desc;
+ if (gd) {
+ *engine = new Sludge::SludgeEngine(syst, gd);
+ }
+ return gd != 0;
+ }
+};
+
+#if PLUGIN_ENABLED_DYNAMIC(SLUDGE)
+ REGISTER_PLUGIN_DYNAMIC(SLUDGE, PLUGIN_TYPE_ENGINE, SludgeMetaEngine);
+#else
+ REGISTER_PLUGIN_STATIC(SLUDGE, PLUGIN_TYPE_ENGINE, SludgeMetaEngine);
+#endif
diff --git a/engines/sludge/module.mk b/engines/sludge/module.mk
new file mode 100644
index 0000000000..45929cf861
--- /dev/null
+++ b/engines/sludge/module.mk
@@ -0,0 +1,17 @@
+MODULE := engines/sludge
+
+MODULE_OBJS := \
+ detection.o \
+ sludge.o \
+ console.o
+
+MODULE_DIRS += \
+ engines/sludge
+
+# This module can be built as a plugin
+ifeq ($(ENABLE_SLUDGE), DYNAMIC_PLUGIN)
+PLUGIN := 1
+endif
+
+# Include common rules
+include $(srcdir)/rules.mk \ No newline at end of file
diff --git a/engines/sludge/sludge.cpp b/engines/sludge/sludge.cpp
new file mode 100644
index 0000000000..9a910b20dc
--- /dev/null
+++ b/engines/sludge/sludge.cpp
@@ -0,0 +1,74 @@
+/* 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 "common/scummsys.h"
+
+#include "common/config-manager.h"
+#include "common/debug.h"
+#include "common/debug-channels.h"
+#include "common/error.h"
+
+#include "engines/util.h"
+
+#include "sludge/sludge.h"
+
+namespace Sludge {
+
+SludgeEngine::SludgeEngine(OSystem *syst, const SludgeGameDescription *gameDesc)
+ : Engine(syst), _gameDescription(gameDesc), _console(nullptr) {
+
+ // register your random source
+ _rnd = new Common::RandomSource("sludge");
+
+ // Add debug channels
+ DebugMan.addDebugChannel(kSludgeDebugScript, "Script", "Script debug level");
+
+ // check init
+ debug("SludgeEngine::SludgeEngine");
+}
+
+SludgeEngine::~SludgeEngine() {
+
+ // Dispose resources
+ delete _rnd;
+
+ // Remove debug levels
+ DebugMan.clearAllDebugChannels();
+
+ // Dispose console
+ delete _console;
+}
+
+Common::Error SludgeEngine::run() {
+ // init graphics
+ initGraphics(640, 480, false);
+
+ // create console
+ _console = new SludgeConsole(this);
+
+ // debug log
+ debug("SludgeEngine::init");
+
+ return Common::kNoError;
+}
+
+} // End of namespace Sludge
+
diff --git a/engines/sludge/sludge.h b/engines/sludge/sludge.h
new file mode 100644
index 0000000000..5fe7c9a1e5
--- /dev/null
+++ b/engines/sludge/sludge.h
@@ -0,0 +1,66 @@
+/* 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.
+ *
+ */
+
+#ifndef SLUDGE_H
+#define SLUDGE_H
+
+#include "common/random.h"
+#include "engines/engine.h"
+#include "gui/debugger.h"
+
+#include "sludge/console.h"
+
+namespace Sludge {
+
+class SludgeConsole;
+
+struct SludgeGameDescription;
+
+// debug channels
+enum {
+ kSludgeDebugScript = 1 << 0
+};
+
+class SludgeEngine : public Engine {
+protected:
+ // Engine APIs
+ virtual Common::Error run();
+
+public:
+ SludgeEngine(OSystem *syst, const SludgeGameDescription *gameDesc);
+ virtual ~SludgeEngine();
+
+ int getGameType() const;
+ const char *getGameId() const;
+ uint32 getFeatures() const;
+ Common::Language getLanguage() const;
+
+ const SludgeGameDescription *_gameDescription;
+
+private:
+ SludgeConsole *_console;
+ Common::RandomSource *_rnd;
+};
+
+} // End of namespace Sludge
+
+#endif