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:
@@ -94,6 +94,32 @@ static void draw_base_interface(void)
|
|||||||
pp2d_draw_on(GFX_TOP, GFX_LEFT);
|
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)
|
void throw_error(char* error, ErrorLevel level)
|
||||||
{
|
{
|
||||||
switch(level)
|
switch(level)
|
||||||
@@ -104,10 +130,10 @@ void throw_error(char* error, ErrorLevel level)
|
|||||||
hidScanInput();
|
hidScanInput();
|
||||||
u32 kDown = hidKeysDown();
|
u32 kDown = hidKeysDown();
|
||||||
draw_base_interface();
|
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_draw_wtext_center(GFX_TOP, 150, 0.6, 0.6, COLOR_WHITE, L"Press \uE000 to shut down.");
|
||||||
pp2d_end_draw();
|
pp2d_end_draw();
|
||||||
if(kDown & KEY_A) exit_function();
|
if(kDown & KEY_A) break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ERROR_LEVEL_WARNING:
|
case ERROR_LEVEL_WARNING:
|
||||||
@@ -116,7 +142,7 @@ void throw_error(char* error, ErrorLevel level)
|
|||||||
hidScanInput();
|
hidScanInput();
|
||||||
u32 kDown = hidKeysDown();
|
u32 kDown = hidKeysDown();
|
||||||
draw_base_interface();
|
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_draw_wtext_center(GFX_TOP, 150, 0.6, 0.6, COLOR_WHITE, L"Press \uE000 to continue.");
|
||||||
pp2d_end_draw();
|
pp2d_end_draw();
|
||||||
if(kDown & KEY_A) break;
|
if(kDown & KEY_A) break;
|
||||||
|
|||||||
@@ -140,6 +140,12 @@ int main(void)
|
|||||||
|
|
||||||
while(aptMainLoop())
|
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();
|
hidScanInput();
|
||||||
u32 kDown = hidKeysDown();
|
u32 kDown = hidKeysDown();
|
||||||
u32 kHeld = hidKeysHeld();
|
u32 kHeld = hidKeysHeld();
|
||||||
@@ -154,11 +160,6 @@ int main(void)
|
|||||||
|
|
||||||
if(kDown & KEY_START) break;
|
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)
|
if(!install_mode)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user