kodi
AgentMouse.h
1 /*
2 * Copyright (C) 2024 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8 
9 #pragma once
10 
11 #include "games/controllers/ControllerTypes.h"
12 #include "input/mouse/interfaces/IMouseInputHandler.h"
13 #include "peripherals/PeripheralTypes.h"
14 
15 namespace KODI
16 {
17 namespace GAME
18 {
19 class CControllerActivity;
20 
27 {
28 public:
29  CAgentMouse(PERIPHERALS::PeripheralPtr peripheral);
30 
31  ~CAgentMouse() override;
32 
33  void Initialize();
34  void Deinitialize();
35  void ClearButtonState();
36 
37  // Input parameters
38  float GetActivation() const;
39  ControllerPtr Appearance() const { return m_controllerAppearance; }
40 
41  // Implementation of IMouseInputHandler
42  std::string ControllerID() const override;
43  bool OnMotion(const MOUSE::PointerName& relpointer, int differenceX, int differenceY) override;
44  bool OnButtonPress(const MOUSE::ButtonName& button) override;
45  void OnButtonRelease(const MOUSE::ButtonName& button) override;
46  void OnInputFrame() override;
47 
48 private:
49  static INPUT::INTERCARDINAL_DIRECTION GetPointerDirection(int differenceX, int differenceY);
50 
51  // Construction parameters
52  const PERIPHERALS::PeripheralPtr m_peripheral;
53 
54  // Input properties
55  std::unique_ptr<CControllerActivity> m_mouseActivity;
56  ControllerPtr m_controllerAppearance;
57 
58  // Input state
59  bool m_bStarted{false};
60  int m_startX{0};
61  int m_startY{0};
62  int m_frameCount{0};
63 };
64 } // namespace GAME
65 } // namespace KODI
std::string ControllerID() const override
The controller profile for this mouse input handler.
Definition: AgentMouse.cpp:61
std::string ButtonName
Name of a mouse button.
Definition: MouseTypes.h:45
void OnInputFrame() override
Called at the end of the frame that provided input.
Definition: AgentMouse.cpp:83
Definition: AudioDecoder.h:18
Handles mouse events for game agent functionality.
Definition: AgentMouse.h:26
std::string PointerName
Name of the mouse pointer.
Definition: MouseTypes.h:57
std::shared_ptr< CController > ControllerPtr
Smart pointer to a game controller (CController)
Definition: ControllerTypes.h:25
Interface for handling mouse events.
Definition: IMouseInputHandler.h:24
bool OnMotion(const MOUSE::PointerName &relpointer, int differenceX, int differenceY) override
A relative pointer has moved.
Definition: AgentMouse.cpp:66
void OnButtonRelease(const MOUSE::ButtonName &button) override
A mouse button has been released.
Definition: AgentMouse.cpp:78
bool OnButtonPress(const MOUSE::ButtonName &button) override
A mouse button has been pressed.
Definition: AgentMouse.cpp:72