#pragma once #include #include #include #include #include class InputSettings final { public: std::unordered_map gamepads{}; bool grabbing = false; int whichGrabbing = -1; int currentlySelectedDeviceIndex = -1; std::unordered_map gamepadIndexes{}; std::array kbButtons = { gui::PushButton{"", "A"}, gui::PushButton{"", "B"}, gui::PushButton{"", "Z"}, gui::PushButton{"", "Start"}, gui::PushButton{"", "L"}, gui::PushButton{"", "R"}, gui::PushButton{"", "Dpad Up"}, gui::PushButton{"", "Dpad Down"}, gui::PushButton{"", "Dpad Left"}, gui::PushButton{"", "Dpad Right"}, gui::PushButton{"", "C Up"}, gui::PushButton{"", "C Down"}, gui::PushButton{"", "C Left"}, gui::PushButton{"", "C Right"}, gui::PushButton{"", "Analog Up"}, gui::PushButton{"", "Analog Down"}, gui::PushButton{"", "Analog Left"}, gui::PushButton{"", "Analog Right"}, }; gui::Combobox devices{"Device:", {}}; bool modified = false; //std::unique_ptr AB = std::make_unique(); //std::unique_ptr ZStart = std::make_unique(); //std::unique_ptr LR = std::make_unique(); //std::unique_ptr DupDdown = std::make_unique(); //std::unique_ptr DleftDright = std::make_unique(); //std::unique_ptr CupCdown = std::make_unique(); //std::unique_ptr CleftCright = std::make_unique(); //std::unique_ptr AupAdown = std::make_unique(); //std::unique_ptr AleftAright = std::make_unique(); //std::unique_ptr mainLayout = std::make_unique(); //std::array, 18> kbButtons; //std::array, 18> buttonLabels; //std::unique_ptr deviceComboBoxLayout = std::make_unique(); //QTimer refresh, pollGamepad; //std::unique_ptr devicesLabel = std::make_unique("Device:"); //std::unique_ptr devices = std::make_unique(); //Q_OBJECT bool render(); bool selectedDeviceIsNotKeyboard = false; explicit InputSettings(nlohmann::json &); void setModified(bool v) { modified = v; } bool getModified() { return modified; } nlohmann::json &settings; std::array GetMappedKeys(); void RegisterEventWatchers(); void UnregisterEventWatchers(); };