From 89d5edcbad94ca564f0db40e98c8f152040983ca Mon Sep 17 00:00:00 2001 From: hsz0566 Date: Sun, 26 Jul 2026 13:32:21 +0800 Subject: [PATCH] OpenJO: fix Traditional Chinese language handling --- code/rd-common/tr_font.cpp | 30 ++++++++++++++++++++---------- code/ui/ui_main.cpp | 8 +++++++- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/code/rd-common/tr_font.cpp b/code/rd-common/tr_font.cpp index 253d58fd51..fee411f18d 100644 --- a/code/rd-common/tr_font.cpp +++ b/code/rd-common/tr_font.cpp @@ -65,13 +65,23 @@ static Language_e GetLanguageEnum() static Language_e eLanguage = eWestern; #ifdef JK2_MODE if ( !sp_language ) - return eLanguage; - else if ( sp_language->integer == SP_LANGUAGE_KOREAN ) - eLanguage = eKorean; - else if ( sp_language->integer == SP_LANGUAGE_JAPANESE ) - eLanguage = eJapanese; - else if ( sp_language->integer == SP_LANGUAGE_TAIWANESE ) - eLanguage = eTaiwanese; + return eWestern; + + switch ( sp_language->integer ) + { + case SP_LANGUAGE_KOREAN: + eLanguage = eKorean; + break; + case SP_LANGUAGE_JAPANESE: + eLanguage = eJapanese; + break; + case SP_LANGUAGE_TAIWANESE: + eLanguage = eTaiwanese; + break; + default: + eLanguage = eWestern; + break; + } return eLanguage; #else @@ -735,7 +745,7 @@ unsigned int AnyLanguage_ReadCharFromString( char *psText, int *piAdvanceCount, const byte *psString = (const byte *) psText; // avoid sign-promote bug unsigned int uiLetter; - if ( Language_IsKorean() ) + if ( GetLanguageEnum() == eKorean ) { if ( Korean_ValidKSC5601Hangul( psString[0], psString[1] )) { @@ -755,7 +765,7 @@ unsigned int AnyLanguage_ReadCharFromString( char *psText, int *piAdvanceCount, } } else - if ( Language_IsTaiwanese() ) + if ( GetLanguageEnum() == eTaiwanese ) { if ( Taiwanese_ValidBig5Code( (psString[0] * 256) + psString[1] )) { @@ -774,7 +784,7 @@ unsigned int AnyLanguage_ReadCharFromString( char *psText, int *piAdvanceCount, } } else - if ( Language_IsJapanese() ) + if ( GetLanguageEnum() == eJapanese ) { if ( Japanese_ValidShiftJISCode( psString[0], psString[1] )) { diff --git a/code/ui/ui_main.cpp b/code/ui/ui_main.cpp index 4a20f0eec8..e75a37e455 100644 --- a/code/ui/ui_main.cpp +++ b/code/ui/ui_main.cpp @@ -47,6 +47,9 @@ USER INTERFACE MAIN extern stringID_table_t animTable [MAX_ANIMATIONS+1]; #include "../qcommon/stringed_ingame.h" +#ifdef JK2_MODE +#include "../qcommon/strippublic.h" +#endif #include "../qcommon/q_shared.h" #include "../qcommon/game_version.h" @@ -489,8 +492,11 @@ void _UI_Refresh( int realtime ) return; } - extern void SE_CheckForLanguageUpdates(void); +#ifdef JK2_MODE + JK2SP_CheckForLanguageUpdates(); +#else SE_CheckForLanguageUpdates(); +#endif if ( Menus_AnyFullScreenVisible() ) {//if not in full screen, don't mess with ghoul2