Fixed file select texts to be responsive

This commit is contained in:
KiritoDev 2021-06-03 00:10:49 -05:00
parent a472370f32
commit 7002e12223
8 changed files with 115 additions and 32 deletions

View File

@ -294,7 +294,10 @@ void print_hud_lut_string(s8 hudLUT, s16 x, s16 y, const u8 *str) {
void print_menu_generic_string(s16 x, s16 y, const u8 *str) {
moon_draw_text(x, SCREEN_HEIGHT - y, str, 0.8f);
float scale = 0.8f;
// gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);
// moon_draw_text(x + 0.2 * scale, SCREEN_HEIGHT - y, str, scale);
moon_draw_scaled_text(x, SCREEN_HEIGHT - y, str, scale, scale - 0.1f);
}
void print_credits_string(s16 x, s16 y, const u8 *str) {

View File

@ -356,7 +356,8 @@ void save_file_erase(s32 fileIndex) {
bzero(&gSaveBuffer.files[fileIndex][0], sizeof(gSaveBuffer.files[fileIndex][0]));
gSaveFileModified = TRUE;
save_file_do_save(fileIndex);
eraseSaveFile(fileIndex);
}
//! Needs to be s32 to match on -O2, despite no return value.

View File

@ -1584,9 +1584,15 @@ void score_menu_display_message(s8 messageID) {
gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_end);
break;
case SCORE_MSG_NOSAVE_DATA:
print_generic_string_fade(NOSAVE_DATA_X1, 190, get_key_string("TEXT_NO_SAVED_DATA_EXISTS"));
gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);
u8* txt = get_key_string("TEXT_NO_SAVED_DATA_EXISTS");
float x = moon_get_text_width(txt, 1.0, FALSE) / 2;
moon_draw_text(SCREEN_WIDTH / 2 - x, 205, txt, 1.0);
gSPDisplayList(gDisplayListHead++, dl_ia_text_end);
break;
}
}
#define RETURN_X 44
@ -1625,17 +1631,26 @@ void print_score_menu_strings(void) {
// Print menu names
gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);
print_generic_string(RETURN_X, 35, get_key_string("TEXT_RETURN"));
print_generic_string(COPYFILE_X1, 35, get_key_string("TEXT_COPY_FILE_BUTTON"));
print_generic_string(ERASEFILE_X1, 35, get_key_string("TEXT_ERASE_FILE_BUTTON"));
u8* txt = get_key_string("TEXT_RETURN");
float x = moon_get_text_width(txt, 1.0, FALSE) / 2;
moon_draw_text(RETURN_X + 18.5f - x, 52, txt, 1.0);
txt = get_key_string("TEXT_COPY_FILE_BUTTON");
x = moon_get_text_width(txt, 1.0, FALSE) / 2;
moon_draw_text(COPYFILE_X1 + 26 - x, 52, txt, 1.0);
txt = get_key_string("TEXT_ERASE_FILE_BUTTON");
x = moon_get_text_width(txt, 1.0, FALSE) / 2;
moon_draw_text(ERASEFILE_X1 + 26 - x, 52, txt, 1.0);
gSPDisplayList(gDisplayListHead++, dl_ia_text_end);
// Print file names
gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_begin);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);
print_menu_generic_string(89, 62, get_key_string("TEXT_FILE_MARIO_A"));
print_menu_generic_string(211, 62, get_key_string("TEXT_FILE_MARIO_B"));
print_menu_generic_string(89, 105, get_key_string("TEXT_FILE_MARIO_C"));
print_menu_generic_string(89, 62, get_key_string("TEXT_FILE_MARIO_A"));
print_menu_generic_string(211, 62, get_key_string("TEXT_FILE_MARIO_B"));
print_menu_generic_string(89, 105, get_key_string("TEXT_FILE_MARIO_C"));
print_menu_generic_string(211, 105, get_key_string("TEXT_FILE_MARIO_D"));
gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_end);
}
@ -1652,12 +1667,14 @@ void print_score_menu_strings(void) {
*/
void copy_menu_display_message(s8 messageID) {
u8* txt;
char* key = NULL;
float x;
switch (messageID) {
case COPY_MSG_MAIN_TEXT:
if (sAllFilesExist == TRUE) {
print_generic_string_fade(NOFILE_COPY_X, 190, get_key_string("TEXT_NO_FILE_TO_COPY_FROM"));
key = "TEXT_NO_FILE_TO_COPY_FROM";
} else {
key = NULL;
gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_begin);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);
txt = get_key_string("TEXT_COPY_FILE");
@ -1667,18 +1684,28 @@ void copy_menu_display_message(s8 messageID) {
}
break;
case COPY_MSG_COPY_WHERE:
print_generic_string_fade(COPYIT_WHERE_X, 190, get_key_string("TEXT_COPY_IT_TO_WHERE"));
key = "TEXT_COPY_IT_TO_WHERE";
break;
case COPY_MSG_NOSAVE_EXISTS:
print_generic_string_fade(NOSAVE_DATA_X2, 190, get_key_string("TEXT_NO_SAVED_DATA_EXISTS"));
key = "TEXT_NO_SAVED_DATA_EXISTS";
break;
case COPY_MSG_COPY_COMPLETE:
print_generic_string_fade(COPYCOMPLETE_X, 190, get_key_string("TEXT_COPYING_COMPLETED"));
key = "TEXT_COPYING_COMPLETED";
break;
case COPY_MSG_SAVE_EXISTS:
print_generic_string_fade(SAVE_EXISTS_X1, 190, get_key_string("TEXT_SAVED_DATA_EXISTS"));
key = "TEXT_SAVED_DATA_EXISTS";
break;
}
if(key == NULL) return;
gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);
txt = get_key_string(key);
x = moon_get_text_width(txt, 1.0, FALSE) / 2;
moon_draw_text(SCREEN_WIDTH / 2 - x, 205, txt, 1.0);
gSPDisplayList(gDisplayListHead++, dl_ia_text_end);
}
/**
@ -1748,9 +1775,20 @@ void print_copy_menu_strings(void) {
// Print menu names
gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);
print_generic_string(RETURN_X, 35, get_key_string("TEXT_RETURN"));
print_generic_string(VIEWSCORE_X1, 35, get_key_string("TEXT_CHECK_SCORE"));
print_generic_string(ERASEFILE_X2, 35, get_key_string("TEXT_ERASE_FILE_BUTTON"));
u8* txt = get_key_string("TEXT_RETURN");
float x = moon_get_text_width(txt, 1.0, FALSE) / 2;
moon_draw_text(RETURN_X + 18.5f - x, 52, txt, 1.0);
txt = get_key_string("TEXT_CHECK_SCORE");
x = moon_get_text_width(txt, 1.0, FALSE) / 2;
moon_draw_text(COPYFILE_X1 + 26 - x, 52, txt, 1.0);
txt = get_key_string("TEXT_ERASE_FILE_BUTTON");
x = moon_get_text_width(txt, 1.0, FALSE) / 2;
moon_draw_text(ERASEFILE_X1 + 28 - x, 52, txt, 1.0);
gSPDisplayList(gDisplayListHead++, dl_ia_text_end);
gSPDisplayList(gDisplayListHead++, dl_ia_text_end);
// Print file names
gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_begin);
@ -1847,11 +1885,12 @@ void print_erase_menu_prompt(s16 x, s16 y) {
* Defines IDs for the top message of the erase menu and displays it if the ID is called in messageID.
*/
void erase_menu_display_message(s8 messageID) {
u8 textMarioAJustErased[] = { get_key_string("TEXT_FILE_MARIO_A_JUST_ERASED") };
char* key = NULL;
u8* txt;
float x;
switch (messageID) {
case ERASE_MSG_MAIN_TEXT:
key = NULL;
gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_begin);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);
txt = get_key_string("TEXT_ERASE_FILE");
@ -1860,20 +1899,30 @@ void erase_menu_display_message(s8 messageID) {
gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_end);
break;
case ERASE_MSG_PROMPT:
key = NULL;
print_generic_string_fade(90, 190, get_key_string("TEXT_SURE"));
print_erase_menu_prompt(90, 190); // YES NO, has functions for it too
break;
return;
case ERASE_MSG_NOSAVE_EXISTS:
print_generic_string_fade(NOSAVE_DATA_X3, 190, get_key_string("TEXT_NO_SAVED_DATA_EXISTS"));
key = "TEXT_NO_SAVED_DATA_EXISTS";
break;
case ERASE_MSG_MARIO_ERASED:
textMarioAJustErased[MARIO_ERASED_VAR] = sSelectedFileIndex + 10;
print_generic_string_fade(MARIO_ERASED_X, 190, textMarioAJustErased);
key = "TEXT_FILE_MARIO_A_JUST_ERASED";
break;
case ERASE_MSG_SAVE_EXISTS: // unused
print_generic_string_fade(SAVE_EXISTS_X2, 190, get_key_string("TEXT_SAVED_DATA_EXISTS"));
key = "TEXT_SAVED_DATA_EXISTS";
break;
}
if(key == NULL) return;
gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);
txt = get_key_string(key);
x = moon_get_text_width(txt, 1.0, FALSE) / 2;
moon_draw_text(SCREEN_WIDTH / 2 - x, 205, txt, 1.0);
gSPDisplayList(gDisplayListHead++, dl_ia_text_end);
}
/**
@ -1944,9 +1993,18 @@ void print_erase_menu_strings(void) {
gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);
print_generic_string(RETURN_X, 35, get_key_string("TEXT_RETURN"));
print_generic_string(VIEWSCORE_X2, 35, get_key_string("TEXT_CHECK_SCORE"));
print_generic_string(COPYFILE_X2, 35, get_key_string("TEXT_COPY_FILE_BUTTON"));
u8* txt = get_key_string("TEXT_RETURN");
float x = moon_get_text_width(txt, 1.0, FALSE) / 2;
moon_draw_text(RETURN_X + 18.5f - x, 52, txt, 1.0);
txt = get_key_string("TEXT_CHECK_SCORE");
x = moon_get_text_width(txt, 1.0, FALSE) / 2;
moon_draw_text(COPYFILE_X1 + 26 - x, 52, txt, 1.0);
txt = get_key_string("TEXT_COPY_FILE_BUTTON");
x = moon_get_text_width(txt, 1.0, FALSE) / 2;
moon_draw_text(ERASEFILE_X1 + 28 - x, 52, txt, 1.0);
gSPDisplayList(gDisplayListHead++, dl_ia_text_end);
// Print file names

View File

@ -130,7 +130,8 @@ namespace MoonInternal{
#endif
if(shouldUpdate){
int expectedY = aEntry->height + 45;
if (aEntry->launchTime == 0)
if (aEntry->launchTime == 1)
play_sound(soundID, gGlobalSoundSource);
aEntry->dead = aEntry->launchTime >= aEntry->achievement->duration + 35 && floor(aEntry->width) <= 0;
@ -139,7 +140,7 @@ namespace MoonInternal{
aEntry->y = MathUtil::Lerp(aEntry->y, !shouldClose ? expectedY : 0, !shouldClose ? 0.17f : 0.28f);
if(ceil(aEntry->y) >= ceil(expectedY) || shouldClose)
aEntry->width = MathUtil::Lerp(aEntry->width, !shouldClose ? achievementWidth : 0, !shouldClose ? 0.2f : 0.39f);
aEntry->width = MathUtil::Lerp(aEntry->width, !shouldClose ? achievementWidth : 0, !shouldClose ? 0.2f : 0.45f);
aEntry->launchTime++;
}

View File

@ -204,6 +204,17 @@ namespace MoonInternal {
memcpy(&gSaveBuffer.files[fileIndex][1], &gSaveBuffer.files[fileIndex][0], sizeof(gSaveBuffer.files[fileIndex][1]));
}
void eraseSaveFile( int fileIndex ){
#ifndef TARGET_SWITCH
string cwd = MoonInternal::getEnvironmentVar("MOON_UPATH");
string path = cwd.substr(0, cwd.find_last_of("/\\")) + "/moon64/Moon64-Save-"+to_string(fileIndex + 1)+".dat";
#else
string path = "sdmc:/moon64/Moon64-Save-"+to_string(fileIndex + 1)+".dat";
#endif
if(fs::exists(path))
fs::remove(path);
}
void setupSaveEngine(string state){
if(state == "PreInit"){
// Scan old save format
@ -251,4 +262,7 @@ extern "C"{
void readSaveFile(int saveIndex){
MoonInternal::readSaveFile(saveIndex);
}
void eraseSaveFile(int fileIndex){
MoonInternal::eraseSaveFile(fileIndex);
}
}

View File

@ -10,5 +10,6 @@ namespace MoonInternal {
#else
void writeSaveFile(int saveIndex);
void readSaveFile(int saveIndex);
void eraseSaveFile(int fileIndex);
#endif
#endif

View File

@ -48,15 +48,15 @@ void moon_draw_colored_text(f32 x, f32 y, const u8 *str, float scale, struct Col
}
}
void moon_draw_text(f32 x, f32 y, const u8 *str, float scale) {
void moon_draw_scaled_text(f32 x, f32 y, const u8 *str, float scaleX, float scaleY) {
UNUSED s8 mark = DIALOG_MARK_NONE;
s32 strPos = 0;
u8 lineNum = 1;
y -= 16 * scale;
y -= 16 * scaleY;
Mtx *_Matrix = (Mtx *) alloc_display_list(sizeof(Mtx));
if (!_Matrix) return;
guScale(_Matrix, scale, scale, 1.f);
guScale(_Matrix, scaleX, scaleY, 1.f);
create_dl_translation_matrix(MENU_MTX_PUSH, x, y, 0.0f);
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(_Matrix), G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH);
@ -94,7 +94,7 @@ void moon_draw_text(f32 x, f32 y, const u8 *str, float scale) {
render_generic_char(str[strPos]);
if (mark != DIALOG_MARK_NONE) {
//create_dl_translation_matrix(MENU_MTX_PUSH, 5.0f, 5.0f, 0.0f);
guScale(gDisplayListHead++, scale, scale, scale);
guScale(gDisplayListHead++, scaleX, scaleY, 1.f);
render_generic_char(mark + 0xEF);
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
mark = DIALOG_MARK_NONE;
@ -109,6 +109,10 @@ void moon_draw_text(f32 x, f32 y, const u8 *str, float scale) {
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
}
void moon_draw_text(f32 x, f32 y, const u8 *str, float scale) {
moon_draw_scaled_text(x, y, str, scale, scale);
}
Vtx *make_rect_verts(float w, float h) {
Vtx *verts = alloc_display_list(4 * sizeof(*verts));

View File

@ -12,6 +12,7 @@ struct Color {
long long moon_get_milliseconds();
f32 moon_get_text_width(u8* text, float scale, u8 colored);
void moon_draw_colored_text(f32 x, f32 y, const u8 *str, float scale, struct Color c);
void moon_draw_scaled_text(f32 x, f32 y, const u8 *str, float scaleX, float scaleY);
void moon_draw_text(f32 x, f32 y, const u8 *str, float scale);
void moon_draw_rectangle(f32 x, f32 y, f32 w, f32 h, struct Color c, u8 u4_3);
void moon_draw_texture(s32 x, s32 y, u32 w, u32 h, char *texture);