From d6bf0ec00794b1eaa0159b100d64820cb506e88d Mon Sep 17 00:00:00 2001
From: aap <aap@papnet.eu>
Date: Wed, 29 Apr 2020 21:33:10 +0200
Subject: [PATCH 1/2] update librw

---
 librw | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/librw b/librw
index a3120078..86660a3f 160000
--- a/librw
+++ b/librw
@@ -1 +1 @@
-Subproject commit a3120078932053ddd61d696536d8b371e9d65b37
+Subproject commit 86660a3ff3c958500683300e5e5882d1239d6ca5

From 080689589cc4869c7c9724191c896dea51b53d09 Mon Sep 17 00:00:00 2001
From: Sergeanur <s.anureev@yandex.ua>
Date: Thu, 30 Apr 2020 02:27:15 +0300
Subject: [PATCH 2/2] Jap fixes

---
 src/core/Frontend.cpp | 38 ++++++++++++++++++++++++++++++++++----
 1 file changed, 34 insertions(+), 4 deletions(-)

diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp
index a83bffce..64332cb4 100644
--- a/src/core/Frontend.cpp
+++ b/src/core/Frontend.cpp
@@ -413,6 +413,14 @@ CMenuManager::BuildStatLine(char *text, void *stat, bool itsFloat, void *stat2)
 	if (!text)
 		return;
 
+#ifdef MORE_LANGUAGES
+	if (CFont::IsJapanese() && stat2)
+		if (itsFloat)
+			sprintf(gString2, "  %.2f/%.2f", *(float*)stat, *(float*)stat2);
+		else
+			sprintf(gString2, "  %d/%d", *(int*)stat, *(int*)stat2);
+	else
+#endif
 	if (stat2) {
 		if (itsFloat) 
 			sprintf(gString2, "  %.2f %s %.2f", *(float*)stat, UnicodeToAscii(TheText.Get("FEST_OO")), *(float*)stat2);
@@ -2939,7 +2947,6 @@ CMenuManager::InitialiseChangedLanguageSettings()
 		default:
 			break;
 		}
-		PcSaveHelper.PopulateSlotInfo();
 	}
 }
 
@@ -3286,7 +3293,7 @@ CMenuManager::PrintStats()
 {
 	int rowNum = ConstructStatLine(99999);
 #ifdef GTA3_1_1_PATCH
-	CFont::SetFontStyle(FONT_BANK);
+	CFont::SetFontStyle(FONT_LOCALE(FONT_BANK));
 #endif
 	CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X * 0.7), MENU_Y(MENU_TEXT_SIZE_Y * 0.9)); // second mulipliers are double, idk why
 	float nextYChange, y, alphaMult;
@@ -3345,9 +3352,21 @@ CMenuManager::PrintStats()
 
 	CFont::SetColor(CRGBA(235, 170, 50, FadeIn(255)));
 	CFont::SetRightJustifyOff();
-	CFont::PrintString(nextX, MENU_Y(STATS_RATING_Y), TheText.Get("CRIMRA")); nextX += MENU_X(10.0f) + CFont::GetStringWidth(TheText.Get("CRIMRA"), true);
+	CFont::PrintString(nextX, MENU_Y(STATS_RATING_Y), TheText.Get("CRIMRA"));
+#ifdef MORE_LANGUAGES
+	if (CFont::IsJapanese())
+		nextX += MENU_X(10.0f) + CFont::GetStringWidth_Jap(TheText.Get("CRIMRA"));
+	else
+#endif
+		nextX += MENU_X(10.0f) + CFont::GetStringWidth(TheText.Get("CRIMRA"), true);
 	UnicodeStrcpy(gUString, CStats::FindCriminalRatingString());
-	CFont::PrintString(nextX, MENU_Y(STATS_RATING_Y), gUString); nextX += MENU_X(6.0f) + CFont::GetStringWidth(gUString, true);
+	CFont::PrintString(nextX, MENU_Y(STATS_RATING_Y), gUString);
+#ifdef MORE_LANGUAGES
+	if (CFont::IsJapanese())
+		nextX += MENU_X(6.0f) + CFont::GetStringWidth_Jap(gUString);
+	else
+#endif
+		nextX += MENU_X(6.0f) + CFont::GetStringWidth(gUString, true);
 	sprintf(gString, "%d", CStats::FindCriminalRatingNumber());
 	AsciiToUnicode(gString, gUString);
 	CFont::PrintString(nextX, MENU_Y(STATS_RATING_Y), gUString);
@@ -5474,8 +5493,18 @@ CMenuManager::PrintMap(void)
 
 	float nextX = MENU_X(30.0f), nextY = 95.0f;
 	wchar *text;
+#ifdef MORE_LANGUAGES
+#define TEXT_PIECE(key,extraSpace) \
+	text = TheText.Get(key);\
+	CFont::PrintString(nextX, SCREEN_SCALE_FROM_BOTTOM(nextY), text);\
+	if (CFont::IsJapanese())\
+		nextX += CFont::GetStringWidth_Jap(text) + MENU_X(extraSpace);\
+	else\
+		nextX += CFont::GetStringWidth(text, true) + MENU_X(extraSpace);
+#else
 #define TEXT_PIECE(key,extraSpace) \
 	text = TheText.Get(key); CFont::PrintString(nextX, SCREEN_SCALE_FROM_BOTTOM(nextY), text); nextX += CFont::GetStringWidth(text, true) + MENU_X(extraSpace);
+#endif
 
 	TEXT_PIECE("FEC_MWF", 3.0f);
 	TEXT_PIECE("FEC_PGU", 1.0f);
@@ -5616,6 +5645,7 @@ CMenuManager::ConstructStatLine(int rowIdx)
 #ifdef MORE_LANGUAGES
 		case LANGUAGE_POLISH:
 		case LANGUAGE_RUSSIAN:
+		case LANGUAGE_JAPANESE:
 #endif
 			STAT_LINE("FESTDFM", &CStats::DistanceTravelledOnFoot, true, nil);
 			STAT_LINE("FESTDCM", &CStats::DistanceTravelledInVehicle, true, nil);