|
22 | 22 | import com.mio.data.Renderer; |
23 | 23 | import com.mio.manager.RendererManager; |
24 | 24 | import com.tungsten.fcl.R; |
| 25 | +import com.tungsten.fcl.setting.GameOption; |
25 | 26 | import com.tungsten.fcl.util.RuntimeUtils; |
26 | 27 | import com.tungsten.fclauncher.bridge.FCLBridge; |
27 | 28 | import com.tungsten.fclauncher.utils.FCLPath; |
@@ -70,83 +71,38 @@ private void generateOptionsTxt() { |
70 | 71 | } catch (IOException e) { |
71 | 72 | Logging.LOG.log(Level.WARNING, "Unable to disable forge animation", e); |
72 | 73 | } |
73 | | - |
74 | | - if (optionsFile.exists()) { |
75 | | - fixOptions(optionsFile); |
76 | | - return; |
77 | | - } |
78 | | - try { |
79 | | - RuntimeUtils.copyAssets(context, "options.txt", optionsFile.getAbsolutePath()); |
80 | | - } catch (IOException e) { |
81 | | - Logging.LOG.log(Level.WARNING, "Unable to generate options.txt", e); |
82 | | - } |
83 | | - |
84 | | - modifyOptions(optionsFile); |
85 | | - } |
86 | | - |
87 | | - private void modifyOptions(File optionsFile) { |
88 | | - StringBuilder str = new StringBuilder(); |
89 | | - String lang; |
90 | | - boolean isChinese = LocaleUtils.isChinese(context); |
91 | | - GameVersionNumber gameVersion = GameVersionNumber.asGameVersion(repository.getGameVersion(version).orElse("0.0")); |
92 | | - if (gameVersion.compareTo("1.1") < 0) { |
93 | | - lang = null; |
94 | | - } else if (gameVersion.compareTo("1.11") < 0) { |
95 | | - lang = isChinese ? "zh_CN" : "en_US"; |
96 | | - } else { |
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()); |
| 74 | + GameOption gameOption = null; |
| 75 | + if (!optionsFile.exists()) { |
| 76 | + try { |
| 77 | + RuntimeUtils.copyAssets(context, "options.txt", optionsFile.getAbsolutePath()); |
| 78 | + gameOption = new GameOption(optionsFile.getParent()); |
| 79 | + gameOption.set("lang", LocaleUtils.isChinese(context) ? "zh_cn" : "en_us"); |
114 | 80 | } catch (IOException e) { |
115 | | - Logging.LOG.log(Level.WARNING, "Unable to write options.txt.", e); |
| 81 | + Logging.LOG.log(Level.WARNING, "Unable to generate options.txt", e); |
116 | 82 | } |
117 | 83 | } |
| 84 | + if (gameOption == null) |
| 85 | + gameOption = new GameOption(optionsFile.getParent()); |
| 86 | + fixLang(gameOption); |
| 87 | + fixOptions(gameOption); |
| 88 | + gameOption.save(); |
118 | 89 | } |
119 | 90 |
|
120 | | - private void fixOptions(File optionsFile) { |
121 | | - StringBuilder str = new StringBuilder(); |
| 91 | + private void fixOptions(GameOption gameOption) { |
| 92 | + gameOption.set("touchscreen", "false"); |
| 93 | + } |
| 94 | + |
| 95 | + private void fixLang(GameOption gameOption) { |
122 | 96 | GameVersionNumber gameVersion = GameVersionNumber.asGameVersion(repository.getGameVersion(version).orElse("0.0")); |
123 | 97 | if (gameVersion.compareTo("1.1") < 0) { |
124 | 98 | return; |
125 | 99 | } |
126 | 100 | boolean toUpper = gameVersion.compareTo("1.11") < 0; |
127 | | - try (BufferedReader bfr = new BufferedReader(new FileReader(optionsFile))) { |
128 | | - String line; |
129 | | - while ((line = bfr.readLine()) != 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()); |
135 | | - str.append("lang:").append(lang).append("\n"); |
136 | | - } else { |
137 | | - str.append(line).append("\n"); |
138 | | - } |
139 | | - } |
140 | | - } catch (Exception e) { |
141 | | - Logging.LOG.log(Level.WARNING, "Unable to read options.txt.", e); |
142 | | - } |
143 | | - if (!str.toString().isEmpty()) { |
144 | | - try (FileWriter fw = new FileWriter(optionsFile)) { |
145 | | - fw.write(str.toString()); |
146 | | - } catch (IOException e) { |
147 | | - Logging.LOG.log(Level.WARNING, "Unable to write options.txt.", e); |
148 | | - } |
149 | | - } |
| 101 | + String lang; |
| 102 | + lang = gameOption.get("lang"); |
| 103 | + String[] parts = lang.split("_", 2); |
| 104 | + lang = parts[0] + "_" + (toUpper ? parts[1].toUpperCase() : parts[1].toLowerCase()); |
| 105 | + gameOption.set("lang", lang); |
150 | 106 | } |
151 | 107 |
|
152 | 108 | private void modifyIfConfigDetected(String config, String option, String replacement, boolean overwrite, Renderer... renderers) { |
|
0 commit comments