xbmc
GameClientSubsystem.h
1 /*
2  * Copyright (C) 2017-2018 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 <memory>
12 
13 struct AddonInstance_Game;
14 class CCriticalSection;
15 
16 namespace KODI
17 {
18 namespace GAME
19 {
20 class CGameClient;
21 class CGameClientCheevos;
22 class CGameClientInput;
23 class CGameClientProperties;
24 class CGameClientStreams;
25 
27 {
28  std::unique_ptr<CGameClientCheevos> Cheevos;
29  std::unique_ptr<CGameClientInput> Input;
30  std::unique_ptr<CGameClientProperties> AddonProperties;
31  std::unique_ptr<CGameClientStreams> Streams;
32 };
33 
38 {
39 protected:
41  AddonInstance_Game& addonStruct,
42  CCriticalSection& clientAccess);
43 
44  virtual ~CGameClientSubsystem();
45 
46 public:
56  static GameClientSubsystems CreateSubsystems(CGameClient& gameClient,
57  AddonInstance_Game& gameStruct,
58  CCriticalSection& clientAccess);
59 
65  static void DestroySubsystems(GameClientSubsystems& subsystems);
66 
67 protected:
68  // Subsystems
69  CGameClientCheevos& Cheevos() const;
70  CGameClientInput& Input() const;
71  CGameClientProperties& AddonProperties() const;
72  CGameClientStreams& Streams() const;
73 
74  // Construction parameters
75  CGameClient& m_gameClient;
76  AddonInstance_Game& m_struct;
77  CCriticalSection& m_clientAccess;
78 };
79 
80 } // namespace GAME
81 } // namespace KODI
Base class for game client subsystems.
Definition: GameClientSubsystem.h:37
Definition: GameClientInput.h:43
Definition: GameClientCheevos.h:28
Interface between Kodi and Game add-ons.
Definition: GameClient.h:115
Controller configuration window.
Definition: AudioDecoder.h:18
C++ wrapper for properties to pass to the DLL.
Definition: GameClientProperties.h:39
Definition: GameClientSubsystem.h:26
Game instance.
Definition: game.h:1223
Definition: GameClientStreams.h:29