1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-25 06:35:30 +00:00
OpenMW/apps/openmw/mwbase/inputmanager.hpp

94 lines
3.2 KiB
C++
Raw Normal View History

#ifndef GAME_MWBASE_INPUTMANAGER_H
#define GAME_MWBASE_INPUTMANAGER_H
#include <set>
2022-09-22 21:26:05 +03:00
#include <string>
#include <vector>
2021-06-26 23:10:24 +02:00
#include <SDL_gamecontroller.h>
#include <cstdint>
2016-10-20 02:12:01 +02:00
namespace Loading
{
class Listener;
}
namespace ESM
{
class ESMReader;
class ESMWriter;
}
namespace MWBase
{
/// \brief Interface for input manager (implemented in MWInput)
class InputManager
{
2022-09-22 21:26:05 +03:00
InputManager(const InputManager&);
///< not implemented
2022-09-22 21:26:05 +03:00
InputManager& operator=(const InputManager&);
///< not implemented
2022-09-22 21:26:05 +03:00
public:
InputManager() {}
2022-09-22 21:26:05 +03:00
/// Clear all savegame-specific data
virtual void clear() = 0;
2022-09-22 21:26:05 +03:00
virtual ~InputManager() {}
2022-09-22 21:26:05 +03:00
virtual void update(float dt, bool disableControls, bool disableEvents = false) = 0;
2022-09-22 21:26:05 +03:00
virtual void changeInputMode(bool guiMode) = 0;
2022-09-22 21:26:05 +03:00
virtual void processChangedSettings(const std::set<std::pair<std::string, std::string>>& changed) = 0;
2022-09-22 21:26:05 +03:00
virtual void setDragDrop(bool dragDrop) = 0;
virtual void setGamepadGuiCursorEnabled(bool enabled) = 0;
2022-09-22 21:26:05 +03:00
virtual void toggleControlSwitch(std::string_view sw, bool value) = 0;
virtual bool getControlSwitch(std::string_view sw) = 0;
2012-08-13 01:26:15 +02:00
2022-09-22 21:26:05 +03:00
virtual std::string_view getActionDescription(int action) const = 0;
virtual std::string getActionKeyBindingName(int action) const = 0;
virtual std::string getActionControllerBindingName(int action) const = 0;
virtual bool actionIsActive(int action) const = 0;
2021-06-26 23:10:24 +02:00
2022-09-22 21:26:05 +03:00
virtual float getActionValue(int action) const = 0; // returns value in range [0, 1]
virtual bool isControllerButtonPressed(SDL_GameControllerButton button) const = 0;
virtual float getControllerAxisValue(SDL_GameControllerAxis axis) const = 0; // returns value in range [-1, 1]
virtual int getMouseMoveX() const = 0;
virtual int getMouseMoveY() const = 0;
2021-06-26 23:10:24 +02:00
2022-09-22 21:26:05 +03:00
/// Actions available for binding to keyboard buttons
virtual const std::initializer_list<int>& getActionKeySorting() = 0;
/// Actions available for binding to controller buttons
virtual const std::initializer_list<int>& getActionControllerSorting() = 0;
virtual int getNumActions() = 0;
/// If keyboard is true, only pay attention to keyboard events. If false, only pay attention to controller
/// events (excluding esc)
virtual void enableDetectingBindingMode(int action, bool keyboard) = 0;
virtual void resetToDefaultKeyBindings() = 0;
virtual void resetToDefaultControllerBindings() = 0;
2014-12-20 14:46:11 -06:00
2022-09-22 21:26:05 +03:00
/// Returns if the last used input device was a joystick or a keyboard
/// @return true if joystick, false otherwise
virtual bool joystickLastUsed() = 0;
virtual void setJoystickLastUsed(bool enabled) = 0;
2016-10-20 02:12:01 +02:00
2022-09-22 21:26:05 +03:00
virtual int countSavedGameRecords() const = 0;
virtual void write(ESM::ESMWriter& writer, Loading::Listener& progress) = 0;
virtual void readRecord(ESM::ESMReader& reader, uint32_t type) = 0;
2022-09-22 21:26:05 +03:00
virtual void resetIdleTime() = 0;
virtual bool isIdle() const = 0;
2022-09-22 21:26:05 +03:00
virtual void executeAction(int action) = 0;
2020-05-26 10:58:24 +04:00
2022-09-22 21:26:05 +03:00
virtual bool controlsDisabled() = 0;
};
}
#endif