TrustedUser
2,147
edits
(Make clear that no audio device (i.e. MIDI) initialization should be done in the constructor either) |
m (Text replacement - "<source lang=" to "<syntaxhighlight lang=") |
||
(6 intermediate revisions by 4 users not shown) | |||
Line 15: | Line 15: | ||
# Add a new directory <tt>engines/quux/</tt> | # Add a new directory <tt>engines/quux/</tt> | ||
# Add <tt>engines/quux/ | # Add <tt>engines/quux/configure.engine</tt> (looking at configure.engine files of existing engines should make it clear what you have to do). | ||
# Add <tt>engines/quux/module.mk</tt> (Again, just check out what is done for the existing engines). | |||
# Add <tt>engines/quux/quux.h</tt> and <tt>engines/quux/quux.cpp</tt>; this will contain your Engine subclass (or at least parts of it). | # Add <tt>engines/quux/quux.h</tt> and <tt>engines/quux/quux.cpp</tt>; this will contain your Engine subclass (or at least parts of it). | ||
# Add <tt>engines/quux/detection.cpp</tt>; It will contain the plugin interface code (more on that in the next section). | # Add <tt>engines/quux/detection.cpp</tt>; It will contain the plugin interface code (more on that in the next section). | ||
That's it. The difficult part is of course writing the Engine subclass. More on that in the next section! | That's it. The difficult part is of course writing the Engine subclass. More on that in the next section! | ||
Line 117: | Line 115: | ||
=== Example: engines/quux/quux.h === | === Example: engines/quux/quux.h === | ||
< | <syntaxhighlight lang="cpp"> | ||
#ifndef QUUX_H | #ifndef QUUX_H | ||
#define QUUX_H | #define QUUX_H | ||
Line 161: | Line 159: | ||
#endif | #endif | ||
</ | </syntaxhighlight> | ||
=== Example: engines/quux/quux.cpp === | === Example: engines/quux/quux.cpp === | ||
< | <syntaxhighlight lang="cpp"> | ||
#include "common/scummsys.h" | #include "common/scummsys.h" | ||
Line 171: | Line 169: | ||
#include "common/debug-channels.h" | #include "common/debug-channels.h" | ||
#include "common/error.h" | #include "common/error.h" | ||
#include " | #include "gui/EventRecorder.h" | ||
#include "common/file.h" | #include "common/file.h" | ||
#include "common/fs.h" | #include "common/fs.h" | ||
Line 182: | Line 180: | ||
QuuxEngine::QuuxEngine(OSystem *syst) | QuuxEngine::QuuxEngine(OSystem *syst) | ||
: Engine(syst) { | : Engine(syst), _console(nullptr) { | ||
// Put your engine in a sane state, but do nothing big yet; | // Put your engine in a sane state, but do nothing big yet; | ||
// in particular, do not load data from files; rather, if you | // in particular, do not load data from files; rather, if you | ||
Line 252: | Line 250: | ||
} // End of namespace Quux | } // End of namespace Quux | ||
</ | </syntaxhighlight> | ||
=== Example: engines/quux/detection.cpp === | === Example: engines/quux/detection.cpp === | ||
The following example implements a custom MetaEngine instead of using the AdvancedMetaEngine. | The following example implements a custom MetaEngine instead of using the AdvancedMetaEngine. | ||
< | <syntaxhighlight lang="cpp"> | ||
#include "quux/quux.h" | #include "quux/quux.h" | ||
Line 353: | Line 351: | ||
REGISTER_PLUGIN_STATIC(QUUX, PLUGIN_TYPE_ENGINE, QuuxMetaEngine); | REGISTER_PLUGIN_STATIC(QUUX, PLUGIN_TYPE_ENGINE, QuuxMetaEngine); | ||
#endif | #endif | ||
</ | </syntaxhighlight> | ||
=== Example: engines/quux/module.mk === | === Example: engines/quux/module.mk === | ||
< | <syntaxhighlight lang="make"> | ||
MODULE := engines/quux | MODULE := engines/quux | ||
Line 373: | Line 371: | ||
# Include common rules | # Include common rules | ||
include $(srcdir)/rules.mk | include $(srcdir)/rules.mk | ||
</ | </syntaxhighlight> | ||
=== Example: engines/quux/configure.engine === | |||
<syntaxhighlight lang="bash"> | |||
# This file is included from the main "configure" script | |||
# add_engine [name] [desc] [build-by-default] [subengines] [base games] [deps] | |||
add_engine quux "Quux" no | |||
</syntaxhighlight> |