mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-02-14 11:01:38 +00:00
RetroAchievements: Better handling of not being online when trying to log in
This commit is contained in:
parent
c6d33957af
commit
aa4264a192
@ -56,7 +56,7 @@ void OnScreenDisplay::Show(OSDType type, const std::string &text, const std::str
|
|||||||
switch (type) {
|
switch (type) {
|
||||||
case OSDType::MESSAGE_ERROR:
|
case OSDType::MESSAGE_ERROR:
|
||||||
case OSDType::MESSAGE_WARNING:
|
case OSDType::MESSAGE_WARNING:
|
||||||
duration_s = 3.0f;
|
duration_s = 4.0f;
|
||||||
break;
|
break;
|
||||||
case OSDType::MESSAGE_FILE_LINK:
|
case OSDType::MESSAGE_FILE_LINK:
|
||||||
duration_s = 5.0f;
|
duration_s = 5.0f;
|
||||||
|
@ -57,21 +57,6 @@ static inline const char *DeNull(const char *ptr) {
|
|||||||
return ptr ? ptr : "";
|
return ptr ? ptr : "";
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSDOpenBackgroundProgressDialog(const char *str_id, std::string message, s32 min, s32 max, s32 value) {
|
|
||||||
NOTICE_LOG(ACHIEVEMENTS, "Progress dialog opened: %s %s", str_id, message.c_str());
|
|
||||||
g_OSD.SetProgressBar(str_id, std::move(message), min, max, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
void OSDUpdateBackgroundProgressDialog(const char *str_id, std::string message, s32 min, s32 max, s32 value) {
|
|
||||||
NOTICE_LOG(ACHIEVEMENTS, "Progress dialog updated: %s %s %d/(%d->%d)", str_id, message.c_str(), value, min, max);
|
|
||||||
g_OSD.SetProgressBar(str_id, std::move(message), min, max, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
void OSDCloseBackgroundProgressDialog(const char *str_id) {
|
|
||||||
NOTICE_LOG(ACHIEVEMENTS, "Progress dialog closed: %s", str_id);
|
|
||||||
g_OSD.RemoveProgressBar(str_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnAchievementsLoginStateChange() {
|
void OnAchievementsLoginStateChange() {
|
||||||
System_PostUIMessage("achievements_loginstatechange", "");
|
System_PostUIMessage("achievements_loginstatechange", "");
|
||||||
}
|
}
|
||||||
@ -233,9 +218,8 @@ static void server_call_callback(const rc_api_request_t *request,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write log messages to the console
|
|
||||||
static void log_message_callback(const char *message, const rc_client_t *client) {
|
static void log_message_callback(const char *message, const rc_client_t *client) {
|
||||||
INFO_LOG(ACHIEVEMENTS, "RetroAchievements log: %s", message);
|
INFO_LOG(ACHIEVEMENTS, "RetroAchievements: %s", message);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void login_token_callback(int result, const char *error_message, rc_client_t *client, void *userdata) {
|
static void login_token_callback(int result, const char *error_message, rc_client_t *client, void *userdata) {
|
||||||
@ -243,10 +227,17 @@ static void login_token_callback(int result, const char *error_message, rc_clien
|
|||||||
case RC_OK:
|
case RC_OK:
|
||||||
OnAchievementsLoginStateChange();
|
OnAchievementsLoginStateChange();
|
||||||
break;
|
break;
|
||||||
|
case RC_NO_RESPONSE:
|
||||||
|
{
|
||||||
|
auto di = GetI18NCategory(I18NCat::DIALOG);
|
||||||
|
g_OSD.Show(OSDType::MESSAGE_WARNING, di->T("Failed to connect to server, check your internet connection."));
|
||||||
|
break;
|
||||||
|
}
|
||||||
case RC_INVALID_STATE:
|
case RC_INVALID_STATE:
|
||||||
case RC_API_FAILURE:
|
case RC_API_FAILURE:
|
||||||
case RC_MISSING_VALUE:
|
case RC_MISSING_VALUE:
|
||||||
case RC_INVALID_JSON:
|
case RC_INVALID_JSON:
|
||||||
|
default:
|
||||||
ERROR_LOG(ACHIEVEMENTS, "Failure logging in via token: %d, %s", result, error_message);
|
ERROR_LOG(ACHIEVEMENTS, "Failure logging in via token: %d, %s", result, error_message);
|
||||||
OnAchievementsLoginStateChange();
|
OnAchievementsLoginStateChange();
|
||||||
break;
|
break;
|
||||||
@ -400,10 +391,17 @@ static void login_password_callback(int result, const char *error_message, rc_cl
|
|||||||
g_OSD.Show(OSDType::MESSAGE_SUCCESS, di->T("Logged in!"));
|
g_OSD.Show(OSDType::MESSAGE_SUCCESS, di->T("Logged in!"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case RC_NO_RESPONSE:
|
||||||
|
{
|
||||||
|
auto di = GetI18NCategory(I18NCat::DIALOG);
|
||||||
|
g_OSD.Show(OSDType::MESSAGE_WARNING, di->T("Failed to connect to server, check your internet connection."));
|
||||||
|
break;
|
||||||
|
}
|
||||||
case RC_INVALID_STATE:
|
case RC_INVALID_STATE:
|
||||||
case RC_API_FAILURE:
|
case RC_API_FAILURE:
|
||||||
case RC_MISSING_VALUE:
|
case RC_MISSING_VALUE:
|
||||||
case RC_INVALID_JSON:
|
case RC_INVALID_JSON:
|
||||||
|
default:
|
||||||
{
|
{
|
||||||
ERROR_LOG(ACHIEVEMENTS, "Failure logging in via password: %d, %s", result, error_message);
|
ERROR_LOG(ACHIEVEMENTS, "Failure logging in via password: %d, %s", result, error_message);
|
||||||
g_OSD.Show(OSDType::MESSAGE_WARNING, di->T("Failed to log in, check your username and password."));
|
g_OSD.Show(OSDType::MESSAGE_WARNING, di->T("Failed to log in, check your username and password."));
|
||||||
@ -412,14 +410,16 @@ static void login_password_callback(int result, const char *error_message, rc_cl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OSDCloseBackgroundProgressDialog("cheevos_async_login");
|
g_OSD.RemoveProgressBar("cheevos_async_login");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LoginAsync(const char *username, const char *password) {
|
bool LoginAsync(const char *username, const char *password) {
|
||||||
|
auto di = GetI18NCategory(I18NCat::DIALOG);
|
||||||
if (IsLoggedIn() || std::strlen(username) == 0 || std::strlen(password) == 0 || IsUsingRAIntegration())
|
if (IsLoggedIn() || std::strlen(username) == 0 || std::strlen(password) == 0 || IsUsingRAIntegration())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
OSDOpenBackgroundProgressDialog("cheevos_async_login", "Logging in to RetroAchivements...", 0, 0, 0);
|
g_OSD.SetProgressBar("cheevos_async_login", di->T("Logging in..."), 0, 0, 0);
|
||||||
|
|
||||||
rc_client_begin_login_with_password(g_rcClient, username, password, &login_password_callback, nullptr);
|
rc_client_begin_login_with_password(g_rcClient, username, password, &login_password_callback, nullptr);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -853,10 +853,12 @@ void GameSettingsScreen::CreateSystemSettings(UI::ViewGroup *systemSettings) {
|
|||||||
|
|
||||||
systemSettings->Add(new ItemHeader(sy->T("UI")));
|
systemSettings->Add(new ItemHeader(sy->T("UI")));
|
||||||
|
|
||||||
systemSettings->Add(new Choice(sy->T("RetroAchievements")))->OnClick.Add([&](UI::EventParams &) -> UI::EventReturn {
|
auto retro = systemSettings->Add(new Choice(sy->T("RetroAchievements")));
|
||||||
|
retro->OnClick.Add([&](UI::EventParams &) -> UI::EventReturn {
|
||||||
screenManager()->push(new RetroAchievementsSettingsScreen(gamePath_));
|
screenManager()->push(new RetroAchievementsSettingsScreen(gamePath_));
|
||||||
return UI::EVENT_DONE;
|
return UI::EVENT_DONE;
|
||||||
});
|
});
|
||||||
|
retro->SetIcon(ImageID("I_RETROACHIEVEMENTS_LOGO"));
|
||||||
|
|
||||||
auto langCodeToName = [](const char *value) -> std::string {
|
auto langCodeToName = [](const char *value) -> std::string {
|
||||||
auto &mapping = g_Config.GetLangValuesMapping();
|
auto &mapping = g_Config.GetLangValuesMapping();
|
||||||
|
@ -38,10 +38,10 @@ static uint32_t GetNoticeBackgroundColor(NoticeLevel type) {
|
|||||||
|
|
||||||
static ImageID GetOSDIcon(NoticeLevel level) {
|
static ImageID GetOSDIcon(NoticeLevel level) {
|
||||||
switch (level) {
|
switch (level) {
|
||||||
case NoticeLevel::INFO: return ImageID::invalid(); // return ImageID("I_INFO");
|
case NoticeLevel::INFO: return ImageID("I_INFO");
|
||||||
case NoticeLevel::ERROR: return ImageID("I_CROSS");
|
case NoticeLevel::ERROR: return ImageID("I_CROSS");
|
||||||
case NoticeLevel::WARN: return ImageID("I_WARNING");
|
case NoticeLevel::WARN: return ImageID("I_WARNING");
|
||||||
case NoticeLevel::SUCCESS: return ImageID("I_CHECKEDBOX");
|
case NoticeLevel::SUCCESS: return ImageID("I_CHECKMARK");
|
||||||
default: return ImageID::invalid();
|
default: return ImageID::invalid();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,6 @@ Sound Effects = Sound Effects
|
|||||||
Statistics = Statistics
|
Statistics = Statistics
|
||||||
Syncing achievements data... = Syncing achievements data...
|
Syncing achievements data... = Syncing achievements data...
|
||||||
Test Mode = Test Mode
|
Test Mode = Test Mode
|
||||||
This game has no achievements = This game has no achievements
|
|
||||||
Unlocked achievements = Unlocked achievements
|
Unlocked achievements = Unlocked achievements
|
||||||
Unofficial achievements = Unofficial achievements
|
Unofficial achievements = Unofficial achievements
|
||||||
|
|
||||||
@ -361,6 +360,7 @@ Enable All = Enable all
|
|||||||
Enabled = Enabled
|
Enabled = Enabled
|
||||||
Enter = Enter
|
Enter = Enter
|
||||||
Failed to log in, check your username and password. = Failed to log in, check your username and password.
|
Failed to log in, check your username and password. = Failed to log in, check your username and password.
|
||||||
|
Failed to connect to server, check your internet connection. = Failed to connect to server, check your internet connection.
|
||||||
Filter = Filter
|
Filter = Filter
|
||||||
Finish = Finish
|
Finish = Finish
|
||||||
GE Frame Dumps = GE Frame Dumps
|
GE Frame Dumps = GE Frame Dumps
|
||||||
@ -373,6 +373,7 @@ Loading = Loading\nPlease Wait...
|
|||||||
LoadingFailed = Unable to load data.
|
LoadingFailed = Unable to load data.
|
||||||
Log in = Log in
|
Log in = Log in
|
||||||
Log out = Log out
|
Log out = Log out
|
||||||
|
Logging in... = Logging in...
|
||||||
Logged in! = Logged in!
|
Logged in! = Logged in!
|
||||||
Move = Move
|
Move = Move
|
||||||
Move Up = Move Up
|
Move Up = Move Up
|
||||||
|
@ -25,7 +25,6 @@ Sound Effects = Ljudeffekter
|
|||||||
Statistics = Statistik
|
Statistics = Statistik
|
||||||
Syncing achievements data... = Synkar achievementdata...
|
Syncing achievements data... = Synkar achievementdata...
|
||||||
Test Mode = Test-läge
|
Test Mode = Test-läge
|
||||||
This game has no achievements = Detta spel har inga achievements
|
|
||||||
Unlocked achievements = Upplåsta achievements
|
Unlocked achievements = Upplåsta achievements
|
||||||
Unofficial achievements = Inofficiella achievements
|
Unofficial achievements = Inofficiella achievements
|
||||||
|
|
||||||
|
@ -294,7 +294,7 @@ struct Bucket {
|
|||||||
printf("PACKING FAIL : height=%i", (int)dest.dat.size());
|
printf("PACKING FAIL : height=%i", (int)dest.dat.size());
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
dest.resize(image_width, NextPowerOf2((int)dest.dat.size()));
|
dest.resize(image_width, (int)dest.dat.size());
|
||||||
|
|
||||||
// Output the glyph data.
|
// Output the glyph data.
|
||||||
vector<Data> dats;
|
vector<Data> dats;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user