UI: Five minute coding adventure gone wrong (Fixing splashes) (#160)

With help from LotP I added error logging and made some minor adjustments to the display of splash text in cases where there was no splash to display. Thanks for dealing with my shenanigans LotP.

Reviewed-on: https://git.ryujinx.app/projects/Ryubing/pulls/160
This commit is contained in:
awesomeangotti
2026-07-03 22:42:38 +00:00
committed by LotP
parent 134773e95f
commit 97aed15d19
2 changed files with 35 additions and 29 deletions

View File

@@ -2,7 +2,6 @@ using System.Collections.Generic;
using Ryujinx.Common.Logging; using Ryujinx.Common.Logging;
using Gommon; using Gommon;
using Ryujinx.Ava.Systems.Configuration; using Ryujinx.Ava.Systems.Configuration;
using System;
using System.Text.Json; using System.Text.Json;
namespace Ryujinx.Common namespace Ryujinx.Common
@@ -11,47 +10,48 @@ namespace Ryujinx.Common
{ {
public static void PrintSplash() public static void PrintSplash()
{ {
string splash = GetSplash();
Logger.Notice.Print(LogClass.Application, " ___ __ _ "); Logger.Notice.Print(LogClass.Application, " ___ __ _ ");
Logger.Notice.Print(LogClass.Application, @" / _ \ __ __ __ __ / / (_) ___ ___ _"); Logger.Notice.Print(LogClass.Application, @" / _ \ __ __ __ __ / / (_) ___ ___ _");
Logger.Notice.Print(LogClass.Application, @" / , _/ / // // // / / _ \ / / / _ \ / _ `/"); Logger.Notice.Print(LogClass.Application, @" / , _/ / // // // / / _ \ / / / _ \ / _ `/");
Logger.Notice.Print(LogClass.Application, @"/_/|_| \_, / \_,_/ /_.__//_/ /_//_/ \_, / "); Logger.Notice.Print(LogClass.Application, @"/_/|_| \_, / \_,_/ /_.__//_/ /_//_/ \_, / ");
Logger.Notice.Print(LogClass.Application, " /___/ /___/ "); Logger.Notice.Print(LogClass.Application, " /___/ /___/ ");
Logger.Notice.Print(LogClass.Application, "");
Logger.Notice.Print(LogClass.Application, GetSplash()); if (splash is null)
Logger.Notice.Print(LogClass.Application, ""); {
Logger.Error?.Print(LogClass.Application, "Failed to fetch Splash Text! Splash JSON is invalid!");
return;
}
if (!splash.IsNullOrEmpty())
{
Logger.Notice.Print(LogClass.Application, "");
Logger.Notice.Print(LogClass.Application, splash);
Logger.Notice.Print(LogClass.Application, "");
}
} }
private static string s_finalSplash = ""; private static string _finalSplash;
public static string GetSplash() public static string GetSplash()
{ {
if (string.IsNullOrEmpty(s_finalSplash)) if (_finalSplash is null)
{ {
s_finalSplash = GetLangJson(); try
if (string.IsNullOrEmpty(s_finalSplash))
{ {
s_finalSplash = "Splash Text"; string data;
data = EmbeddedResources.ReadAllText("Ryujinx/Assets/Splashes.json");
SplashLocales splashJson = JsonSerializer.Deserialize<SplashLocales>(data);
_finalSplash = splashJson.Locales[ConfigurationState.Instance.UI.LanguageCode.Value].GetRandomElement() ?? "";
}
catch
{
return null;
} }
} }
return $"{s_finalSplash}"; return _finalSplash;
}
private static SplashLocales s_splashJson;
private static string GetLangJson()
{
try
{
string data;
data = EmbeddedResources.ReadAllText("Ryujinx/Assets/Splashes.json");
s_splashJson = JsonSerializer.Deserialize<SplashLocales>(data);
return s_splashJson.Locales[ConfigurationState.Instance.UI.LanguageCode.Value].GetRandomElement();
}
catch
{
return "";
}
} }
private struct SplashLocales private struct SplashLocales

View File

@@ -1260,7 +1260,13 @@ namespace Ryujinx.Ava.UI.ViewModels
break; break;
case ShaderCacheLoadingState shaderCacheState: case ShaderCacheLoadingState shaderCacheState:
CacheLoadStatus = $"{current} / {total}"; CacheLoadStatus = $"{current} / {total}";
Splash = $"\"{SplashTextHelper.GetSplash()}\"";
string splash = SplashTextHelper.GetSplash();
if (!splash.IsNullOrEmpty())
{
Splash = $"\"{splash}\"";
}
switch (shaderCacheState) switch (shaderCacheState)
{ {
case ShaderCacheLoadingState.Start: case ShaderCacheLoadingState.Start: