DiscordPresence.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // Copyright 2018 Dolphin Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <functional>
  5. #include <string>
  6. namespace Discord
  7. {
  8. // The number is the client ID for Dolphin, it's used for images and the application name
  9. const std::string DEFAULT_CLIENT_ID = "455712169795780630";
  10. class Handler
  11. {
  12. public:
  13. virtual ~Handler();
  14. virtual void DiscordJoin() = 0;
  15. virtual void DiscordJoinRequest(const char* id, const std::string& discord_tag,
  16. const char* avatar) = 0;
  17. };
  18. enum class SecretType
  19. {
  20. Empty,
  21. IPAddress,
  22. RoomID,
  23. };
  24. void Init();
  25. void InitNetPlayFunctionality(Handler& handler);
  26. void CallPendingCallbacks();
  27. void UpdateClientID(const std::string& new_client = {});
  28. bool UpdateDiscordPresenceRaw(const std::string& details = {}, const std::string& state = {},
  29. const std::string& large_image_key = {},
  30. const std::string& large_image_text = {},
  31. const std::string& small_image_key = {},
  32. const std::string& small_image_text = {},
  33. const int64_t start_timestamp = 0, const int64_t end_timestamp = 0,
  34. const int party_size = 0, const int party_max = 0);
  35. void UpdateDiscordPresence(int party_size = 0, SecretType type = SecretType::Empty,
  36. const std::string& secret = {}, const std::string& current_game = {},
  37. const bool reset_timer = false);
  38. std::string CreateSecretFromIPAddress(const std::string& ip_address, int port);
  39. void Shutdown();
  40. void SetDiscordPresenceEnabled(bool enabled);
  41. } // namespace Discord