3333import com .tungsten .fclcore .util .Logging ;
3434import com .tungsten .fclcore .util .io .FileUtils ;
3535import com .tungsten .fclcore .util .versioning .GameVersionNumber ;
36- import com .tungsten .fclcore .util .versioning .VersionNumber ;
3736import com .tungsten .fcllibrary .util .LocaleUtils ;
3837
3938import java .io .BufferedReader ;
@@ -73,37 +72,66 @@ private void generateOptionsTxt() {
7372 }
7473
7574 if (optionsFile .exists ()) {
76- modifyOptions (optionsFile , false );
75+ fixOptions (optionsFile );
7776 return ;
7877 }
79- String v = repository .getGameVersion (version ).orElse ("" );
80- if (v .startsWith ("2.0" )) v = "1.5.1" ;
81- if (GameVersionNumber .compare (v , "1.5.2" ) <= 0 )
82- return ;
8378 try {
8479 RuntimeUtils .copyAssets (context , "options.txt" , optionsFile .getAbsolutePath ());
8580 } catch (IOException e ) {
8681 Logging .LOG .log (Level .WARNING , "Unable to generate options.txt" , e );
8782 }
8883
89- modifyOptions (optionsFile , true );
84+ modifyOptions (optionsFile );
9085 }
9186
92- private void modifyOptions (File optionsFile , boolean overwrite ) {
87+ private void modifyOptions (File optionsFile ) {
9388 StringBuilder str = new StringBuilder ();
9489 String lang ;
95- VersionNumber gameVersion = VersionNumber .asVersion (repository .getGameVersion (version ).orElse ("0.0" ));
90+ boolean isChinese = LocaleUtils .isChinese (context );
91+ GameVersionNumber gameVersion = GameVersionNumber .asGameVersion (repository .getGameVersion (version ).orElse ("0.0" ));
9692 if (gameVersion .compareTo ("1.1" ) < 0 ) {
9793 lang = null ;
9894 } else if (gameVersion .compareTo ("1.11" ) < 0 ) {
99- lang = "zh_CN" ;
95+ lang = isChinese ? "zh_CN" : "en_US " ;
10096 } else {
101- lang = "zh_cn" ;
97+ lang = isChinese ? "zh_cn" : "en_us" ;
98+ }
99+ try (BufferedReader bfr = new BufferedReader (new FileReader (optionsFile ))) {
100+ String line ;
101+ while ((line = bfr .readLine ()) != null ) {
102+ if (line .contains ("lang:" ) && lang != null ) {
103+ str .append ("lang:" ).append (lang ).append ("\n " );
104+ } else {
105+ str .append (line ).append ("\n " );
106+ }
107+ }
108+ } catch (Exception e ) {
109+ Logging .LOG .log (Level .WARNING , "Unable to read options.txt." , e );
110+ }
111+ if (!str .toString ().isEmpty ()) {
112+ try (FileWriter fw = new FileWriter (optionsFile )) {
113+ fw .write (str .toString ());
114+ } catch (IOException e ) {
115+ Logging .LOG .log (Level .WARNING , "Unable to write options.txt." , e );
116+ }
117+ }
118+ }
119+
120+ private void fixOptions (File optionsFile ) {
121+ StringBuilder str = new StringBuilder ();
122+ GameVersionNumber gameVersion = GameVersionNumber .asGameVersion (repository .getGameVersion (version ).orElse ("0.0" ));
123+ if (gameVersion .compareTo ("1.1" ) < 0 ) {
124+ return ;
102125 }
126+ boolean toUpper = gameVersion .compareTo ("1.11" ) < 0 ;
103127 try (BufferedReader bfr = new BufferedReader (new FileReader (optionsFile ))) {
104128 String line ;
105129 while ((line = bfr .readLine ()) != null ) {
106- if (line .contains ("lang:" ) && LocaleUtils .isChinese (context ) && overwrite && lang != null ) {
130+ if (line .contains ("lang:" )) {
131+ String lang ;
132+ lang = line .replace ("lang:" , "" );
133+ String [] parts = lang .split ("_" , 2 );
134+ lang = parts [0 ] + "_" + (toUpper ? parts [1 ].toUpperCase () : parts [1 ].toLowerCase ());
107135 str .append ("lang:" ).append (lang ).append ("\n " );
108136 } else {
109137 str .append (line ).append ("\n " );
@@ -112,7 +140,7 @@ private void modifyOptions(File optionsFile, boolean overwrite) {
112140 } catch (Exception e ) {
113141 Logging .LOG .log (Level .WARNING , "Unable to read options.txt." , e );
114142 }
115- if (!"" . equals ( str .toString ())) {
143+ if (!str .toString (). isEmpty ( )) {
116144 try (FileWriter fw = new FileWriter (optionsFile )) {
117145 fw .write (str .toString ());
118146 } catch (IOException e ) {
0 commit comments