diff --git a/UI/RetroAchievements.cpp b/UI/RetroAchievements.cpp index 89791a097f..e9a8715d6c 100644 --- a/UI/RetroAchievements.cpp +++ b/UI/RetroAchievements.cpp @@ -1,13 +1,48 @@ #include "ext/rcheevos/include/rcheevos.h" +#include "ext/rcheevos/include/rc_api_user.h" #include "UI/RetroAchievements.h" RetroAchievements g_retroAchievements; -void RetroAchievements::Init() { - +RetroAchievements::RetroAchievements() { + runtime_ = rc_runtime_alloc(); } -void RetroAchievements::Shutdown() { +RetroAchievements::~RetroAchievements() { + if (runtime_) { + rc_runtime_destroy(runtime_); + } +} + +void RetroAchievements::Login(const char *username, const char *password) { + rc_api_login_request_t api_params{}; + + api_params.username = username; + api_params.api_token = password; + + rc_api_request_t api_request; + rc_api_init_login_request(&api_request, &api_params); + + /* + rc_api_login_response_t api_response; + int result = rc_api_process_login_response(&api_response, response_body); + if (result != RC_OK) + { + handle_error(status_code, rc_error_str(result)); + } else if (!api_response.response.succeeded) + { + handle_error(status_code, api_response.response.error_message); + } else + { + handle_success(&api_response); + } + + rc_api_destroy_login_response(&api_response); + free(response_body); + */ +} + +void RetroAchievements::Logout() { } diff --git a/UI/RetroAchievements.h b/UI/RetroAchievements.h index 6db4649f69..418a15ae00 100644 --- a/UI/RetroAchievements.h +++ b/UI/RetroAchievements.h @@ -1,11 +1,25 @@ #pragma once #include "ext/rcheevos/include/rcheevos.h" +#include "ext/rcheevos/include/rc_runtime.h" + +enum class RetroState { + NONE, + LOGGED_IN, +}; class RetroAchievements { public: - void Init(); - void Shutdown(); + RetroAchievements(); + ~RetroAchievements(); + + void Login(const char *username, const char *password); + void Logout(); + +private: + RetroState state_ = RetroState::LOGGED_IN; + + rc_runtime_t *runtime_ = nullptr; }; extern RetroAchievements g_retroAchievements;