xbmc
Cheevos.h
1 /*
2  * Copyright (C) 2020-2021 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 "RConsoleIDs.h"
12 
13 #include <cstdint>
14 #include <map>
15 #include <string>
16 
17 namespace KODI
18 {
19 namespace GAME
20 {
21 class CGameClient;
22 }
23 
24 namespace RETRO
25 {
26 class CCheevos
27 {
28 public:
29  CCheevos(GAME::CGameClient* gameClient,
30  const std::string& userName,
31  const std::string& loginToken);
32  void ResetRuntime();
33  void EnableRichPresence();
34  std::string GetRichPresenceEvaluation();
35 
36 private:
37  bool LoadData();
38  RConsoleID ConsoleID();
39 
40  GAME::CGameClient* const m_gameClient;
41  std::string m_userName;
42  std::string m_loginToken;
43  std::string m_romHash;
44  std::string m_richPresenceScript;
45  uint32_t m_gameID{};
46  RConsoleID m_consoleID = RConsoleID::RC_INVALID_ID;
47  bool m_richPresenceLoaded{};
48 
49  const std::map<std::string, RConsoleID> m_extensionToConsole = {
50  {".a26", RConsoleID::RC_CONSOLE_ATARI_2600},
51  {".a78", RConsoleID::RC_CONSOLE_ATARI_7800},
52  {".agb", RConsoleID::RC_CONSOLE_GAMEBOY_ADVANCE},
53  {".cdi", RConsoleID::RC_CONSOLE_DREAMCAST},
54  {".cdt", RConsoleID::RC_CONSOLE_AMSTRAD_PC},
55  {".cgb", RConsoleID::RC_CONSOLE_GAMEBOY_COLOR},
56  {".chd", RConsoleID::RC_CONSOLE_DREAMCAST},
57  {".cpr", RConsoleID::RC_CONSOLE_AMSTRAD_PC},
58  {".d64", RConsoleID::RC_CONSOLE_COMMODORE_64},
59  {".gb", RConsoleID::RC_CONSOLE_GAMEBOY},
60  {".gba", RConsoleID::RC_CONSOLE_GAMEBOY_ADVANCE},
61  {".gbc", RConsoleID::RC_CONSOLE_GAMEBOY_COLOR},
62  {".gdi", RConsoleID::RC_CONSOLE_DREAMCAST},
63  {".j64", RConsoleID::RC_CONSOLE_ATARI_JAGUAR},
64  {".jag", RConsoleID::RC_CONSOLE_ATARI_JAGUAR},
65  {".lnx", RConsoleID::RC_CONSOLE_ATARI_LYNX},
66  {".mds", RConsoleID::RC_CONSOLE_SATURN},
67  {".min", RConsoleID::RC_CONSOLE_POKEMON_MINI},
68  {".mx1", RConsoleID::RC_CONSOLE_MSX},
69  {".mx2", RConsoleID::RC_CONSOLE_MSX},
70  {".n64", RConsoleID::RC_CONSOLE_NINTENDO_64},
71  {".ndd", RConsoleID::RC_CONSOLE_NINTENDO_64},
72  {".nds", RConsoleID::RC_CONSOLE_NINTENDO_DS},
73  {".nes", RConsoleID::RC_CONSOLE_NINTENDO},
74  {".o", RConsoleID::RC_CONSOLE_ATARI_LYNX},
75  {".pce", RConsoleID::RC_CONSOLE_PC_ENGINE},
76  {".sfc", RConsoleID::RC_CONSOLE_SUPER_NINTENDO},
77  {".sgx", RConsoleID::RC_CONSOLE_PC_ENGINE},
78  {".smc", RConsoleID::RC_CONSOLE_SUPER_NINTENDO},
79  {".sna", RConsoleID::RC_CONSOLE_AMSTRAD_PC},
80  {".tap", RConsoleID::RC_CONSOLE_AMSTRAD_PC},
81  {".u1", RConsoleID::RC_CONSOLE_NINTENDO_64},
82  {".v64", RConsoleID::RC_CONSOLE_NINTENDO_64},
83  {".vb", RConsoleID::RC_CONSOLE_VIRTUAL_BOY},
84  {".vboy", RConsoleID::RC_CONSOLE_VIRTUAL_BOY},
85  {".vec", RConsoleID::RC_CONSOLE_VECTREX},
86  {".voc", RConsoleID::RC_CONSOLE_AMSTRAD_PC},
87  {".z64", RConsoleID::RC_CONSOLE_NINTENDO_64}};
88 };
89 } // namespace RETRO
90 } // namespace KODI
Definition: Cheevos.h:26
Interface between Kodi and Game add-ons.
Definition: GameClient.h:115
Controller configuration window.
Definition: AudioDecoder.h:18