#pragma once #include "stdafx.h" #include "MovieManager.h" #include "VirtualFile.h" #include "BatteryManager.h" #include "INotificationListener.h" class ZipReader; class Console; struct CodeInfo; class MesenMovie : public IMovie, public INotificationListener, public IBatteryProvider, public std::enable_shared_from_this { private: shared_ptr _console; VirtualFile _movieFile; shared_ptr _reader; bool _playing = false; size_t _deviceIndex = 0; vector> _inputData; vector _cheats; std::unordered_map _settings; string _filename; private: void ParseSettings(stringstream &data); void ApplySettings(); bool LoadGame(); void Stop(); uint32_t LoadInt(std::unordered_map &settings, string name, uint32_t defaultValue = 0); bool LoadBool(std::unordered_map &settings, string name); string LoadString(std::unordered_map &settings, string name); void LoadCheats(); bool LoadCheat(string cheatData, CodeInfo &code); public: MesenMovie(shared_ptr console); virtual ~MesenMovie(); bool Play(VirtualFile &file) override; bool SetInput(BaseControlDevice* device) override; bool IsPlaying() override; // Inherited via IBatteryProvider virtual vector LoadBattery(string extension) override; // Inherited via INotificationListener virtual void ProcessNotification(ConsoleNotificationType type, void * parameter) override; };