diff options
Diffstat (limited to 'backends/platform/null/null.cpp')
-rw-r--r-- | backends/platform/null/null.cpp | 248 |
1 files changed, 22 insertions, 226 deletions
diff --git a/backends/platform/null/null.cpp b/backends/platform/null/null.cpp index 51166baae7..9b2b2ca78e 100644 --- a/backends/platform/null/null.cpp +++ b/backends/platform/null/null.cpp @@ -23,22 +23,14 @@ * */ -#include "backends/base-backend.h" +#include "backends/modular-backend.h" #include "base/main.h" #if defined(USE_NULL_DRIVER) - -#ifdef UNIX -#include <unistd.h> -#include <sys/time.h> -#endif - -#include "common/rect.h" -#include "graphics/colormasks.h" - #include "backends/saves/default/default-saves.h" #include "backends/timer/default/default-timer.h" #include "sound/mixer_intern.h" +#include "common/scummsys.h" /* * Include header files needed for the getFilesystemFactory() method. @@ -51,82 +43,24 @@ #include "backends/fs/windows/windows-fs-factory.h" #endif -class OSystem_NULL : public BaseBackend { -protected: - Common::SaveFileManager *_savefile; - Audio::MixerImpl *_mixer; - Common::TimerManager *_timer; - FilesystemFactory *_fsFactory; - - timeval _startTime; +class OSystem_NULL : public ModularBackend { public: - OSystem_NULL(); virtual ~OSystem_NULL(); virtual void initBackend(); - virtual bool hasFeature(Feature f); - virtual void setFeatureState(Feature f, bool enable); - virtual bool getFeatureState(Feature f); - virtual const GraphicsMode *getSupportedGraphicsModes() const; - virtual int getDefaultGraphicsMode() const; - bool setGraphicsMode(const char *name); - virtual bool setGraphicsMode(int mode); - virtual int getGraphicsMode() const; - virtual void initSize(uint width, uint height, const Graphics::PixelFormat *format); - virtual int16 getHeight(); - virtual int16 getWidth(); - virtual void setPalette(const byte *colors, uint start, uint num); - virtual void grabPalette(byte *colors, uint start, uint num); - virtual void copyRectToScreen(const byte *buf, int pitch, int x, int y, int w, int h); - virtual void updateScreen(); - virtual Graphics::Surface *lockScreen(); - virtual void unlockScreen(); - virtual void setShakePos(int shakeOffset); - - virtual void showOverlay(); - virtual void hideOverlay(); - virtual void clearOverlay(); - virtual void grabOverlay(OverlayColor *buf, int pitch); - virtual void copyRectToOverlay(const OverlayColor *buf, int pitch, int x, int y, int w, int h); - virtual int16 getOverlayHeight(); - virtual int16 getOverlayWidth(); - virtual Graphics::PixelFormat getOverlayFormat() const { return Graphics::createPixelFormat<565>(); } - - virtual bool showMouse(bool visible); - - virtual void warpMouse(int x, int y); - virtual void setMouseCursor(const byte *buf, uint w, uint h, int hotspotX, int hotspotY, uint32 keycolor, int cursorTargetScale, const Graphics::PixelFormat *format); - virtual bool pollEvent(Common::Event &event); + virtual uint32 getMillis(); virtual void delayMillis(uint msecs); + virtual void getTimeAndDate(TimeDate &t) const {} - virtual MutexRef createMutex(void); - virtual void lockMutex(MutexRef mutex); - virtual void unlockMutex(MutexRef mutex); - virtual void deleteMutex(MutexRef mutex); - - virtual void quit(); - - virtual Common::SaveFileManager *getSavefileManager(); - virtual Audio::Mixer *getMixer(); - virtual void getTimeAndDate(TimeDate &t) const; - virtual Common::TimerManager *getTimerManager(); - FilesystemFactory *getFilesystemFactory(); - -}; - -static const OSystem::GraphicsMode s_supportedGraphicsModes[] = { - {0, 0, 0} + virtual Common::SeekableReadStream *createConfigReadStream(); + virtual Common::WriteStream *createConfigWriteStream(); }; OSystem_NULL::OSystem_NULL() { - _savefile = 0; - _mixer = 0; - _timer = 0; - #if defined(__amigaos4__) _fsFactory = new AmigaOSFilesystemFactory(); #elif defined(UNIX) @@ -139,20 +73,18 @@ OSystem_NULL::OSystem_NULL() { } OSystem_NULL::~OSystem_NULL() { - delete _savefile; - delete _mixer; - delete _timer; - delete _fsFactory; } void OSystem_NULL::initBackend() { - _savefile = new DefaultSaveFileManager(); + _mutexManager = (MutexManager *)new NullMutexManager(); + _timerManager = new DefaultTimerManager(); + _eventManager = new DefaultEventManager(this); + _savefileManager = new DefaultSaveFileManager(); + _graphicsManager = (GraphicsManager *)new NullGraphicsManager(); + _audiocdManager = (AudioCDManager *)new DefaultAudioCDManager(); _mixer = new Audio::MixerImpl(this, 22050); - _timer = new DefaultTimerManager(); - - _mixer->setReady(false); - gettimeofday(&_startTime, NULL); + ((Audio::MixerImpl *)_mixer)->setReady(false); // Note that both the mixer and the timer manager are useless // this way; they need to be hooked into the system somehow to @@ -161,163 +93,27 @@ void OSystem_NULL::initBackend() { OSystem::initBackend(); } -bool OSystem_NULL::hasFeature(Feature f) { - return false; -} - -void OSystem_NULL::setFeatureState(Feature f, bool enable) { -} - -bool OSystem_NULL::getFeatureState(Feature f) { - return false; -} - -const OSystem::GraphicsMode* OSystem_NULL::getSupportedGraphicsModes() const { - return s_supportedGraphicsModes; -} - - -int OSystem_NULL::getDefaultGraphicsMode() const { - return -1; -} - -bool OSystem_NULL::setGraphicsMode(const char *mode) { - return true; -} - -bool OSystem_NULL::setGraphicsMode(int mode) { - return true; -} - -int OSystem_NULL::getGraphicsMode() const { - return -1; -} - -void OSystem_NULL::initSize(uint width, uint height, const Graphics::PixelFormat *format) { -} - -int16 OSystem_NULL::getHeight() { - return 200; -} - -int16 OSystem_NULL::getWidth() { - return 320; -} - -void OSystem_NULL::setPalette(const byte *colors, uint start, uint num) { -} - -void OSystem_NULL::grabPalette(byte *colors, uint start, uint num) { - -} - -void OSystem_NULL::copyRectToScreen(const byte *buf, int pitch, int x, int y, int w, int h) { -} - -void OSystem_NULL::updateScreen() { -} - -Graphics::Surface *OSystem_NULL::lockScreen() { - return 0; -} - -void OSystem_NULL::unlockScreen() { -} - -void OSystem_NULL::setShakePos(int shakeOffset) { -} - -void OSystem_NULL::showOverlay() { -} - -void OSystem_NULL::hideOverlay() { -} - -void OSystem_NULL::clearOverlay() { -} - -void OSystem_NULL::grabOverlay(OverlayColor *buf, int pitch) { -} - -void OSystem_NULL::copyRectToOverlay(const OverlayColor *buf, int pitch, int x, int y, int w, int h) { -} - -int16 OSystem_NULL::getOverlayHeight() { - return getHeight(); -} - -int16 OSystem_NULL::getOverlayWidth() { - return getWidth(); -} - - -bool OSystem_NULL::showMouse(bool visible) { - return true; -} - -void OSystem_NULL::warpMouse(int x, int y) { -} - -void OSystem_NULL::setMouseCursor(const byte *buf, uint w, uint h, int hotspotX, int hotspotY, uint32 keycolor, int cursorTargetScale, const Graphics::PixelFormat *format) { -} - bool OSystem_NULL::pollEvent(Common::Event &event) { return false; } uint32 OSystem_NULL::getMillis() { -#ifdef UNIX - timeval curTime; - gettimeofday(&curTime, NULL); - return (uint32)(((curTime.tv_sec - _startTime.tv_sec) * 1000) + \ - ((curTime.tv_usec - _startTime.tv_usec) / 1000)); -#else return 0; -#endif } void OSystem_NULL::delayMillis(uint msecs) { -#ifdef UNIX - usleep(msecs * 1000); -#endif -} - -OSystem::MutexRef OSystem_NULL::createMutex(void) { - return NULL; -} - -void OSystem_NULL::lockMutex(MutexRef mutex) { -} - -void OSystem_NULL::unlockMutex(MutexRef mutex) { -} - -void OSystem_NULL::deleteMutex(MutexRef mutex) { -} - -void OSystem_NULL::quit() { -} - -Common::SaveFileManager *OSystem_NULL::getSavefileManager() { - assert(_savefile); - return _savefile; } -Audio::Mixer *OSystem_NULL::getMixer() { - assert(_mixer); - return _mixer; -} - -Common::TimerManager *OSystem_NULL::getTimerManager() { - assert(_timer); - return _timer; -} +#define DEFAULT_CONFIG_FILE "scummvm.ini" -void OSystem_NULL::getTimeAndDate(TimeDate &t) const { +Common::SeekableReadStream *OSystem_NULL::createConfigReadStream() { + Common::FSNode file(DEFAULT_CONFIG_FILE); + return file.createReadStream(); } -FilesystemFactory *OSystem_NULL::getFilesystemFactory() { - return _fsFactory; +Common::WriteStream *OSystem_NULL::createConfigWriteStream() { + Common::FSNode file(DEFAULT_CONFIG_FILE); + return file.createWriteStream(); } OSystem *OSystem_NULL_create() { @@ -330,7 +126,7 @@ int main(int argc, char *argv[]) { // Invoke the actual ScummVM main entry point: int res = scummvm_main(argc, argv); - g_system->quit(); // TODO: Consider removing / replacing this! + delete (OSystem_NULL *)g_system; return res; } |