#include "movie.h" #include "movie-bk2.h" #include <functional> #include <unordered_map> using namespace std; using namespace Retro; static unordered_map<string, function<unique_ptr<Movie>(const string&)>> s_movieTypes{ make_pair("bk2", MovieBK2::load), }; std::unique_ptr<Movie> Movie::load(const string& path) { size_t dot = path.find_last_of('.'); if (dot == string::npos) { return nullptr; } string extName = path.substr(dot + 1); const auto& found = s_movieTypes.find(extName); if (found == s_movieTypes.end()) { return nullptr; } return found->second(path); } bool Movie::getKey(int key) { return (m_keys >> key) & 1; } void Movie::setKey(int key, bool set) { m_keys &= ~(1 << key); m_keys |= set << key; }