Migrate more prints to font::, determine font for most textboxes

Some textboxes need to be in the level font (like room names, cutscene
dialogue, etc - even in the main game), and some need to be in the
interface font (like when you collect a shiny trinket or crewmate). So
most of these textboxes now have graphics.textboxprintflags(font_flag)
as appropriate.

RoomnameTranslator.cpp is now also migrated to the new print system -
in room name translator mode, the room name is now displayed in the 8x8
font if it's untranslated and the level font if it is.
This commit is contained in:
Dav999-v
2023-01-13 05:11:39 +01:00
committed by Misa Elizabeth Kai
parent 6ca83114bc
commit 48a4e19635
11 changed files with 157 additions and 56 deletions

View File

@@ -1,6 +1,7 @@
#include "RoomnameTranslator.h"
#include "Constants.h"
#include "Font.h"
#include "Game.h"
#include "Graphics.h"
#include "GraphicsUtil.h"
@@ -44,10 +45,10 @@ namespace roomname_translator
{
use_explanation = "[no explanation]";
}
graphics.PrintWrap(0, 10, use_explanation, 0,192,255, false, 8, 320);
font::print_wrap(PR_BOR | PR_FONT_8X8, 0, 10, use_explanation, 0,192,255, 8, 320);
}
void overlay_render(bool* force_roomname_hidden, int* roomname_r, int* roomname_g, int* roomname_b)
void overlay_render(bool* force_roomname_hidden, bool* roomname_untranslated, int* roomname_r, int* roomname_g, int* roomname_b)
{
if (edit_mode || help_screen)
{
@@ -60,59 +61,69 @@ namespace roomname_translator
graphics.set_blendmode(SDL_BLENDMODE_NONE);
if (help_screen)
{
graphics.bprint(0, 0, "=== Room name translation mode help ===", 255,255,255);
font::print(PR_BOR | PR_FONT_8X8, 0, 0, "=== Room name translation mode help ===", 255,255,255);
if (expl_mode)
{
graphics.bprint(0, 20, "You can currently access EXPL mode to", 255,255,255);
graphics.bprint(0, 30, "set explanations for room names.", 255,255,255);
graphics.bprint(0, 40, "(Use Ctrl+E to switch to NAME mode.)", 255,255,255);
font::print_wrap(
PR_BOR | PR_FONT_8X8,
0, 20,
"You can currently access EXPL mode to\n"
"set explanations for room names.\n"
"(Use Ctrl+E to switch to NAME mode.)",
255,255,255
);
const char* first_part = "Unexplained room names are ";
graphics.bprint(0, 60, first_part, 255,255,255);
graphics.bprint(graphics.len(first_part), 60, "cyan.", 64, 255, 255-help.glow);
font::print(PR_BOR | PR_FONT_8X8, 0, 60, first_part, 255,255,255);
font::print(PR_BOR | PR_FONT_8X8, graphics.len(first_part), 60, "cyan.", 64, 255, 255-help.glow);
}
else
{
graphics.bprint(0, 20, "You can currently access NAME mode to", 255,255,255);
graphics.bprint(0, 30, "translate room names.", 255,255,255);
graphics.bprint(0, 40, "(Use Ctrl+E to switch to EXPL mode.)", 255,255,255);
font::print_wrap(
PR_BOR | PR_FONT_8X8,
0, 20,
"You can currently access NAME mode to\n"
"translate room names.\n"
"(Use Ctrl+E to switch to EXPL mode.)",
255,255,255
);
const char* first_part = "English room names are ";
graphics.bprint(0, 60, first_part, 255,255,255);
graphics.bprint(graphics.len(first_part), 60, "cyan.", 0, 192, 255-help.glow);
font::print(PR_BOR | PR_FONT_8X8, 0, 60, first_part, 255,255,255);
font::print(PR_BOR | PR_FONT_8X8, graphics.len(first_part), 60, "cyan.", 0, 192, 255-help.glow);
}
graphics.bprint(0, 80, "KEYS:", 255,255,255);
font::print(PR_BOR | PR_FONT_8X8, 0, 80, "KEYS:", 255,255,255);
if (expl_mode)
{
graphics.bprint(0, 90, "Tab - switch between play/expl modes", 255,255,255);
graphics.bprint(0, 100, "E/Enter - set room name explanation", 255,255,255);
font::print(PR_BOR | PR_FONT_8X8, 0, 90, "Tab - switch between play/expl modes", 255,255,255);
font::print(PR_BOR | PR_FONT_8X8, 0, 100, "E/Enter - set room name explanation", 255,255,255);
}
else
{
graphics.bprint(0, 90, "Tab - switch between play/name modes", 255,255,255);
graphics.bprint(0, 100, "E/Enter - set room name translation", 255,255,255);
font::print(PR_BOR | PR_FONT_8X8, 0, 90, "Tab - switch between play/name modes", 255,255,255);
font::print(PR_BOR | PR_FONT_8X8, 0, 100, "E/Enter - set room name translation", 255,255,255);
}
graphics.bprint(0, 110, "I - toggle invincibility", 255,255,255);
font::print(PR_BOR | PR_FONT_8X8, 0, 110, "I - toggle invincibility", 255,255,255);
if (expl_mode)
{
graphics.bprint(0, 120, ". - set blank explanation", 255,255,255);
font::print(PR_BOR | PR_FONT_8X8, 0, 120, ". - set blank explanation", 255,255,255);
}
*force_roomname_hidden = true;
return;
}
else if (expl_mode)
{
graphics.bprint(0, 0, "Expl mode [TAB]", 255,255,255);
font::print(PR_BOR | PR_FONT_8X8, 0, 0, "Expl mode [TAB]", 255,255,255);
}
else
{
graphics.bprint(0, 0, "Name mode [TAB]", 255,255,255);
font::print(PR_BOR | PR_FONT_8X8, 0, 0, "Name mode [TAB]", 255,255,255);
}
}
else
{
graphics.bprint(0, 0, "Play mode [TAB]", 255,255,255);
graphics.bprint(320-64, 10, "F1: Help", 192,192,192);
font::print(PR_BOR | PR_FONT_8X8, 0, 0, "Play mode [TAB]", 255,255,255);
font::print(PR_BOR | PR_FONT_8X8, 320-64, 10, "F1: Help", 192,192,192);
}
char buffer[SCREEN_WIDTH_CHARS + 1];
@@ -128,11 +139,11 @@ namespace roomname_translator
}
vformat_buf(buffer, sizeof(buffer), "{n|digits=3|spaces} left", "n:int", n_left);
graphics.bprint(144, 0, buffer, 255,255,255);
font::print(PR_BOR | PR_FONT_8X8, 144, 0, buffer, 255,255,255);
if (map.invincibility)
{
graphics.bprint(224, 0, "INV", 255,255,128);
font::print(PR_BOR | PR_FONT_8X8, 224, 0, "INV", 255,255,128);
}
vformat_buf(buffer, sizeof(buffer),
@@ -140,7 +151,7 @@ namespace roomname_translator
"x:int, y:int",
game.roomx % 100, game.roomy % 100
);
graphics.bprint(320-56, 0, buffer, 255,255,255);
font::print(PR_BOR | PR_FONT_8X8, 320-56, 0, buffer, 255,255,255);
if (map.roomname_special)
{
@@ -154,13 +165,14 @@ namespace roomname_translator
// No room name at all, so no translation/explanation interface
if (edit_mode)
{
graphics.bprint(-1, 221, "[no roomname]", 0,192,255, true);
font::print(PR_CEN | PR_BOR | PR_FONT_8X8, -1, 229-font::height(PR_FONT_LEVEL), "[no roomname]", 0,192,255);
}
}
else if (!expl_mode)
{
// Name mode affects play mode a bit as well...
bool roomname_is_translated = loc::get_roomname_translation(map.custommode, game.roomx, game.roomy)[0] != '\0';
*roomname_untranslated = !roomname_is_translated;
if (edit_mode)
{
@@ -173,21 +185,21 @@ namespace roomname_translator
{
english_roomname = map.roomname;
}
graphics.bprint(-1, 221, english_roomname, 0,192,255, true);
font::print(PR_CEN | PR_BOR | PR_FONT_8X8, -1, 229-font::height(PR_FONT_LEVEL), english_roomname, 0,192,255);
print_explanation(loc::get_roomname_explanation(map.custommode, game.roomx, game.roomy));
if (key.textentry())
{
*force_roomname_hidden = true;
graphics.render_roomname(key.keybuffer.c_str(), 255,255,255);
int name_w = graphics.len(key.keybuffer);
graphics.bprint((320-name_w)/2+name_w, 231, "_", 255,255,255);
graphics.render_roomname(PR_FONT_LEVEL, key.keybuffer.c_str(), 255,255,255);
int name_w = font::len(PR_FONT_LEVEL, key.keybuffer);
font::print(PR_BOR | PR_FONT_LEVEL, (320-name_w)/2+name_w, 231, "_", 255,255,255);
}
else if (!roomname_is_translated)
{
*force_roomname_hidden = true;
graphics.render_roomname("[no translation]", 255,255,128);
graphics.render_roomname(PR_FONT_8X8, "[no translation]", 255,255,128);
}
}
else if (!roomname_is_translated)
@@ -214,7 +226,7 @@ namespace roomname_translator
{
print_explanation((key.keybuffer + "_").c_str());
graphics.PrintWrap(0, 90, "Use \".\" to set no explanation", 255,255,255, false, 8, 320);
font::print_wrap(PR_BOR | PR_FONT_8X8, 0, 90, "Use \".\" to set no explanation", 255,255,255, 8, 320);
}
else
{
@@ -248,11 +260,15 @@ namespace roomname_translator
if (loc::save_roomname_explanation_to_files(map.custommode, game.roomx, game.roomy, explanation))
{
graphics.createtextboxflipme(success_message, -1, 176, 174, 174, 174);
graphics.textboxprintflags(PR_FONT_8X8);
graphics.textboxcenterx();
graphics.textboxtimer(25);
}
else
{
graphics.createtextboxflipme("ERROR: Could not save to all langs!", -1, 176, 255, 60, 60);
graphics.textboxprintflags(PR_FONT_8X8);
graphics.textboxcenterx();
graphics.textboxtimer(50);
}
}
@@ -262,6 +278,8 @@ namespace roomname_translator
if (loc::save_roomname_to_file(loc::lang, map.custommode, game.roomx, game.roomy, translation, NULL))
{
graphics.createtextboxflipme("Translation saved!", -1, 176, 174, 174, 174);
graphics.textboxprintflags(PR_FONT_8X8);
graphics.textboxcenterx();
graphics.textboxtimer(25);
}
else
@@ -271,6 +289,7 @@ namespace roomname_translator
graphics.addline("1) Do the language files exist?");
graphics.addline("2) Make sure there is no \"lang\"");
graphics.addline(" folder next to the regular saves.");
graphics.textboxprintflags(PR_FONT_8X8);
graphics.textboxcenterx();
graphics.textboxtimer(180);
}
@@ -330,6 +349,8 @@ namespace roomname_translator
if (loc::lang == "en")
{
graphics.createtextboxflipme("ERROR: Can't add EN-EN translation", -1, 176, 255, 60, 60);
graphics.textboxprintflags(PR_FONT_8X8);
graphics.textboxcenterx();
graphics.textboxtimer(50);
}
else