#include "stdafx.h" #include #include "../Utilities/FolderUtilities.h" #include "../Utilities/VirtualFile.h" #include "../Utilities/ZipReader.h" #include "MovieManager.h" #include "MesenMovie.h" #include "MovieRecorder.h" shared_ptr MovieManager::_player; shared_ptr MovieManager::_recorder; void MovieManager::Record(RecordMovieOptions options, shared_ptr console) { shared_ptr recorder(new MovieRecorder(console)); if(recorder->Record(options)) { _recorder = recorder; } } void MovieManager::Play(VirtualFile file, shared_ptr console) { vector fileData; if(file.IsValid() && file.ReadFile(fileData)) { shared_ptr player; if(memcmp(fileData.data(), "PK", 2) == 0) { //Mesen movie ZipReader reader; reader.LoadArchive(fileData); vector files = reader.GetFileList(); if(std::find(files.begin(), files.end(), "GameSettings.txt") != files.end()) { player.reset(new MesenMovie(console)); } } if(player && player->Play(file)) { _player = player; MessageManager::DisplayMessage("Movies", "MoviePlaying", file.GetFileName()); } } } void MovieManager::Stop() { _player.reset(); if(_recorder) { _recorder->Stop(); _recorder.reset(); } } bool MovieManager::Playing() { shared_ptr player = _player; return player && player->IsPlaying(); } bool MovieManager::Recording() { return _recorder != nullptr; }