diff options
-rw-r--r-- | common/EventRecorder.cpp | 73 | ||||
-rw-r--r-- | common/EventRecorder.h | 35 | ||||
-rw-r--r-- | engines/toon/toon.cpp | 1 |
3 files changed, 56 insertions, 53 deletions
diff --git a/common/EventRecorder.cpp b/common/EventRecorder.cpp index 2ce57b8502..07a651be65 100644 --- a/common/EventRecorder.cpp +++ b/common/EventRecorder.cpp @@ -27,6 +27,7 @@ #include "common/config-manager.h" #include "common/random.h" +#include "common/savefile.h" DECLARE_SINGLETON(Common::EventRecorder); @@ -35,25 +36,25 @@ namespace Common { #define RECORD_SIGNATURE 0x54455354 #define RECORD_VERSION 1 -void readRecord(Common::InSaveFile *inFile, uint32 &diff, Common::Event &event) { +void readRecord(SeekableReadStream *inFile, uint32 &diff, Event &event) { diff = inFile->readUint32LE(); - event.type = (Common::EventType)inFile->readUint32LE(); + event.type = (EventType)inFile->readUint32LE(); switch (event.type) { - case Common::EVENT_KEYDOWN: - case Common::EVENT_KEYUP: - event.kbd.keycode = (Common::KeyCode)inFile->readSint32LE(); + case EVENT_KEYDOWN: + case EVENT_KEYUP: + event.kbd.keycode = (KeyCode)inFile->readSint32LE(); event.kbd.ascii = inFile->readUint16LE(); event.kbd.flags = inFile->readByte(); break; - case Common::EVENT_MOUSEMOVE: - case Common::EVENT_LBUTTONDOWN: - case Common::EVENT_LBUTTONUP: - case Common::EVENT_RBUTTONDOWN: - case Common::EVENT_RBUTTONUP: - case Common::EVENT_WHEELUP: - case Common::EVENT_WHEELDOWN: + case EVENT_MOUSEMOVE: + case EVENT_LBUTTONDOWN: + case EVENT_LBUTTONUP: + case EVENT_RBUTTONDOWN: + case EVENT_RBUTTONUP: + case EVENT_WHEELUP: + case EVENT_WHEELDOWN: event.mouse.x = inFile->readSint16LE(); event.mouse.y = inFile->readSint16LE(); break; @@ -62,25 +63,25 @@ void readRecord(Common::InSaveFile *inFile, uint32 &diff, Common::Event &event) } } -void writeRecord(Common::OutSaveFile *outFile, uint32 diff, const Common::Event &event) { +void writeRecord(WriteStream *outFile, uint32 diff, const Event &event) { outFile->writeUint32LE(diff); outFile->writeUint32LE((uint32)event.type); switch (event.type) { - case Common::EVENT_KEYDOWN: - case Common::EVENT_KEYUP: + case EVENT_KEYDOWN: + case EVENT_KEYUP: outFile->writeSint32LE(event.kbd.keycode); outFile->writeUint16LE(event.kbd.ascii); outFile->writeByte(event.kbd.flags); break; - case Common::EVENT_MOUSEMOVE: - case Common::EVENT_LBUTTONDOWN: - case Common::EVENT_LBUTTONUP: - case Common::EVENT_RBUTTONDOWN: - case Common::EVENT_RBUTTONUP: - case Common::EVENT_WHEELUP: - case Common::EVENT_WHEELDOWN: + case EVENT_MOUSEMOVE: + case EVENT_LBUTTONDOWN: + case EVENT_LBUTTONUP: + case EVENT_RBUTTONDOWN: + case EVENT_RBUTTONUP: + case EVENT_WHEELUP: + case EVENT_WHEELDOWN: outFile->writeSint16LE(event.mouse.x); outFile->writeSint16LE(event.mouse.y); break; @@ -109,7 +110,7 @@ EventRecorder::~EventRecorder() { } void EventRecorder::init() { - Common::String recordModeString = ConfMan.get("record_mode"); + String recordModeString = ConfMan.get("record_mode"); if (recordModeString.compareToIgnoreCase("record") == 0) { _recordMode = kRecorderRecord; } else { @@ -236,7 +237,7 @@ void EventRecorder::deinit() { for (uint i = 0; i < _recordCount; ++i) { uint32 tempDiff; - Common::Event tempEvent; + Event tempEvent; readRecord(_playbackFile, tempDiff, tempEvent); writeRecord(_recordFile, tempDiff, tempEvent); } @@ -252,7 +253,7 @@ void EventRecorder::deinit() { g_system->deleteMutex(_recorderMutex); } -void EventRecorder::registerRandomSource(Common::RandomSource &rnd, const char *name) { +void EventRecorder::registerRandomSource(RandomSource &rnd, const char *name) { if (_recordMode == kRecorderRecord) { RandomSourceRecord rec; rec.name = name; @@ -305,11 +306,11 @@ void EventRecorder::processMillis(uint32 &millis) { g_system->unlockMutex(_timeMutex); } -bool EventRecorder::notifyEvent(const Common::Event &ev) { +bool EventRecorder::notifyEvent(const Event &ev) { if (_recordMode != kRecorderRecord) return false; - Common::StackLock lock(_recorderMutex); + StackLock lock(_recorderMutex); ++_eventCount; writeRecord(_recordFile, _eventCount - _lastEventCount, ev); @@ -320,11 +321,11 @@ bool EventRecorder::notifyEvent(const Common::Event &ev) { return false; } -bool EventRecorder::pollEvent(Common::Event &ev) { +bool EventRecorder::pollEvent(Event &ev) { if (_recordMode != kRecorderPlayback) return false; - Common::StackLock lock(_recorderMutex); + StackLock lock(_recorderMutex); ++_eventCount; if (!_hasPlaybackEvent) { @@ -338,13 +339,13 @@ bool EventRecorder::pollEvent(Common::Event &ev) { if (_hasPlaybackEvent) { if (_playbackDiff <= (_eventCount - _lastEventCount)) { switch (_playbackEvent.type) { - case Common::EVENT_MOUSEMOVE: - case Common::EVENT_LBUTTONDOWN: - case Common::EVENT_LBUTTONUP: - case Common::EVENT_RBUTTONDOWN: - case Common::EVENT_RBUTTONUP: - case Common::EVENT_WHEELUP: - case Common::EVENT_WHEELDOWN: + case EVENT_MOUSEMOVE: + case EVENT_LBUTTONDOWN: + case EVENT_LBUTTONUP: + case EVENT_RBUTTONDOWN: + case EVENT_RBUTTONUP: + case EVENT_WHEELUP: + case EVENT_WHEELDOWN: g_system->warpMouse(_playbackEvent.mouse.x, _playbackEvent.mouse.y); break; default: diff --git a/common/EventRecorder.h b/common/EventRecorder.h index 257d6f5ca0..19272c4e29 100644 --- a/common/EventRecorder.h +++ b/common/EventRecorder.h @@ -29,7 +29,6 @@ #include "common/scummsys.h" #include "common/events.h" #include "common/singleton.h" -#include "common/savefile.h" #include "common/mutex.h" #include "common/array.h" @@ -38,6 +37,8 @@ namespace Common { class RandomSource; +class SeekableReadStream; +class WriteStream; /** * Our generic event recorder. @@ -45,7 +46,7 @@ class RandomSource; * TODO: Add more documentation. */ class EventRecorder : private EventSource, private EventObserver, public Singleton<EventRecorder> { - friend class Common::Singleton<SingletonBaseType>; + friend class Singleton<SingletonBaseType>; EventRecorder(); ~EventRecorder(); public: @@ -53,40 +54,40 @@ public: void deinit(); /** Register random source so it can be serialized in game test purposes */ - void registerRandomSource(Common::RandomSource &rnd, const char *name); + void registerRandomSource(RandomSource &rnd, const char *name); /** TODO: Add documentation, this is only used by the backend */ void processMillis(uint32 &millis); private: - bool notifyEvent(const Common::Event &ev); - bool pollEvent(Common::Event &ev); + bool notifyEvent(const Event &ev); + bool pollEvent(Event &ev); bool allowMapping() const { return false; } class RandomSourceRecord { public: - Common::String name; + String name; uint32 seed; }; - Common::Array<RandomSourceRecord> _randomSourceRecords; + Array<RandomSourceRecord> _randomSourceRecords; bool _recordSubtitles; volatile uint32 _recordCount; volatile uint32 _lastRecordEvent; volatile uint32 _recordTimeCount; - Common::OutSaveFile *_recordFile; - Common::OutSaveFile *_recordTimeFile; - Common::MutexRef _timeMutex; - Common::MutexRef _recorderMutex; + WriteStream *_recordFile; + WriteStream *_recordTimeFile; + MutexRef _timeMutex; + MutexRef _recorderMutex; volatile uint32 _lastMillis; volatile uint32 _playbackCount; volatile uint32 _playbackDiff; volatile bool _hasPlaybackEvent; volatile uint32 _playbackTimeCount; - Common::Event _playbackEvent; - Common::InSaveFile *_playbackFile; - Common::InSaveFile *_playbackTimeFile; + Event _playbackEvent; + SeekableReadStream *_playbackFile; + SeekableReadStream *_playbackTimeFile; volatile uint32 _eventCount; volatile uint32 _lastEventCount; @@ -97,9 +98,9 @@ private: kRecorderPlayback = 2 }; volatile RecordMode _recordMode; - Common::String _recordFileName; - Common::String _recordTempFileName; - Common::String _recordTimeFileName; + String _recordFileName; + String _recordTempFileName; + String _recordTimeFileName; }; } // End of namespace Common diff --git a/engines/toon/toon.cpp b/engines/toon/toon.cpp index e91a895fd3..d86beadcd1 100644 --- a/engines/toon/toon.cpp +++ b/engines/toon/toon.cpp @@ -29,6 +29,7 @@ #include "common/archive.h" #include "common/config-manager.h" #include "common/EventRecorder.h" +#include "common/savefile.h" #include "engines/util.h" #include "graphics/surface.h" #include "graphics/thumbnail.h" |