1
0
Fork 0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-12-23 01:59:43 +01:00

Completely remove Graphics::Print, make many CJK positioning fixes

Only Graphics::PrintWrap is left of the old print functions!
This commit is contained in:
Dav999-v 2023-01-20 20:24:41 +01:00 committed by Misa Elizabeth Kai
parent cc6b00a711
commit 7ecff42e0e
4 changed files with 172 additions and 181 deletions

View file

@ -630,10 +630,10 @@ void editorrender(void)
ed.entcolreal = graphics.getcol(18); ed.entcolreal = graphics.getcol(18);
} }
graphics.draw_sprite((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8),ed.getenemyframe(room->enemytype),ed.entcolreal); graphics.draw_sprite((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8),ed.getenemyframe(room->enemytype),ed.entcolreal);
if(customentities[i].p1==0) graphics.Print((customentities[i].x*8)- (ed.levx*40*8)+4,(customentities[i].y*8)- (ed.levy*30*8)+4, "V", 255, 255, 255 - help.glow, false); if(customentities[i].p1==0) font::print(PR_FONT_8X8, (customentities[i].x*8)- (ed.levx*40*8)+4,(customentities[i].y*8)- (ed.levy*30*8)+4, "V", 255, 255, 255 - help.glow);
if(customentities[i].p1==1) graphics.Print((customentities[i].x*8)- (ed.levx*40*8)+4,(customentities[i].y*8)- (ed.levy*30*8)+4, "^", 255, 255, 255 - help.glow, false); if(customentities[i].p1==1) font::print(PR_FONT_8X8, (customentities[i].x*8)- (ed.levx*40*8)+4,(customentities[i].y*8)- (ed.levy*30*8)+4, "^", 255, 255, 255 - help.glow);
if(customentities[i].p1==2) graphics.Print((customentities[i].x*8)- (ed.levx*40*8)+4,(customentities[i].y*8)- (ed.levy*30*8)+4, "<", 255, 255, 255 - help.glow, false); if(customentities[i].p1==2) font::print(PR_FONT_8X8, (customentities[i].x*8)- (ed.levx*40*8)+4,(customentities[i].y*8)- (ed.levy*30*8)+4, "<", 255, 255, 255 - help.glow);
if(customentities[i].p1==3) graphics.Print((customentities[i].x*8)- (ed.levx*40*8)+4,(customentities[i].y*8)- (ed.levy*30*8)+4, ">", 255, 255, 255 - help.glow, false); if(customentities[i].p1==3) font::print(PR_FONT_8X8, (customentities[i].x*8)- (ed.levx*40*8)+4,(customentities[i].y*8)- (ed.levy*30*8)+4, ">", 255, 255, 255 - help.glow);
fillboxabs((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8),16,16,graphics.getRGB(255,164,255)); fillboxabs((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8),16,16,graphics.getRGB(255,164,255));
break; break;
case 2: //Threadmills & platforms case 2: //Threadmills & platforms
@ -649,21 +649,21 @@ void editorrender(void)
if(customentities[i].p1<=4) if(customentities[i].p1<=4)
{ {
if(customentities[i].p1==0) graphics.Print((customentities[i].x*8)- (ed.levx*40*8)+12,(customentities[i].y*8)- (ed.levy*30*8), "V", 255 - help.glow, 255 - help.glow, 255 - help.glow, false); if(customentities[i].p1==0) font::print(PR_FONT_8X8, (customentities[i].x*8)- (ed.levx*40*8)+12,(customentities[i].y*8)- (ed.levy*30*8), "V", 255 - help.glow, 255 - help.glow, 255 - help.glow);
if(customentities[i].p1==1) graphics.Print((customentities[i].x*8)- (ed.levx*40*8)+12,(customentities[i].y*8)- (ed.levy*30*8), "^", 255 - help.glow, 255 - help.glow, 255 - help.glow, false); if(customentities[i].p1==1) font::print(PR_FONT_8X8, (customentities[i].x*8)- (ed.levx*40*8)+12,(customentities[i].y*8)- (ed.levy*30*8), "^", 255 - help.glow, 255 - help.glow, 255 - help.glow);
if(customentities[i].p1==2) graphics.Print((customentities[i].x*8)- (ed.levx*40*8)+12,(customentities[i].y*8)- (ed.levy*30*8), "<", 255 - help.glow, 255 - help.glow, 255 - help.glow, false); if(customentities[i].p1==2) font::print(PR_FONT_8X8, (customentities[i].x*8)- (ed.levx*40*8)+12,(customentities[i].y*8)- (ed.levy*30*8), "<", 255 - help.glow, 255 - help.glow, 255 - help.glow);
if(customentities[i].p1==3) graphics.Print((customentities[i].x*8)- (ed.levx*40*8)+12,(customentities[i].y*8)- (ed.levy*30*8), ">", 255 - help.glow, 255 - help.glow, 255 - help.glow, false); if(customentities[i].p1==3) font::print(PR_FONT_8X8, (customentities[i].x*8)- (ed.levx*40*8)+12,(customentities[i].y*8)- (ed.levy*30*8), ">", 255 - help.glow, 255 - help.glow, 255 - help.glow);
fillboxabs((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8),32,8,graphics.getRGB(255,255,255)); fillboxabs((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8),32,8,graphics.getRGB(255,255,255));
} }
if(customentities[i].p1==5) if(customentities[i].p1==5)
{ {
graphics.Print((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8), ">>>>", 255 - help.glow, 255 - help.glow, 255 - help.glow, false); font::print(PR_FONT_8X8, (customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8), ">>>>", 255 - help.glow, 255 - help.glow, 255 - help.glow);
fillboxabs((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8),32,8,graphics.getRGB(255,255,255)); fillboxabs((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8),32,8,graphics.getRGB(255,255,255));
} }
else if(customentities[i].p1==6) else if(customentities[i].p1==6)
{ {
graphics.Print((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8), "<<<<", 255 - help.glow, 255 - help.glow, 255 - help.glow, false); font::print(PR_FONT_8X8, (customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8), "<<<<", 255 - help.glow, 255 - help.glow, 255 - help.glow);
fillboxabs((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8),32,8,graphics.getRGB(255,255,255)); fillboxabs((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8),32,8,graphics.getRGB(255,255,255));
} }
@ -682,12 +682,12 @@ void editorrender(void)
if(customentities[i].p1==7) if(customentities[i].p1==7)
{ {
graphics.Print((customentities[i].x*8)- (ed.levx*40*8)+4,(customentities[i].y*8)- (ed.levy*30*8), "> > > > ", 255 - help.glow, 255 - help.glow, 255 - help.glow, false); font::print(PR_FONT_8X8, (customentities[i].x*8)- (ed.levx*40*8)+4,(customentities[i].y*8)- (ed.levy*30*8), "> > > > ", 255 - help.glow, 255 - help.glow, 255 - help.glow);
fillboxabs((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8),64,8,graphics.getRGB(255,255,255)); fillboxabs((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8),64,8,graphics.getRGB(255,255,255));
} }
else if(customentities[i].p1==8) else if(customentities[i].p1==8)
{ {
graphics.Print((customentities[i].x*8)- (ed.levx*40*8)+4,(customentities[i].y*8)- (ed.levy*30*8), "< < < < ", 255 - help.glow, 255 - help.glow, 255 - help.glow, false); font::print(PR_FONT_8X8, (customentities[i].x*8)- (ed.levx*40*8)+4,(customentities[i].y*8)- (ed.levy*30*8), "< < < < ", 255 - help.glow, 255 - help.glow, 255 - help.glow);
fillboxabs((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8),64,8,graphics.getRGB(255,255,255)); fillboxabs((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8),64,8,graphics.getRGB(255,255,255));
} }
break; break;
@ -702,7 +702,7 @@ void editorrender(void)
drawRect.x += 8; drawRect.x += 8;
} }
graphics.Print((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8), "////", 255 - help.glow, 255 - help.glow, 255 - help.glow, false); font::print(PR_FONT_8X8, (customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8), "////", 255 - help.glow, 255 - help.glow, 255 - help.glow);
fillboxabs((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8),32,8,graphics.getRGB(255,255,255)); fillboxabs((customentities[i].x*8)- (ed.levx*40*8),(customentities[i].y*8)- (ed.levy*30*8),32,8,graphics.getRGB(255,255,255));
break; break;
case 9: //Shiny Trinket case 9: //Shiny Trinket
@ -979,7 +979,7 @@ void editorrender(void)
} }
else else
{ {
graphics.Print((ed.tilex*8),(ed.tiley*8),"X",255,0,0); font::print(PR_FONT_8X8, (ed.tilex*8),(ed.tiley*8),"X",255,0,0);
} }
break; break;
case 11: case 11:
@ -1162,7 +1162,7 @@ void editorrender(void)
short lines; short lines;
message = font::string_wordwrap(message, 312, &lines); message = font::string_wordwrap(message, 312, &lines);
short textheight = 8*lines; short textheight = font::height(0)*lines;
graphics.fill_rect(0,238-textheight,320,240, graphics.getRGB(32,32,32)); graphics.fill_rect(0,238-textheight,320,240, graphics.getRGB(32,32,32));
graphics.fill_rect(0,239-textheight,320,240, graphics.getRGB(0,0,0)); graphics.fill_rect(0,239-textheight,320,240, graphics.getRGB(0,0,0));
@ -1177,8 +1177,8 @@ void editorrender(void)
switch(ed.scripthelppage) switch(ed.scripthelppage)
{ {
case 0: case 0:
graphics.Print(16,28,loc::gettext("**** VVVVVV SCRIPT EDITOR ****"), 123, 111, 218, true); font::print(PR_CEN, -1,28,loc::gettext("**** VVVVVV SCRIPT EDITOR ****"), 123, 111, 218);
graphics.Print(16,44,loc::gettext("PRESS ESC TO RETURN TO MENU"), 123, 111, 218, true); font::print(PR_CEN, -1,44,loc::gettext("PRESS ESC TO RETURN TO MENU"), 123, 111, 218);
if(!ed.hooklist.empty()) if(!ed.hooklist.empty())
{ {
@ -1192,18 +1192,18 @@ void editorrender(void)
char buffer[SCREEN_WIDTH_CHARS + 1]; char buffer[SCREEN_WIDTH_CHARS + 1];
vformat_buf(buffer, sizeof(buffer), loc::get_langmeta()->menu_select.c_str(), "label:str", text_upper.c_str()); vformat_buf(buffer, sizeof(buffer), loc::get_langmeta()->menu_select.c_str(), "label:str", text_upper.c_str());
graphics.Print(16, 68+(i*16), buffer, 123, 111, 218, true); font::print(PR_CEN, -1, 68+(i*16), buffer, 123, 111, 218);
} }
else else
{ {
graphics.Print(16, 68+(i*16), ed.hooklist[(ed.hooklist.size()-1)-(ed.hookmenupage+i)], 123, 111, 218, true); font::print(PR_CEN, -1, 68+(i*16), ed.hooklist[(ed.hooklist.size()-1)-(ed.hookmenupage+i)], 123, 111, 218);
} }
} }
} }
} }
else else
{ {
graphics.Print(16,110,loc::gettext("NO SCRIPT IDS FOUND"), 123, 111, 218, true); font::print(PR_CEN, -1,110,loc::gettext("NO SCRIPT IDS FOUND"), 123, 111, 218);
graphics.PrintWrap(16,130,loc::gettext("CREATE A SCRIPT WITH EITHER THE TERMINAL OR SCRIPT BOX TOOLS"), 123, 111, 218, true, 10, 288); graphics.PrintWrap(16,130,loc::gettext("CREATE A SCRIPT WITH EITHER THE TERMINAL OR SCRIPT BOX TOOLS"), 123, 111, 218, true, 10, 288);
} }
break; break;
@ -1218,7 +1218,7 @@ void editorrender(void)
"name:str", "name:str",
ed.sbscript.c_str() ed.sbscript.c_str()
); );
graphics.Print(16,228, namebuffer, 123, 111, 218, true); font::print(PR_CEN, -1,228, namebuffer, 123, 111, 218);
//Draw text //Draw text
int font_height = font::height(PR_FONT_LEVEL); int font_height = font::height(PR_FONT_LEVEL);
for(int i=0; i<ed.lines_visible; i++) for(int i=0; i<ed.lines_visible; i++)
@ -1265,11 +1265,11 @@ void editorrender(void)
{ {
short lines; short lines;
std::string wrapped = font::string_wordwrap(ed.textdesc, 312, &lines); std::string wrapped = font::string_wordwrap(ed.textdesc, 312, &lines);
short textheight = 8*lines+8; short textheight = font::height(0)*lines+font::height(PR_FONT_LEVEL);
graphics.fill_rect(0, 238-textheight, 320, 240, graphics.getRGB(32, 32, 32)); graphics.fill_rect(0, 238-textheight, 320, 240, graphics.getRGB(32, 32, 32));
graphics.fill_rect(0, 239-textheight, 320, 240, graphics.getRGB(0, 0, 0)); graphics.fill_rect(0, 239-textheight, 320, 240, graphics.getRGB(0, 0, 0));
graphics.PrintWrap(4, 240-textheight, wrapped, 255, 255, 255, false, 8, 312); font::print_wrap(0, 4, 240-textheight, wrapped, 255, 255, 255, 8, 312);
std::string input = key.keybuffer; std::string input = key.keybuffer;
if (ed.entframe < 2) if (ed.entframe < 2)
{ {
@ -1279,33 +1279,34 @@ void editorrender(void)
{ {
input += " "; input += " ";
} }
graphics.Print(4, 232, input, 196, 196, 255 - help.glow, true); font::print(PR_CEN | PR_FONT_LEVEL | PR_CJK_HIGH, -1, 232, input, 196, 196, 255 - help.glow);
} }
else if(ed.warpmod) else if(ed.warpmod)
{ {
//placing warp token //placing warp token
graphics.fill_rect(0,221,320,240, graphics.getRGB(32,32,32)); int textheight = font::height(0);
graphics.fill_rect(0,222,320,240, graphics.getRGB(0,0,0)); graphics.fill_rect(0,237-textheight*2,320,240, graphics.getRGB(32,32,32));
graphics.Print(4, 224, loc::gettext("Left click to place warp destination"), 196, 196, 255 - help.glow, false); graphics.fill_rect(0,238-textheight*2,320,240, graphics.getRGB(0,0,0));
graphics.Print(4, 232, loc::gettext("Right click to cancel"), 196, 196, 255 - help.glow, false); font::print(PR_CJK_LOW, 4, 240-textheight*2, loc::gettext("Left click to place warp destination"), 196, 196, 255 - help.glow);
font::print(PR_CJK_LOW, 4, 240-textheight, loc::gettext("Right click to cancel"), 196, 196, 255 - help.glow);
} }
else else
{ {
if(ed.spacemod) if(ed.spacemod)
{ {
graphics.fill_rect(0,208,320,240, graphics.getRGB(32,32,32)); graphics.fill_rect(0,207,320,240, graphics.getRGB(32,32,32));
graphics.fill_rect(0,209,320,240, graphics.getRGB(0,0,0)); graphics.fill_rect(0,208,320,240, graphics.getRGB(0,0,0));
//Draw little icons for each thingy //Draw little icons for each thingy
int tx=6, ty=211, tg=32; int tx=6, ty=210, tg=32;
if(ed.spacemenu==0) if(ed.spacemenu==0)
{ {
for(int i=0; i<10; i++) for(int i=0; i<10; i++)
{ {
graphics.fill_rect(4+(i*tg), 209,20,20,graphics.getRGB(32,32,32)); graphics.fill_rect(4+(i*tg), 208,20,20,graphics.getRGB(32,32,32));
} }
graphics.fill_rect(4+(ed.drawmode*tg), 209,20,20,graphics.getRGB(64,64,64)); graphics.fill_rect(4+(ed.drawmode*tg), 208,20,20,graphics.getRGB(64,64,64));
//0: //0:
graphics.drawtile(tx,ty,83); graphics.drawtile(tx,ty,83);
graphics.drawtile(tx+8,ty,83); graphics.drawtile(tx+8,ty,83);
@ -1347,13 +1348,13 @@ void editorrender(void)
for (int i = 0; i < 10; i++) for (int i = 0; i < 10; i++)
{ {
fillboxabs(4+(i*tg), 209,20,20,graphics.getRGB(96,96,96)); fillboxabs(4+(i*tg), 208,20,20,graphics.getRGB(96,96,96));
const int col = i == ed.drawmode ? 255 : 164; const int col = i == ed.drawmode ? 255 : 164;
const std::string glyph = i == 9 ? "0" : help.String(i + 1); const std::string glyph = i == 9 ? "0" : help.String(i + 1);
graphics.Print(22 + i*tg - 4, 225 - 4, glyph, col, col, col, false); font::print(PR_FONT_8X8, 22 + i*tg - 4, 224 - 4, glyph, col, col, col);
} }
fillboxabs(4+(ed.drawmode*tg), 209,20,20,graphics.getRGB(200,200,200)); fillboxabs(4+(ed.drawmode*tg), 208,20,20,graphics.getRGB(200,200,200));
font::print(PR_CJK_HIGH, 4, 232, "1/2", 196, 196, 255 - help.glow); font::print(PR_CJK_HIGH, 4, 232, "1/2", 196, 196, 255 - help.glow);
} }
@ -1361,9 +1362,9 @@ void editorrender(void)
{ {
for(int i=0; i<7; i++) for(int i=0; i<7; i++)
{ {
graphics.fill_rect(4+(i*tg), 209,20,20,graphics.getRGB(32,32,32)); graphics.fill_rect(4+(i*tg), 208,20,20,graphics.getRGB(32,32,32));
} }
graphics.fill_rect(4+((ed.drawmode-10)*tg), 209,20,20,graphics.getRGB(64,64,64)); graphics.fill_rect(4+((ed.drawmode-10)*tg), 208,20,20,graphics.getRGB(64,64,64));
//10: //10:
font::print(PR_FONT_8X8, tx, ty, "AB", 196, 196, 255 - help.glow); font::print(PR_FONT_8X8, tx, ty, "AB", 196, 196, 255 - help.glow);
font::print(PR_FONT_8X8, tx, ty+8, "CD", 196, 196, 255 - help.glow); font::print(PR_FONT_8X8, tx, ty+8, "CD", 196, 196, 255 - help.glow);
@ -1388,13 +1389,13 @@ void editorrender(void)
for (int i = 0; i < 7; i++) for (int i = 0; i < 7; i++)
{ {
fillboxabs(4 + i*tg, 209, 20, 20, graphics.getRGB(96, 96, 96)); fillboxabs(4 + i*tg, 208, 20, 20, graphics.getRGB(96, 96, 96));
const int col = i + 10 == ed.drawmode ? 255 : 164; const int col = i + 10 == ed.drawmode ? 255 : 164;
static const char glyphs[] = "RTYUIOP"; static const char glyphs[] = "RTYUIOP";
graphics.Print(22 + i*tg - 4, 225 - 4, std::string(1, glyphs[i]), col, col, col, false); font::print(PR_FONT_8X8, 22 + i*tg - 4, 224 - 4, std::string(1, glyphs[i]), col, col, col);
} }
fillboxabs(4 + (ed.drawmode - 10) * tg, 209, 20, 20, graphics.getRGB(200, 200, 200)); fillboxabs(4 + (ed.drawmode - 10) * tg, 208, 20, 20, graphics.getRGB(200, 200, 200));
font::print(PR_CJK_HIGH, 4, 232, "2/2", 196, 196, 255 - help.glow); font::print(PR_CJK_HIGH, 4, 232, "2/2", 196, 196, 255 - help.glow);
} }
@ -1467,16 +1468,16 @@ void editorrender(void)
} }
int bgheight = 2 + font::height(0); int bgheight = 2 + font::height(0);
int toolnamelen = font::len(0, toolname); int toolnamelen = font::len(0, toolname);
graphics.fill_rect(0,207-bgheight,toolnamelen+8,bgheight+1, graphics.getRGB(32,32,32)); graphics.fill_rect(0,206-bgheight,toolnamelen+8,bgheight+1, graphics.getRGB(32,32,32));
graphics.fill_rect(0,208-bgheight,toolnamelen+7,bgheight, graphics.getRGB(0,0,0)); graphics.fill_rect(0,207-bgheight,toolnamelen+7,bgheight, graphics.getRGB(0,0,0));
font::print(PR_BOR | PR_CJK_HIGH, 2,199, toolname, 196, 196, 255 - help.glow); font::print(PR_BOR | PR_CJK_HIGH, 2,198, toolname, 196, 196, 255 - help.glow);
char coords[8]; char coords[8];
SDL_snprintf(coords, sizeof(coords), "(%d,%d)", ed.levx+1, ed.levy+1); SDL_snprintf(coords, sizeof(coords), "(%d,%d)", ed.levx+1, ed.levy+1);
int coordslen = font::len(0, coords); int coordslen = font::len(0, coords);
graphics.fill_rect(319-coordslen-8,207-bgheight,coordslen+8,bgheight+1, graphics.getRGB(32,32,32)); graphics.fill_rect(319-coordslen-8,206-bgheight,coordslen+8,bgheight+1, graphics.getRGB(32,32,32));
graphics.fill_rect(320-coordslen-8,208-bgheight,coordslen+8,bgheight, graphics.getRGB(0,0,0)); graphics.fill_rect(320-coordslen-8,207-bgheight,coordslen+8,bgheight, graphics.getRGB(0,0,0));
font::print(PR_BOR | PR_CJK_HIGH | PR_RIGHT, 316, 199, coords, 196, 196, 255 - help.glow); font::print(PR_BOR | PR_CJK_HIGH | PR_RIGHT, 316, 198, coords, 196, 196, 255 - help.glow);
} }
else else
{ {
@ -1531,12 +1532,12 @@ void editorrender(void)
fillboxabs(0, left_y-3, menuwidth+17, 240,graphics.getRGB(64,64,64)); fillboxabs(0, left_y-3, menuwidth+17, 240,graphics.getRGB(64,64,64));
graphics.fill_rect(0,left_y-2,menuwidth+16,240, graphics.getRGB(0,0,0)); graphics.fill_rect(0,left_y-2,menuwidth+16,240, graphics.getRGB(0,0,0));
for (size_t i = 0; i < SDL_arraysize(shiftmenuoptions); i++) for (size_t i = 0; i < SDL_arraysize(shiftmenuoptions); i++)
graphics.Print(4, left_y+i*lineheight, shiftmenuoptions[i], 164,164,164,false); font::print(0, 4, left_y+i*lineheight, shiftmenuoptions[i], 164,164,164);
fillboxabs(220, 207,100,60,graphics.getRGB(64,64,64)); fillboxabs(220, 207,100,60,graphics.getRGB(64,64,64));
graphics.fill_rect(221,208,160,60, graphics.getRGB(0,0,0)); graphics.fill_rect(221,208,160,60, graphics.getRGB(0,0,0));
graphics.Print(224, 210, loc::gettext("S: Save Map"),164,164,164,false); font::print(0, 224, 210, loc::gettext("S: Save Map"),164,164,164);
graphics.Print(224, 210+lineheight, loc::gettext("L: Load Map"),164,164,164,false); font::print(0, 224, 210+lineheight, loc::gettext("L: Load Map"),164,164,164);
} }
} }
@ -1604,7 +1605,7 @@ void editorrender(void)
{ {
short lines; short lines;
std::string wrapped = font::string_wordwrap(ed.note, 304, &lines); std::string wrapped = font::string_wordwrap(ed.note, 304, &lines);
short textheight = 8+(lines-1)*10; short textheight = 8+(lines-1)*SDL_max(10, font::height(0));
short banner_y = 120 - textheight/2 - 5; short banner_y = 120 - textheight/2 - 5;
float alpha = graphics.lerp(ed.oldnotedelay, ed.notedelay); float alpha = graphics.lerp(ed.oldnotedelay, ed.notedelay);

View file

@ -297,11 +297,11 @@ void Graphics::map_tab(int opt, const char* text, bool selected /*= false*/)
{ {
char buffer[SCREEN_WIDTH_CHARS + 1]; char buffer[SCREEN_WIDTH_CHARS + 1];
vformat_buf(buffer, sizeof(buffer), loc::get_langmeta()->menu_select_tight.c_str(), "label:str", text); vformat_buf(buffer, sizeof(buffer), loc::get_langmeta()->menu_select_tight.c_str(), "label:str", text);
font::print(PR_CEN, x, 220, buffer, 196, 196, 255 - help.glow); font::print(PR_CEN | PR_CJK_LOW, x, 220, buffer, 196, 196, 255 - help.glow);
} }
else else
{ {
font::print(PR_CEN, x, 220, text, 64, 64, 64); font::print(PR_CEN | PR_CJK_LOW, x, 220, text, 64, 64, 64);
} }
} }
@ -329,22 +329,14 @@ void Graphics::map_option(int opt, int num_opts, const std::string& text, bool s
char buffer[SCREEN_WIDTH_CHARS + 1]; char buffer[SCREEN_WIDTH_CHARS + 1];
vformat_buf(buffer, sizeof(buffer), loc::get_langmeta()->menu_select.c_str(), "label:str", text_upper.c_str()); vformat_buf(buffer, sizeof(buffer), loc::get_langmeta()->menu_select.c_str(), "label:str", text_upper.c_str());
Print(x - 16, y, buffer, 196, 196, 255 - help.glow); font::print(0, x - 16, y, buffer, 196, 196, 255 - help.glow);
} }
else else
{ {
Print(x, y, loc::remove_toupper_escape_chars(text), 96, 96, 96); font::print(0, x, y, loc::remove_toupper_escape_chars(text), 96, 96, 96);
} }
} }
void Graphics::Print( int x, int y, const std::string& text, int r, int g, int b, bool cen /*= false*/ ) {
// DEPRECATED
if (cen)
font::print(PR_CEN, -1, y, text, r, g, b);
else
font::print(0, x, y, text, r, g, b);
}
int Graphics::PrintWrap( int Graphics::PrintWrap(
const int x, const int x,
int y, int y,
@ -370,22 +362,22 @@ void Graphics::printcrewname( int x, int y, int t )
switch(t) switch(t)
{ {
case 0: case 0:
Print(x, y, loc::gettext("Viridian"), 16, 240, 240,false); font::print(0, x, y, loc::gettext("Viridian"), 16, 240, 240);
break; break;
case 1: case 1:
Print(x, y, loc::gettext("Violet"), 240, 16, 240,false); font::print(0, x, y, loc::gettext("Violet"), 240, 16, 240);
break; break;
case 2: case 2:
Print(x, y, loc::gettext("Vitellary"), 240, 240, 16,false); font::print(0, x, y, loc::gettext("Vitellary"), 240, 240, 16);
break; break;
case 3: case 3:
Print(x, y, loc::gettext("Vermilion"), 240, 16, 16,false); font::print(0, x, y, loc::gettext("Vermilion"), 240, 16, 16);
break; break;
case 4: case 4:
Print(x, y, loc::gettext("Verdigris"), 16, 240, 16,false); font::print(0, x, y, loc::gettext("Verdigris"), 16, 240, 16);
break; break;
case 5: case 5:
Print(x, y, loc::gettext("Victoria"), 16, 16, 240,false); font::print(0, x, y, loc::gettext("Victoria"), 16, 16, 240);
break; break;
} }
} }
@ -396,22 +388,22 @@ void Graphics::printcrewnamedark( int x, int y, int t )
switch(t) switch(t)
{ {
case 0: case 0:
Print(x, y, loc::gettext("Viridian"), 128,128,128,false); font::print(0, x, y, loc::gettext("Viridian"), 128,128,128);
break; break;
case 1: case 1:
Print(x, y, loc::gettext("Violet"), 128,128,128,false); font::print(0, x, y, loc::gettext("Violet"), 128,128,128);
break; break;
case 2: case 2:
Print(x, y, loc::gettext("Vitellary"), 128,128,128,false); font::print(0, x, y, loc::gettext("Vitellary"), 128,128,128);
break; break;
case 3: case 3:
Print(x, y, loc::gettext("Vermilion"), 128,128,128,false); font::print(0, x, y, loc::gettext("Vermilion"), 128,128,128);
break; break;
case 4: case 4:
Print(x, y, loc::gettext("Verdigris"), 128,128,128,false); font::print(0, x, y, loc::gettext("Verdigris"), 128,128,128);
break; break;
case 5: case 5:
Print(x, y, loc::gettext("Victoria"), 128,128,128,false); font::print(0, x, y, loc::gettext("Victoria"), 128,128,128);
break; break;
} }
} }
@ -467,7 +459,7 @@ void Graphics::printcrewnamestatus( int x, int y, int t, bool rescued )
status_text = loc::gettext_case("Missing...", gender); status_text = loc::gettext_case("Missing...", gender);
} }
Print(x, y, status_text, r, g, b, false); font::print(0, x, y, status_text, r, g, b);
} }
int Graphics::set_render_target(SDL_Texture* texture) int Graphics::set_render_target(SDL_Texture* texture)

View file

@ -202,8 +202,6 @@ public:
void map_option(int opt, int num_opts, const std::string& text, bool selected = false); void map_option(int opt, int num_opts, const std::string& text, bool selected = false);
void Print(int _x, int _y, const std::string& _s, int r, int g, int b, bool cen = false);
int PrintWrap(int x, int y, const std::string& s, int r, int g, int b, bool cen = false, int linespacing = -1, int maxwidth = -1); int PrintWrap(int x, int y, const std::string& s, int r, int g, int b, bool cen = false, int linespacing = -1, int maxwidth = -1);
void drawspritesetcol(int x, int y, int t, int c); void drawspritesetcol(int x, int y, int t, int c);

View file

@ -180,7 +180,7 @@ static void menurender(void)
font::print(PR_RIGHT, 310, 230, RELEASE_VERSION, tr/2, tg/2, tb/2); font::print(PR_RIGHT, 310, 230, RELEASE_VERSION, tr/2, tg/2, tb/2);
if(music.mmmmmm){ if(music.mmmmmm){
graphics.Print( 10, 230, loc::gettext("[MMMMMM Mod Installed]"), tr/2, tg/2, tb/2); font::print(0, 10, 230, loc::gettext("[MMMMMM Mod Installed]"), tr/2, tg/2, tb/2);
} }
break; break;
} }
@ -455,29 +455,29 @@ static void menurender(void)
} }
break; break;
case Menu::credits: case Menu::credits:
graphics.Print( -1, 50, loc::gettext("VVVVVV is a game by"), tr, tg, tb, true); font::print(PR_CEN, -1, 50, loc::gettext("VVVVVV is a game by"), tr, tg, tb);
font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 65, "Terry Cavanagh", tr, tg, tb); font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 65, "Terry Cavanagh", tr, tg, tb);
graphics.drawimagecol(IMAGE_SITE, -1, 86, graphics.getRGB(tr, tg, tb), true); graphics.drawimagecol(IMAGE_SITE, -1, 86, graphics.getRGB(tr, tg, tb), true);
graphics.Print( -1, 120, loc::gettext("and features music by"), tr, tg, tb, true); font::print(PR_CEN, -1, 120, loc::gettext("and features music by"), tr, tg, tb);
font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 135, "Magnus Pålsson", tr, tg, tb); font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 135, "Magnus Pålsson", tr, tg, tb);
graphics.drawimagecol(IMAGE_SITE2, -1, 156, graphics.getRGB(tr, tg, tb), true); graphics.drawimagecol(IMAGE_SITE2, -1, 156, graphics.getRGB(tr, tg, tb), true);
break; break;
case Menu::credits2: case Menu::credits2:
graphics.Print( -1, 50, loc::gettext("Roomnames are by"), tr, tg, tb, true); font::print(PR_CEN, -1, 50, loc::gettext("Roomnames are by"), tr, tg, tb);
font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 65, "Bennett Foddy", tr, tg, tb); font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 65, "Bennett Foddy", tr, tg, tb);
graphics.drawimagecol(IMAGE_SITE3, -1, 86, graphics.getRGB(tr, tg, tb), true); graphics.drawimagecol(IMAGE_SITE3, -1, 86, graphics.getRGB(tr, tg, tb), true);
graphics.Print( -1, 110, loc::gettext("C++ version by"), tr, tg, tb, true); font::print(PR_CEN, -1, 110, loc::gettext("C++ version by"), tr, tg, tb);
font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 125, "Simon Roth", tr, tg, tb); font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 125, "Simon Roth", tr, tg, tb);
font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 145, "Ethan Lee", tr, tg, tb); font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 145, "Ethan Lee", tr, tg, tb);
font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 165, "Misa Kai", tr, tg, tb); font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 165, "Misa Kai", tr, tg, tb);
break; break;
case Menu::credits25: case Menu::credits25:
graphics.Print( -1, 40, loc::gettext("Beta Testing by"), tr, tg, tb, true); font::print(PR_CEN, -1, 40, loc::gettext("Beta Testing by"), tr, tg, tb);
font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 55, "Sam Kaplan", tr, tg, tb); font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 55, "Sam Kaplan", tr, tg, tb);
font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 75, "Pauli Kohberger", tr, tg, tb); font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 75, "Pauli Kohberger", tr, tg, tb);
graphics.Print( -1, 130, loc::gettext("Ending Picture by"), tr, tg, tb, true); font::print(PR_CEN, -1, 130, loc::gettext("Ending Picture by"), tr, tg, tb);
font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 145, "Pauli Kohberger", tr, tg, tb); font::print(PR_2X | PR_CEN | PR_FONT_8X8, -1, 145, "Pauli Kohberger", tr, tg, tb);
break; break;
case Menu::credits3: case Menu::credits3:
@ -599,11 +599,11 @@ static void menurender(void)
case 3: case 3:
case 4: case 4:
case 5: case 5:
graphics.Print( -1, 75, loc::gettext("Flip is bound to: ") + std::string(help.GCString(game.controllerButton_flip)) , tr, tg, tb, true); font::print(PR_CEN, -1, 75, loc::gettext("Flip is bound to: ") + std::string(help.GCString(game.controllerButton_flip)) , tr, tg, tb);
graphics.Print( -1, 85, loc::gettext("Enter is bound to: ") + std::string(help.GCString(game.controllerButton_map)), tr, tg, tb, true); font::print(PR_CEN, -1, 85, loc::gettext("Enter is bound to: ") + std::string(help.GCString(game.controllerButton_map)), tr, tg, tb);
graphics.Print( -1, 95, loc::gettext("Menu is bound to: ") + std::string(help.GCString(game.controllerButton_esc)) , tr, tg, tb, true); font::print(PR_CEN, -1, 95, loc::gettext("Menu is bound to: ") + std::string(help.GCString(game.controllerButton_esc)) , tr, tg, tb);
graphics.Print( -1, 105, loc::gettext("Restart is bound to: ") + std::string(help.GCString(game.controllerButton_restart)) , tr, tg, tb, true); font::print(PR_CEN, -1, 105, loc::gettext("Restart is bound to: ") + std::string(help.GCString(game.controllerButton_restart)) , tr, tg, tb);
graphics.Print( -1, 115, loc::gettext("Interact is bound to: ") + std::string(help.GCString(game.controllerButton_interact)) , tr, tg, tb, true); font::print(PR_CEN, -1, 115, loc::gettext("Interact is bound to: ") + std::string(help.GCString(game.controllerButton_interact)) , tr, tg, tb);
break; break;
} }
@ -617,7 +617,7 @@ static void menurender(void)
else if ((unsigned)game.currentmenuoption < loc::languagelist.size()) else if ((unsigned)game.currentmenuoption < loc::languagelist.size())
{ {
graphics.PrintWrap(-1, 8, loc::languagelist[game.currentmenuoption].credit, tr/2, tg/2, tb/2, true); graphics.PrintWrap(-1, 8, loc::languagelist[game.currentmenuoption].credit, tr/2, tg/2, tb/2, true);
graphics.Print(-1, 230, loc::languagelist[game.currentmenuoption].action_hint, tr/2, tg/2, tb/2, true); font::print(PR_CEN, -1, 230, loc::languagelist[game.currentmenuoption].action_hint, tr/2, tg/2, tb/2);
} }
break; break;
case Menu::translator_main: case Menu::translator_main:
@ -636,11 +636,11 @@ static void menurender(void)
if (FILESYSTEM_isMainLangDirFromRepo()) if (FILESYSTEM_isMainLangDirFromRepo())
{ {
// Just giving people who manually compiled the game some hint as to why this menu is here! // Just giving people who manually compiled the game some hint as to why this menu is here!
graphics.Print(8, 208, loc::gettext("Repository language folder:"), tr/2, tg/2, tb/2); font::print(0, 8, 208, loc::gettext("Repository language folder:"), tr/2, tg/2, tb/2);
} }
else else
{ {
graphics.Print(8, 208, loc::gettext("Language folder:"), tr/2, tg/2, tb/2); font::print(0, 8, 208, loc::gettext("Language folder:"), tr/2, tg/2, tb/2);
} }
font::print(PR_RIGHT, 316, 224, FILESYSTEM_getUserMainLangDirectory(), tr/2, tg/2, tb/2); font::print(PR_RIGHT, 316, 224, FILESYSTEM_getUserMainLangDirectory(), tr/2, tg/2, tb/2);
@ -740,7 +740,7 @@ static void menurender(void)
} }
case Menu::translator_options_stats: case Menu::translator_options_stats:
{ {
graphics.Print(16, 16, loc::get_langmeta()->nativename, tr, tg, tb); font::print(0, 16, 16, loc::get_langmeta()->nativename, tr, tg, tb);
const char* line_template = "%4d"; const char* line_template = "%4d";
char buffer[5]; char buffer[5];
@ -751,8 +751,8 @@ static void menurender(void)
untranslated_counter \ untranslated_counter \
); \ ); \
coldiv = untranslated_counter > 0 ? 1 : 2; \ coldiv = untranslated_counter > 0 ? 1 : 2; \
graphics.Print(16, y, filename, tr/coldiv, tg/coldiv, tb/coldiv); \ font::print(PR_FONT_8X8, 16, y, filename, tr/coldiv, tg/coldiv, tb/coldiv); \
graphics.Print(272, y, buffer, tr/coldiv, tg/coldiv, tb/coldiv) font::print(PR_FONT_8X8, 272, y, buffer, tr/coldiv, tg/coldiv, tb/coldiv)
stat_line(48, "strings.xml", loc::n_untranslated[loc::UNTRANSLATED_STRINGS]); stat_line(48, "strings.xml", loc::n_untranslated[loc::UNTRANSLATED_STRINGS]);
stat_line(64, "numbers.xml", loc::n_untranslated[loc::UNTRANSLATED_NUMBERS]); stat_line(64, "numbers.xml", loc::n_untranslated[loc::UNTRANSLATED_NUMBERS]);
@ -836,10 +836,10 @@ static void menurender(void)
{ {
int next_y = graphics.PrintWrap(-1, 20, loc::gettext("If new strings were added to the English template language files, this feature will insert them in the translation files for all languages. Make a backup, just in case."), tr, tg, tb, true); int next_y = graphics.PrintWrap(-1, 20, loc::gettext("If new strings were added to the English template language files, this feature will insert them in the translation files for all languages. Make a backup, just in case."), tr, tg, tb, true);
graphics.Print(-1, next_y, loc::gettext("Full syncing EN→All:"), tr, tg, tb, true); font::print(PR_CEN, -1, next_y, loc::gettext("Full syncing EN→All:"), tr, tg, tb);
next_y = font::print_wrap(PR_CEN | PR_FONT_8X8, -1, next_y+10, "meta.xml\nstrings.xml\nstrings_plural.xml\ncutscenes.xml\nroomnames.xml\nroomnames_special.xml", tr/2, tg/2, tb/2); next_y = font::print_wrap(PR_CEN | PR_FONT_8X8, -1, next_y+10, "meta.xml\nstrings.xml\nstrings_plural.xml\ncutscenes.xml\nroomnames.xml\nroomnames_special.xml", tr/2, tg/2, tb/2);
graphics.Print(-1, next_y, loc::gettext("Syncing not supported:"), tr, tg, tb, true); font::print(PR_CEN, -1, next_y, loc::gettext("Syncing not supported:"), tr, tg, tb);
font::print_wrap(PR_CEN | PR_FONT_8X8, -1, next_y+10, "numbers.xml", tr/2, tg/2, tb/2); font::print_wrap(PR_CEN | PR_FONT_8X8, -1, next_y+10, "numbers.xml", tr/2, tg/2, tb/2);
break; break;
} }
@ -1134,12 +1134,12 @@ static void menurender(void)
graphics.drawpixeltextbox(17, 65-20, 286, 90, 65, 185, 207); graphics.drawpixeltextbox(17, 65-20, 286, 90, 65, 185, 207);
font::print(PR_2X | PR_CEN, -1, 20, loc::gettext("Tele Save"), tr, tg, tb); font::print(PR_2X | PR_CEN, -1, 20, loc::gettext("Tele Save"), tr, tg, tb);
graphics.Print(0, 80-20, game.tele_currentarea, 25, 255 - (help.glow / 2), 255 - (help.glow / 2), true); font::print(PR_CEN, -1, 80-20, game.tele_currentarea, 25, 255 - (help.glow / 2), 255 - (help.glow / 2));
for (int i = 0; i < 6; i++) for (int i = 0; i < 6; i++)
{ {
graphics.drawcrewman(169-(3*42)+(i*42), 95-20, i, game.tele_crewstats[i], true); graphics.drawcrewman(169-(3*42)+(i*42), 95-20, i, game.tele_crewstats[i], true);
} }
graphics.Print(59, 132-20, game.tele_gametime, 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2)); font::print(0, 59, 132-20, game.tele_gametime, 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2));
char buffer[SCREEN_WIDTH_CHARS + 1]; char buffer[SCREEN_WIDTH_CHARS + 1];
vformat_buf(buffer, sizeof(buffer), vformat_buf(buffer, sizeof(buffer),
loc::gettext("{savebox_n_trinkets|wordy}"), loc::gettext("{savebox_n_trinkets|wordy}"),
@ -1158,12 +1158,12 @@ static void menurender(void)
graphics.drawpixeltextbox(17, 65-20, 286, 90, 65, 185, 207); graphics.drawpixeltextbox(17, 65-20, 286, 90, 65, 185, 207);
font::print(PR_2X | PR_CEN, -1, 20, loc::gettext("Quick Save"), tr, tg, tb); font::print(PR_2X | PR_CEN, -1, 20, loc::gettext("Quick Save"), tr, tg, tb);
graphics.Print(0, 80-20, game.quick_currentarea, 25, 255 - (help.glow / 2), 255 - (help.glow / 2), true); font::print(PR_CEN, -1, 80-20, game.quick_currentarea, 25, 255 - (help.glow / 2), 255 - (help.glow / 2));
for (int i = 0; i < 6; i++) for (int i = 0; i < 6; i++)
{ {
graphics.drawcrewman(169-(3*42)+(i*42), 95-20, i, game.quick_crewstats[i], true); graphics.drawcrewman(169-(3*42)+(i*42), 95-20, i, game.quick_crewstats[i], true);
} }
graphics.Print(59, 132-20, game.quick_gametime, 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2)); font::print(0, 59, 132-20, game.quick_gametime, 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2));
char buffer[SCREEN_WIDTH_CHARS + 1]; char buffer[SCREEN_WIDTH_CHARS + 1];
vformat_buf(buffer, sizeof(buffer), vformat_buf(buffer, sizeof(buffer),
loc::gettext("{savebox_n_trinkets|wordy}"), loc::gettext("{savebox_n_trinkets|wordy}"),
@ -1195,7 +1195,7 @@ static void menurender(void)
"n_crew:int", "n_crew:int",
game.ndmresultcrewrescued game.ndmresultcrewrescued
); );
graphics.Print(0, 100, buffer, tr, tg, tb, true); font::print(PR_CEN, -1, 100, buffer, tr, tg, tb);
loc::gettext_plural_fill( loc::gettext_plural_fill(
buffer, sizeof(buffer), buffer, sizeof(buffer),
@ -1204,10 +1204,10 @@ static void menurender(void)
"n_trinkets:int", "n_trinkets:int",
game.ndmresulttrinkets game.ndmresulttrinkets
); );
graphics.PrintWrap(0, 110, buffer, tr, tg, tb, true); font::print_wrap(PR_CEN | PR_CJK_LOW, -1, 110, buffer, tr, tg, tb);
graphics.Print(0, 145, loc::gettext("You managed to reach:"), tr, tg, tb, true); font::print(PR_CEN, -1, 145, loc::gettext("You managed to reach:"), tr, tg, tb);
graphics.Print(0, 155, game.ndmresulthardestroom, tr, tg, tb, true); font::print(PR_CEN | PR_CJK_LOW, -1, 155, game.ndmresulthardestroom, tr, tg, tb);
const char* encouragement; const char* encouragement;
switch (game.ndmresultcrewrescued) switch (game.ndmresultcrewrescued)
@ -1244,7 +1244,7 @@ static void menurender(void)
{ {
graphics.drawcrewman(169-(3*42)+(i*42), 68, i, game.ndmresultcrewstats[i], true); graphics.drawcrewman(169-(3*42)+(i*42), 68, i, game.ndmresultcrewstats[i], true);
} }
graphics.Print(0, 100, loc::gettext("You rescued all the crewmates!"), tr, tg, tb, true); font::print(PR_CEN, -1, 100, loc::gettext("You rescued all the crewmates!"), tr, tg, tb);
char buffer[3*SCREEN_WIDTH_CHARS + 1]; char buffer[3*SCREEN_WIDTH_CHARS + 1];
loc::gettext_plural_fill( loc::gettext_plural_fill(
@ -1254,7 +1254,7 @@ static void menurender(void)
"n_trinkets:int", "n_trinkets:int",
game.ndmresulttrinkets game.ndmresulttrinkets
); );
graphics.PrintWrap(0, 110, buffer, tr, tg, tb, true); font::print_wrap(PR_CEN | PR_CJK_LOW, -1, 110, buffer, tr, tg, tb);
graphics.PrintWrap(0, 160, loc::gettext("A new trophy has been awarded and placed in the secret lab to acknowledge your achievement!"), tr, tg, tb, true); graphics.PrintWrap(0, 160, loc::gettext("A new trophy has been awarded and placed in the secret lab to acknowledge your achievement!"), tr, tg, tb, true);
break; break;
@ -1272,7 +1272,7 @@ static void menurender(void)
font::print(PR_CJK_LOW, 49, 90-15, tempstring, tr, tg, tb); font::print(PR_CJK_LOW, 49, 90-15, tempstring, tr, tg, tb);
if (game.timetrialresulttime <= game.timetrialresultpar) if (game.timetrialresulttime <= game.timetrialresultpar)
{ {
font::print(PR_CJK_LOW, 228, 90-15, loc::gettext("+1 Rank!"), 255, 255, 255); font::print(PR_RIGHT | PR_CJK_LOW, 292, 90-15, loc::gettext("+1 Rank!"), 255, 255, 255);
} }
tempstring = help.String(game.timetrialresultdeaths); tempstring = help.String(game.timetrialresultdeaths);
@ -1281,7 +1281,7 @@ static void menurender(void)
font::print(PR_CJK_LOW, 49, 90+20, tempstring, tr, tg, tb); font::print(PR_CJK_LOW, 49, 90+20, tempstring, tr, tg, tb);
if (game.timetrialresultdeaths == 0) if (game.timetrialresultdeaths == 0)
{ {
font::print(PR_CJK_LOW, 228, 90+20, loc::gettext("+1 Rank!"), 255, 255, 255); font::print(PR_RIGHT | PR_CJK_LOW, 292, 90+20, loc::gettext("+1 Rank!"), 255, 255, 255);
} }
char buffer[SCREEN_WIDTH_CHARS + 1]; char buffer[SCREEN_WIDTH_CHARS + 1];
@ -1296,7 +1296,7 @@ static void menurender(void)
font::print(PR_CJK_LOW, 49, 90+55, buffer, tr, tg, tb); font::print(PR_CJK_LOW, 49, 90+55, buffer, tr, tg, tb);
if (game.timetrialresulttrinkets >= game.timetrialresultshinytarget) if (game.timetrialresulttrinkets >= game.timetrialresultshinytarget)
{ {
font::print(PR_CJK_LOW, 228, 90+55, loc::gettext("+1 Rank!"), 255, 255, 255); font::print(PR_RIGHT | PR_CJK_LOW, 292, 90+55, loc::gettext("+1 Rank!"), 255, 255, 255);
} }
const char* rank = ""; const char* rank = "";
@ -1354,9 +1354,9 @@ static void menurender(void)
else else
{ {
font::print(PR_2X | PR_CEN, -1, 30, loc::gettext("???"), tr, tg, tb); font::print(PR_2X | PR_CEN, -1, 30, loc::gettext("???"), tr, tg, tb);
graphics.Print( -1, 60, loc::gettext("TO UNLOCK:"), tr, tg, tb, true); font::print(PR_CEN, -1, 60, loc::gettext("TO UNLOCK:"), tr, tg, tb);
graphics.Print( -1, 75, loc::gettext("Rescue Violet"), tr, tg, tb, true); font::print(PR_CEN, -1, 75, loc::gettext("Rescue Violet"), tr, tg, tb);
graphics.Print( -1, 85, loc::gettext("Find three trinkets"), tr, tg, tb, true); font::print(PR_CEN, -1, 87, loc::gettext("Find three trinkets"), tr, tg, tb);
} }
break; break;
case 1: case 1:
@ -1370,9 +1370,9 @@ static void menurender(void)
else else
{ {
font::print(PR_2X | PR_CEN, -1, 30, loc::gettext("???"), tr, tg, tb); font::print(PR_2X | PR_CEN, -1, 30, loc::gettext("???"), tr, tg, tb);
graphics.Print( -1, 60, loc::gettext("TO UNLOCK:"), tr, tg, tb, true); font::print(PR_CEN, -1, 60, loc::gettext("TO UNLOCK:"), tr, tg, tb);
graphics.Print( -1, 75, loc::gettext("Rescue Victoria"), tr, tg, tb, true); font::print(PR_CEN, -1, 75, loc::gettext("Rescue Victoria"), tr, tg, tb);
graphics.Print( -1, 85, loc::gettext("Find six trinkets"), tr, tg, tb, true); font::print(PR_CEN, -1, 87, loc::gettext("Find six trinkets"), tr, tg, tb);
} }
break; break;
case 2: case 2:
@ -1386,9 +1386,9 @@ static void menurender(void)
else else
{ {
font::print(PR_2X | PR_CEN, -1, 30, loc::gettext("???"), tr, tg, tb); font::print(PR_2X | PR_CEN, -1, 30, loc::gettext("???"), tr, tg, tb);
graphics.Print( -1, 60, loc::gettext("TO UNLOCK:"), tr, tg, tb, true); font::print(PR_CEN, -1, 60, loc::gettext("TO UNLOCK:"), tr, tg, tb);
graphics.Print( -1, 75, loc::gettext("Rescue Vermilion"), tr, tg, tb, true); font::print(PR_CEN, -1, 75, loc::gettext("Rescue Vermilion"), tr, tg, tb);
graphics.Print( -1, 85, loc::gettext("Find nine trinkets"), tr, tg, tb, true); font::print(PR_CEN, -1, 87, loc::gettext("Find nine trinkets"), tr, tg, tb);
} }
break; break;
case 3: case 3:
@ -1402,9 +1402,9 @@ static void menurender(void)
else else
{ {
font::print(PR_2X | PR_CEN, -1, 30, loc::gettext("???"), tr, tg, tb); font::print(PR_2X | PR_CEN, -1, 30, loc::gettext("???"), tr, tg, tb);
graphics.Print( -1, 60, loc::gettext("TO UNLOCK:"), tr, tg, tb, true); font::print(PR_CEN, -1, 60, loc::gettext("TO UNLOCK:"), tr, tg, tb);
graphics.Print( -1, 75, loc::gettext("Rescue Vitellary"), tr, tg, tb, true); font::print(PR_CEN, -1, 75, loc::gettext("Rescue Vitellary"), tr, tg, tb);
graphics.Print( -1, 85, loc::gettext("Find twelve trinkets"), tr, tg, tb, true); font::print(PR_CEN, -1, 87, loc::gettext("Find twelve trinkets"), tr, tg, tb);
} }
break; break;
case 4: case 4:
@ -1418,9 +1418,9 @@ static void menurender(void)
else else
{ {
font::print(PR_2X | PR_CEN, -1, 30, loc::gettext("???"), tr, tg, tb); font::print(PR_2X | PR_CEN, -1, 30, loc::gettext("???"), tr, tg, tb);
graphics.Print( -1, 60, loc::gettext("TO UNLOCK:"), tr, tg, tb, true); font::print(PR_CEN, -1, 60, loc::gettext("TO UNLOCK:"), tr, tg, tb);
graphics.Print( -1, 75, loc::gettext("Rescue Verdigris"), tr, tg, tb, true); font::print(PR_CEN, -1, 75, loc::gettext("Rescue Verdigris"), tr, tg, tb);
graphics.Print( -1, 85, loc::gettext("Find fifteen trinkets"), tr, tg, tb, true); font::print(PR_CEN, -1, 87, loc::gettext("Find fifteen trinkets"), tr, tg, tb);
} }
break; break;
case 5: case 5:
@ -1434,9 +1434,9 @@ static void menurender(void)
else else
{ {
font::print(PR_2X | PR_CEN, -1, 30, loc::gettext("???"), tr, tg, tb); font::print(PR_2X | PR_CEN, -1, 30, loc::gettext("???"), tr, tg, tb);
graphics.Print( -1, 60, loc::gettext("TO UNLOCK:"), tr, tg, tb, true); font::print(PR_CEN, -1, 60, loc::gettext("TO UNLOCK:"), tr, tg, tb);
graphics.Print( -1, 75, loc::gettext("Complete the game"), tr, tg, tb, true); font::print(PR_CEN, -1, 75, loc::gettext("Complete the game"), tr, tg, tb);
graphics.Print( -1, 85, loc::gettext("Find eighteen trinkets"), tr, tg, tb, true); font::print(PR_CEN, -1, 87, loc::gettext("Find eighteen trinkets"), tr, tg, tb);
} }
break; break;
} }
@ -1684,57 +1684,57 @@ void gamecompleterender(void)
if (graphics.onscreen(320 + position)) if (graphics.onscreen(320 + position))
{ {
graphics.drawcrewman(70, 320 + position, 0, true); graphics.drawcrewman(70, 320 + position, 0, true);
graphics.Print(100, 330 + position, loc::gettext("Captain Viridian"), tr, tg, tb); font::print(0, 100, 330 + position, loc::gettext("Captain Viridian"), tr, tg, tb);
} }
if (graphics.onscreen(350 + position)) if (graphics.onscreen(350 + position))
{ {
graphics.drawcrewman(70, 350 + position, 1, true); graphics.drawcrewman(70, 350 + position, 1, true);
graphics.Print(100, 360 + position, loc::gettext("Doctor Violet"), tr, tg, tb); font::print(0, 100, 360 + position, loc::gettext("Doctor Violet"), tr, tg, tb);
} }
if (graphics.onscreen(380 + position)) if (graphics.onscreen(380 + position))
{ {
graphics.drawcrewman(70, 380 + position, 2, true); graphics.drawcrewman(70, 380 + position, 2, true);
graphics.Print(100, 390 + position, loc::gettext("Professor Vitellary"), tr, tg, tb); font::print(0, 100, 390 + position, loc::gettext("Professor Vitellary"), tr, tg, tb);
} }
if (graphics.onscreen(410 + position)) if (graphics.onscreen(410 + position))
{ {
graphics.drawcrewman(70, 410 + position, 3, true); graphics.drawcrewman(70, 410 + position, 3, true);
graphics.Print(100, 420 + position, loc::gettext("Officer Vermilion"), tr, tg, tb); font::print(0, 100, 420 + position, loc::gettext("Officer Vermilion"), tr, tg, tb);
} }
if (graphics.onscreen(440 + position)) if (graphics.onscreen(440 + position))
{ {
graphics.drawcrewman(70, 440 + position, 4, true); graphics.drawcrewman(70, 440 + position, 4, true);
graphics.Print(100, 450 + position, loc::gettext("Chief Verdigris"), tr, tg, tb); font::print(0, 100, 450 + position, loc::gettext("Chief Verdigris"), tr, tg, tb);
} }
if (graphics.onscreen(470 + position)) if (graphics.onscreen(470 + position))
{ {
graphics.drawcrewman(70, 470 + position, 5, true); graphics.drawcrewman(70, 470 + position, 5, true);
graphics.Print(100, 480 + position, loc::gettext("Doctor Victoria"), tr, tg, tb); font::print(0, 100, 480 + position, loc::gettext("Doctor Victoria"), tr, tg, tb);
} }
if (graphics.onscreen(520 + position)) font::print(PR_3X | PR_CEN, -1, 520 + position, loc::gettext("Credits"), tr, tg, tb); if (graphics.onscreen(520 + position)) font::print(PR_3X | PR_CEN, -1, 520 + position, loc::gettext("Credits"), tr, tg, tb);
if (graphics.onscreen(560 + position)) if (graphics.onscreen(560 + position))
{ {
graphics.Print(40, 560 + position, loc::gettext("Created by"), tr, tg, tb); font::print(PR_CJK_HIGH, 40, 560 + position, loc::gettext("Created by"), tr, tg, tb);
font::print(PR_2X | PR_FONT_8X8, 60, 570 + position, "Terry Cavanagh", tr, tg, tb); font::print(PR_2X | PR_FONT_8X8, 60, 570 + position, "Terry Cavanagh", tr, tg, tb);
} }
if (graphics.onscreen(600 + position)) if (graphics.onscreen(600 + position))
{ {
graphics.Print(40, 600 + position, loc::gettext("With Music by"), tr, tg, tb); font::print(PR_CJK_HIGH, 40, 600 + position, loc::gettext("With Music by"), tr, tg, tb);
font::print(PR_2X | PR_FONT_8X8, 60, 610 + position, "Magnus Pålsson", tr, tg, tb); font::print(PR_2X | PR_FONT_8X8, 60, 610 + position, "Magnus Pålsson", tr, tg, tb);
} }
if (graphics.onscreen(640 + position)) if (graphics.onscreen(640 + position))
{ {
graphics.Print(40, 640 + position, loc::gettext("Rooms Named by"), tr, tg, tb); font::print(PR_CJK_HIGH, 40, 640 + position, loc::gettext("Rooms Named by"), tr, tg, tb);
font::print(PR_2X | PR_FONT_8X8, 60, 650 + position, "Bennett Foddy", tr, tg, tb); font::print(PR_2X | PR_FONT_8X8, 60, 650 + position, "Bennett Foddy", tr, tg, tb);
} }
if (graphics.onscreen(710 + position)) if (graphics.onscreen(710 + position))
{ {
graphics.Print(40, 680 + position, loc::gettext("C++ Port by"), tr, tg, tb); font::print(PR_CJK_HIGH, 40, 680 + position, loc::gettext("C++ Port by"), tr, tg, tb);
font::print(PR_2X | PR_FONT_8X8, 60, 690 + position, "Simon Roth", tr, tg, tb); font::print(PR_2X | PR_FONT_8X8, 60, 690 + position, "Simon Roth", tr, tg, tb);
font::print(PR_2X | PR_FONT_8X8, 60, 710 + position, "Ethan Lee", tr, tg, tb); font::print(PR_2X | PR_FONT_8X8, 60, 710 + position, "Ethan Lee", tr, tg, tb);
font::print(PR_2X | PR_FONT_8X8, 60, 730 + position, "Misa Kai", tr, tg, tb); font::print(PR_2X | PR_FONT_8X8, 60, 730 + position, "Misa Kai", tr, tg, tb);
@ -1743,14 +1743,14 @@ void gamecompleterender(void)
if (graphics.onscreen(770 + position)) if (graphics.onscreen(770 + position))
{ {
graphics.Print(40, 760 + position, loc::gettext("Beta Testing by"), tr, tg, tb); font::print(PR_CJK_HIGH, 40, 760 + position, loc::gettext("Beta Testing by"), tr, tg, tb);
font::print(PR_2X | PR_FONT_8X8, 60, 770 + position, "Sam Kaplan", tr, tg, tb); font::print(PR_2X | PR_FONT_8X8, 60, 770 + position, "Sam Kaplan", tr, tg, tb);
font::print(PR_2X | PR_FONT_8X8, 60, 790 + position, "Pauli Kohberger", tr, tg, tb); font::print(PR_2X | PR_FONT_8X8, 60, 790 + position, "Pauli Kohberger", tr, tg, tb);
} }
if (graphics.onscreen(820 + position)) if (graphics.onscreen(820 + position))
{ {
graphics.Print(40, 820 + position, loc::gettext("Ending Picture by"), tr, tg, tb); font::print(PR_CJK_HIGH, 40, 820 + position, loc::gettext("Ending Picture by"), tr, tg, tb);
font::print(PR_2X | PR_FONT_8X8, 60, 830 + position, "Pauli Kohberger", tr, tg, tb); font::print(PR_2X | PR_FONT_8X8, 60, 830 + position, "Pauli Kohberger", tr, tg, tb);
} }
@ -1768,7 +1768,7 @@ void gamecompleterender(void)
} }
creditOffset += 10; creditOffset += 10;
if (graphics.onscreen(creditOffset + position)) graphics.Print( -1, creditOffset + position, loc::gettext("and"), tr, tg, tb, true); if (graphics.onscreen(creditOffset + position)) font::print(PR_CEN, -1, creditOffset + position, loc::gettext("and"), tr, tg, tb);
creditOffset += 20; creditOffset += 20;
for (size_t i = 0; i < SDL_arraysize(Credits::patrons); i += 1) for (size_t i = 0; i < SDL_arraysize(Credits::patrons); i += 1)
@ -2283,7 +2283,7 @@ static void draw_roomname_menu(void)
name = loc::gettext_roomname(map.custommode, game.roomx, game.roomy, map.roomname, map.roomname_special); name = loc::gettext_roomname(map.custommode, game.roomx, game.roomy, map.roomname, map.roomname_special);
} }
graphics.Print(5, 2, name, 196, 196, 255 - help.glow, true); font::print(PR_FONT_LEVEL | PR_CEN, -1, 2, name, 196, 196, 255 - help.glow);
} }
/* Used to keep some graphics positions on the map screen /* Used to keep some graphics positions on the map screen
@ -2447,7 +2447,7 @@ void maprender(void)
// While in a cutscene, you can only save // While in a cutscene, you can only save
char buffer[SCREEN_WIDTH_CHARS + 1]; char buffer[SCREEN_WIDTH_CHARS + 1];
vformat_buf(buffer, sizeof(buffer), loc::get_langmeta()->menu_select_tight.c_str(), "label:str", loc::gettext("SAVE")); vformat_buf(buffer, sizeof(buffer), loc::get_langmeta()->menu_select_tight.c_str(), "label:str", loc::gettext("SAVE"));
graphics.Print(-1, 220, buffer, 196, 196, 255 - help.glow, true); font::print(PR_CEN | PR_CJK_LOW, -1, 220, buffer, 196, 196, 255 - help.glow);
} }
else if (game.menupage <= 3) else if (game.menupage <= 3)
{ {
@ -2479,7 +2479,7 @@ void maprender(void)
case 31: case 31:
case 32: case 32:
case 33: case 33:
graphics.Print(-1, 220, loc::gettext("[ PAUSE ]"), 196, 196, 255 - help.glow, true); font::print(PR_CEN | PR_CJK_LOW, -1, 220, loc::gettext("[ PAUSE ]"), 196, 196, 255 - help.glow);
} }
// Draw menu options // Draw menu options
@ -2525,7 +2525,7 @@ void maprender(void)
graphics.PrintWrap(0, 174, loc::gettext("SUPER GRAVITRON HIGHSCORE"), 196, 196, 255 - help.glow, true); graphics.PrintWrap(0, 174, loc::gettext("SUPER GRAVITRON HIGHSCORE"), 196, 196, 255 - help.glow, true);
std::string tempstring = help.timestring(game.swnrecord); std::string tempstring = help.timestring(game.swnrecord);
graphics.Print( 240, 124, loc::gettext("Best Time"), 196, 196, 255 - help.glow, true); font::print(PR_CEN, -1, 124, loc::gettext("Best Time"), 196, 196, 255 - help.glow);
font::print(PR_2X | PR_CEN, -1, 102, tempstring, 196, 196, 255 - help.glow); font::print(PR_2X | PR_CEN, -1, 102, tempstring, 196, 196, 255 - help.glow);
switch(game.swnbestrank) switch(game.swnbestrank)
@ -2558,7 +2558,7 @@ void maprender(void)
graphics.PrintWrap(0, 40, loc::gettext("SUPER GRAVITRON HIGHSCORE"), 196, 196, 255 - help.glow, true); graphics.PrintWrap(0, 40, loc::gettext("SUPER GRAVITRON HIGHSCORE"), 196, 196, 255 - help.glow, true);
std::string tempstring = help.timestring(game.swnrecord); std::string tempstring = help.timestring(game.swnrecord);
graphics.Print( 240, 90, loc::gettext("Best Time"), 196, 196, 255 - help.glow, true); font::print(PR_CEN, -1, 90, loc::gettext("Best Time"), 196, 196, 255 - help.glow);
font::print(PR_2X | PR_CEN, -1, 104, tempstring, 196, 196, 255 - help.glow); font::print(PR_2X | PR_CEN, -1, 104, tempstring, 196, 196, 255 - help.glow);
switch(game.swnbestrank) switch(game.swnbestrank)
@ -2701,7 +2701,7 @@ void maprender(void)
} }
/* Stats. */ /* Stats. */
graphics.Print(0, FLIP(52, 8), loc::gettext("[Trinkets found]"), 196, 196, 255 - help.glow, true); font::print(PR_CEN | PR_CJK_HIGH, -1, FLIP(52, 8), loc::gettext("[Trinkets found]"), 196, 196, 255 - help.glow);
char buffer[SCREEN_WIDTH_CHARS + 1]; char buffer[SCREEN_WIDTH_CHARS + 1];
vformat_buf( vformat_buf(
buffer, sizeof(buffer), buffer, sizeof(buffer),
@ -2709,13 +2709,13 @@ void maprender(void)
"n_trinkets:int, max_trinkets:int", "n_trinkets:int, max_trinkets:int",
game.trinkets(), max_trinkets game.trinkets(), max_trinkets
); );
graphics.Print(0, FLIP(64, 8), buffer, 96, 96, 96, true); font::print(PR_CEN | PR_CJK_LOW, -1, FLIP(64, 8), buffer, 96, 96, 96);
graphics.Print(0, FLIP(102, 8), loc::gettext("[Number of Deaths]"), 196, 196, 255 - help.glow, true); font::print(PR_CEN | PR_CJK_HIGH, -1, FLIP(102, 8), loc::gettext("[Number of Deaths]"), 196, 196, 255 - help.glow);
graphics.Print(0, FLIP(114, 8), help.String(game.deathcounts), 96, 96, 96, true); font::print(PR_CEN | PR_CJK_LOW, -1, FLIP(114, 8), help.String(game.deathcounts), 96, 96, 96);
graphics.Print(0, FLIP(152, 8), loc::gettext("[Time Taken]"), 196, 196, 255 - help.glow, true); font::print(PR_CEN | PR_CJK_HIGH, -1, FLIP(152, 8), loc::gettext("[Time Taken]"), 196, 196, 255 - help.glow);
graphics.Print(0, FLIP(164, 8), game.timestring(), 96, 96, 96, true); font::print(PR_CEN | PR_CJK_LOW, -1, FLIP(164, 8), game.timestring(), 96, 96, 96);
break; break;
} }
case 3: case 3:
@ -2757,15 +2757,15 @@ void maprender(void)
if (!game.gamesaved) if (!game.gamesaved)
{ {
graphics.Print(0, 80, loc::gettext("[Press ACTION to save your game]"), 255 - help.glow*2, 255 - help.glow*2, 255 - help.glow, true); font::print(PR_CEN, -1, 80, loc::gettext("[Press ACTION to save your game]"), 255 - help.glow*2, 255 - help.glow*2, 255 - help.glow);
if (map.custommode || game.quicksummary == "") if (map.custommode || game.quicksummary == "")
{ {
break; break;
} }
graphics.Print(0, FLIP(100, 8), loc::gettext("Last Save:"), 164 - help.glow/4, 164 - help.glow/4, 164, true); font::print(PR_CEN, -1, FLIP(100, 8), loc::gettext("Last Save:"), 164 - help.glow/4, 164 - help.glow/4, 164);
graphics.Print(0, FLIP(110, 8), game.quicksummary, 164 - help.glow/4, 164 - help.glow/4, 164, true); font::print(PR_CEN, -1, FLIP(112, 8), game.quicksummary, 164 - help.glow/4, 164 - help.glow/4, 164);
break; break;
} }
@ -2777,12 +2777,12 @@ void maprender(void)
if (map.custommode) if (map.custommode)
{ {
graphics.Print(0, FLIP(90, 8), game.customleveltitle, 25, 255 - help.glow/2, 255 - help.glow/2, true); font::print(PR_CEN | PR_FONT_LEVEL, -1, FLIP(90, 8), game.customleveltitle, 25, 255 - help.glow/2, 255 - help.glow/2);
} }
else else
{ {
size_t i; size_t i;
graphics.Print(0, FLIP(80, 8), game.savearea, 25, 255 - help.glow/2, 255 - help.glow/2, true); font::print(PR_CEN, -1, FLIP(80, 8), game.savearea, 25, 255 - help.glow/2, 255 - help.glow/2);
for (i = 0; i < SDL_arraysize(game.crewstats); ++i) for (i = 0; i < SDL_arraysize(game.crewstats); ++i)
{ {
/* Crewmates are annoying. Their height is 21 pixels, but to flip them, /* Crewmates are annoying. Their height is 21 pixels, but to flip them,
@ -2791,7 +2791,7 @@ void maprender(void)
} }
} }
graphics.Print(59, FLIP(132, 8), game.savetime, 255 - help.glow/2, 255 - help.glow/2, 255 - help.glow/2); font::print(0, 59, FLIP(132, 8), game.savetime, 255 - help.glow/2, 255 - help.glow/2, 255 - help.glow/2);
char buffer[SCREEN_WIDTH_CHARS + 1]; char buffer[SCREEN_WIDTH_CHARS + 1];
vformat_buf(buffer, sizeof(buffer), vformat_buf(buffer, sizeof(buffer),
loc::gettext("{savebox_n_trinkets|wordy}"), loc::gettext("{savebox_n_trinkets|wordy}"),
@ -2805,7 +2805,7 @@ void maprender(void)
break; break;
} }
case 10: case 10:
graphics.Print(-1, 220, loc::gettext("[ QUIT ]"), 196, 196, 255 - help.glow, true); font::print(PR_CEN | PR_CJK_LOW, -1, 220, loc::gettext("[ QUIT ]"), 196, 196, 255 - help.glow);
if (graphics.flipmode) if (graphics.flipmode)
{ {
@ -2818,8 +2818,8 @@ void maprender(void)
graphics.PrintWrap(0, 142, loc::gettext("Do you want to quit? You will lose any unsaved progress."), 196, 196, 255 - help.glow, true, 12); graphics.PrintWrap(0, 142, loc::gettext("Do you want to quit? You will lose any unsaved progress."), 196, 196, 255 - help.glow, true, 12);
} }
graphics.Print(80-16, 88, loc::gettext("[ NO, KEEP PLAYING ]"), 196, 196, 255 - help.glow); font::print(0, 80-16, 88, loc::gettext("[ NO, KEEP PLAYING ]"), 196, 196, 255 - help.glow);
graphics.Print(80 + 32, 76, loc::gettext("yes, quit to menu"), 96, 96, 96); font::print(0, 80 + 32, 76, loc::gettext("yes, quit to menu"), 96, 96, 96);
} }
else else
{ {
@ -2833,13 +2833,13 @@ void maprender(void)
graphics.PrintWrap(0, 76, loc::gettext("Do you want to quit? You will lose any unsaved progress."), 196, 196, 255 - help.glow, true, 12); graphics.PrintWrap(0, 76, loc::gettext("Do you want to quit? You will lose any unsaved progress."), 196, 196, 255 - help.glow, true, 12);
} }
graphics.Print(80-16, 130, loc::gettext("[ NO, KEEP PLAYING ]"), 196, 196, 255 - help.glow); font::print(0, 80-16, 130, loc::gettext("[ NO, KEEP PLAYING ]"), 196, 196, 255 - help.glow);
graphics.Print(80 + 32, 142, loc::gettext("yes, quit to menu"), 96, 96, 96); font::print(0, 80 + 32, 142, loc::gettext("yes, quit to menu"), 96, 96, 96);
} }
break; break;
case 11: case 11:
graphics.Print(-1, 220, loc::gettext("[ QUIT ]"), 196, 196, 255 - help.glow, true); font::print(PR_CEN | PR_CJK_LOW, -1, 220, loc::gettext("[ QUIT ]"), 196, 196, 255 - help.glow);
if (graphics.flipmode) if (graphics.flipmode)
{ {
@ -2852,8 +2852,8 @@ void maprender(void)
graphics.PrintWrap(0, 142, loc::gettext("Do you want to quit? You will lose any unsaved progress."), 196, 196, 255 - help.glow, true, 12); graphics.PrintWrap(0, 142, loc::gettext("Do you want to quit? You will lose any unsaved progress."), 196, 196, 255 - help.glow, true, 12);
} }
graphics.Print(80, 88, loc::gettext("no, keep playing"), 96,96,96); font::print(0, 80, 88, loc::gettext("no, keep playing"), 96,96,96);
graphics.Print(80+32-16, 76, loc::gettext("[ YES, QUIT TO MENU ]"), 196, 196, 255 - help.glow); font::print(0, 80+32-16, 76, loc::gettext("[ YES, QUIT TO MENU ]"), 196, 196, 255 - help.glow);
} }
else else
{ {
@ -2866,41 +2866,41 @@ void maprender(void)
graphics.PrintWrap(0, 76, loc::gettext("Do you want to quit? You will lose any unsaved progress."), 196, 196, 255 - help.glow, true, 12); graphics.PrintWrap(0, 76, loc::gettext("Do you want to quit? You will lose any unsaved progress."), 196, 196, 255 - help.glow, true, 12);
} }
graphics.Print(80, 130, loc::gettext("no, keep playing"), 96,96,96); font::print(0, 80, 130, loc::gettext("no, keep playing"), 96,96,96);
graphics.Print(80+32-16, 142, loc::gettext("[ YES, QUIT TO MENU ]"), 196, 196, 255 - help.glow); font::print(0, 80+32-16, 142, loc::gettext("[ YES, QUIT TO MENU ]"), 196, 196, 255 - help.glow);
} }
break; break;
case 20: case 20:
graphics.Print(-1, 220, loc::gettext("[ GRAVITRON ]"), 196, 196, 255 - help.glow, true); font::print(PR_CEN | PR_CJK_LOW, -1, 220, loc::gettext("[ GRAVITRON ]"), 196, 196, 255 - help.glow);
if (graphics.flipmode) if (graphics.flipmode)
{ {
graphics.PrintWrap(0, 88, loc::gettext("Do you want to return to the secret laboratory?"), 196, 196, 255 - help.glow, true, 12); graphics.PrintWrap(0, 88, loc::gettext("Do you want to return to the secret laboratory?"), 196, 196, 255 - help.glow, true, 12);
graphics.Print(80-16, 142, loc::gettext("[ NO, KEEP PLAYING ]"), 196, 196, 255 - help.glow); font::print(0, 80-16, 142, loc::gettext("[ NO, KEEP PLAYING ]"), 196, 196, 255 - help.glow);
graphics.Print(80 + 32, 130, loc::gettext("yes, return"), 96, 96, 96); font::print(0, 80 + 32, 130, loc::gettext("yes, return"), 96, 96, 96);
} }
else else
{ {
graphics.PrintWrap(0, 76, loc::gettext("Do you want to return to the secret laboratory?"), 196, 196, 255 - help.glow, true, 12); graphics.PrintWrap(0, 76, loc::gettext("Do you want to return to the secret laboratory?"), 196, 196, 255 - help.glow, true, 12);
graphics.Print(80-16, 130, loc::gettext("[ NO, KEEP PLAYING ]"), 196, 196, 255 - help.glow); font::print(0, 80-16, 130, loc::gettext("[ NO, KEEP PLAYING ]"), 196, 196, 255 - help.glow);
graphics.Print(80 + 32, 142, loc::gettext("yes, return"), 96, 96, 96); font::print(0, 80 + 32, 142, loc::gettext("yes, return"), 96, 96, 96);
} }
break; break;
case 21: case 21:
graphics.Print(-1, 220, loc::gettext("[ GRAVITRON ]"), 196, 196, 255 - help.glow, true); font::print(PR_CEN | PR_CJK_LOW, -1, 220, loc::gettext("[ GRAVITRON ]"), 196, 196, 255 - help.glow);
if (graphics.flipmode) if (graphics.flipmode)
{ {
graphics.PrintWrap(0, 88, loc::gettext("Do you want to return to the secret laboratory?"), 196, 196, 255 - help.glow, true, 12); graphics.PrintWrap(0, 88, loc::gettext("Do you want to return to the secret laboratory?"), 196, 196, 255 - help.glow, true, 12);
graphics.Print(80, 142, loc::gettext("no, keep playing"), 96, 96, 96); font::print(0, 80, 142, loc::gettext("no, keep playing"), 96, 96, 96);
graphics.Print(80 + 32-16, 130, loc::gettext("[ YES, RETURN ]"), 196, 196, 255 - help.glow); font::print(0, 80 + 32-16, 130, loc::gettext("[ YES, RETURN ]"), 196, 196, 255 - help.glow);
} }
else else
{ {
graphics.PrintWrap(0, 76, loc::gettext("Do you want to return to the secret laboratory?"), 196, 196, 255 - help.glow, true, 12); graphics.PrintWrap(0, 76, loc::gettext("Do you want to return to the secret laboratory?"), 196, 196, 255 - help.glow, true, 12);
graphics.Print(80, 130, loc::gettext("no, keep playing"), 96, 96, 96); font::print(0, 80, 130, loc::gettext("no, keep playing"), 96, 96, 96);
graphics.Print(80 + 32-16, 142, loc::gettext("[ YES, RETURN ]"), 196, 196, 255 - help.glow); font::print(0, 80 + 32-16, 142, loc::gettext("[ YES, RETURN ]"), 196, 196, 255 - help.glow);
} }
} }
@ -2987,8 +2987,8 @@ void teleporterrender(void)
); );
//Instructions! //Instructions!
graphics.Print(5, 210, loc::gettext("Press Left/Right to choose a Teleporter"), 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true); font::print(PR_CEN, -1, 210, loc::gettext("Press Left/Right to choose a Teleporter"), 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2));
graphics.Print(5, 225, final_string, 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true); font::print(PR_CEN, -1, 225, final_string, 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2));
} }
graphics.drawgui(); graphics.drawgui();