Fix the theme extdata error screen (#109)

* fix theme extdata not being present hanging the console

* custom draw_text_center function that takes care of newlines so the theme extdata error text is no longer broken
This commit is contained in:
LiquidFenrir
2017-12-09 06:50:34 +01:00
committed by GitHub
parent f261f152c9
commit b72f266e40
2 changed files with 35 additions and 8 deletions

View File

@@ -94,6 +94,32 @@ static void draw_base_interface(void)
pp2d_draw_on(GFX_TOP, GFX_LEFT);
}
static void draw_text_center(gfxScreen_t target, float y, float scaleX, float scaleY, u32 color, const char* text)
{
char * _text = strdup(text);
float prevY = y;
int offset = 0;
while(true)
{
char *nline = strchr(_text+offset, '\n');
int nlinepos = 0;
if(nline != NULL)
{
nlinepos = nline-_text;
_text[nlinepos] = '\0';
}
pp2d_draw_text_center(target, prevY, scaleX, scaleY, color, _text+offset);
if(nline == NULL) break;
else
{
prevY += pp2d_get_text_height(_text+offset, scaleX, scaleY);
_text[nlinepos] = '\n';
offset = nlinepos+1;
}
}
free(_text);
}
void throw_error(char* error, ErrorLevel level)
{
switch(level)
@@ -104,10 +130,10 @@ void throw_error(char* error, ErrorLevel level)
hidScanInput();
u32 kDown = hidKeysDown();
draw_base_interface();
pp2d_draw_text_center(GFX_TOP, 120, 0.6, 0.6, COLOR_RED, error);
draw_text_center(GFX_TOP, 100, 0.6, 0.6, COLOR_RED, error);
pp2d_draw_wtext_center(GFX_TOP, 150, 0.6, 0.6, COLOR_WHITE, L"Press \uE000 to shut down.");
pp2d_end_draw();
if(kDown & KEY_A) exit_function();
if(kDown & KEY_A) break;
}
break;
case ERROR_LEVEL_WARNING:
@@ -116,7 +142,7 @@ void throw_error(char* error, ErrorLevel level)
hidScanInput();
u32 kDown = hidKeysDown();
draw_base_interface();
pp2d_draw_text_center(GFX_TOP, 120, 0.6, 0.6, COLOR_YELLOW, error);
draw_text_center(GFX_TOP, 100, 0.6, 0.6, COLOR_YELLOW, error);
pp2d_draw_wtext_center(GFX_TOP, 150, 0.6, 0.6, COLOR_WHITE, L"Press \uE000 to continue.");
pp2d_end_draw();
if(kDown & KEY_A) break;

View File

@@ -140,6 +140,12 @@ int main(void)
while(aptMainLoop())
{
if(R_FAILED(archive_result) && current_mode == MODE_THEMES)
{
throw_error("Theme extdata does not exist!\nSet a default theme from the home menu.", ERROR_LEVEL_ERROR);
break;
}
hidScanInput();
u32 kDown = hidKeysDown();
u32 kHeld = hidKeysHeld();
@@ -154,11 +160,6 @@ int main(void)
if(kDown & KEY_START) break;
if(R_FAILED(archive_result) && current_mode == MODE_THEMES)
{
throw_error("Theme extdata does not exist!\nSet a default theme from the home menu.", ERROR_LEVEL_ERROR);
continue;
}
if(!install_mode)
{