Languages can now be defined in a file.

INI properties which are not editable will now be set.
Code improvements.
This commit is contained in:
Jeddunk 2019-11-06 01:21:43 +01:00
parent 0eedf452d7
commit 14408cd9a6
5 changed files with 40 additions and 75 deletions

16
languages.txt Normal file
View File

@ -0,0 +1,16 @@
# List of languages
# https://partner.steamgames.com/doc/store/localization#supported_languages
english
latam
brazilian
german
french
italian
portuguese
spanish
russian
schinese
tchinese
japanese
koreana

View File

@ -1,7 +1,6 @@
import com.ibasco.agql.protocols.valve.steam.webapi.pojos.SteamApp;
import com.jfoenix.controls.*;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
@ -99,7 +98,7 @@ public class Controller {
}
public void getAppId() {
final SteamApp game = cache.searchGame(game_name_textfield.getText());
final SteamApp game = cache.findGame(game_name_textfield.getText());
if (game == null) {
appId_textfield.setText("-1");
} else {

View File

@ -1,11 +1,9 @@
import org.apache.commons.configuration2.INIConfiguration;
import org.apache.commons.configuration2.SubnodeConfiguration;
import org.apache.commons.configuration2.*;
import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder;
import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.ex.ConfigurationException;
import java.io.File;
import java.io.IOException;
import java.io.*;
import java.text.MessageFormat;
import java.util.*;
@ -16,7 +14,6 @@ public class CreamApiConfig {
private INIConfiguration config;
private String path = "cream_api.ini";
//private Ini ini;
private Integer appId;
private String language;
private Boolean unlockAll;
@ -32,27 +29,14 @@ public class CreamApiConfig {
} catch (ConfigurationException e) {
e.printStackTrace();
}
/*try {
//ini = new Ini(new File("cream_api.ini"));
//Config iniConfig = Config.getGlobal().clone();
File langFile = new File("languages.txt");
try {
BufferedReader fIn = new BufferedReader(new FileReader(langFile));
fIn.lines().filter(line -> !line.isEmpty() && !line.startsWith("#")).forEach(line -> languages.add(line));
} catch (IOException e) {
System.err.println("Can't open \"cream_api.ini\"!");
e.printStackTrace();
}*/
// https://partner.steamgames.com/doc/store/localization#supported_languages
languages.add("english");
languages.add("latam");
languages.add("brazilian");
languages.add("german");
languages.add("french");
languages.add("italian");
languages.add("portuguese");
languages.add("spanish");
languages.add("russian");
languages.add("schinese");
languages.add("tchinese");
languages.add("japanese");
languages.add("koreana");
}
read();
}
@ -64,17 +48,6 @@ public class CreamApiConfig {
}
public void read() {
/*appId = ini.get("steam", "appid", int.class);
language = ini.get("steam", "language", String.class);
if (language == null) {
language = "english";
}
unlockAll = ini.get("steam", "unlockall", boolean.class);
extraProtection = ini.get("steam", "extraprotection", boolean.class);
forceOffline = ini.get("steam", "forceoffline", boolean.class);
Map<String, String> dlc_temp = ini.get("dlc");
for (Map.Entry<String, String> e: dlc_temp.entrySet())
dlc.put(Integer.parseInt(e.getKey()), e.getValue());*/
appId = config.getInt("steam.appid");
language = config.getString("steam.language");
if (language == null) {
@ -84,23 +57,10 @@ public class CreamApiConfig {
extraProtection = config.getBoolean("steam.extraprotection");
forceOffline = config.getBoolean("steam.forceoffline");
final SubnodeConfiguration dlc_section = config.getSection("dlc");
for (Iterator<String> it = dlc_section.getKeys(); it.hasNext(); ) {
String k = it.next();
final String v = dlc_section.getString(k);
dlc.put(Integer.parseInt(k), v);
}
dlc_section.getKeys().forEachRemaining(k -> dlc.put(Integer.parseInt(k), dlc_section.getString(k)));
}
public void sync() throws ConfigurationException {
/*ini.put("steam", "appid", appId);
ini.put("steam", "language", language);
ini.put("steam", "unlockall", unlockAll);
ini.put("steam", "extraprotection", extraProtection);
ini.put("steam", "forceoffline", forceOffline);
for (Map.Entry<Integer, String> e: dlc.entrySet()) {
ini.put("dlc", e.getKey().toString(), e.getValue());
}
ini.store();*/
FileBasedConfigurationBuilder<INIConfiguration> builder = CONFIGS.iniBuilder(path);
config = builder.getConfiguration();
config.setCommentLeadingCharsUsedInInput(";");
@ -112,9 +72,13 @@ public class CreamApiConfig {
config.setProperty("steam.forceoffline", forceOffline);
final SubnodeConfiguration dlc_section = config.getSection("dlc");
dlc_section.clear();
for (Map.Entry<Integer, String> e : this.dlc.entrySet()) {
config.setProperty("dlc." + e.getKey().toString(), e.getValue());
}
this.dlc.forEach((key, value) -> config.setProperty("dlc." + key.toString(), value));
// default settings
config.setProperty("steam.orgapi", "steam_api_o.dll");
config.setProperty("steam.orgapi64", "steam_api64_o.dll");
config.setProperty("steam.lowviolence", false);
config.setProperty("steam_misc.disableuserinterface", false);
builder.save();
}
@ -123,23 +87,17 @@ public class CreamApiConfig {
public String getDlcListAsString() {
StringBuilder sb = new StringBuilder();
for (Map.Entry<Integer, String> e: dlc.entrySet()) {
sb.append(e.getKey());
sb.append("=");
sb.append(e.getValue());
sb.append("\r\n");
}
dlc.forEach((key, value) -> sb.append(key).append("=").append(value).append("\r\n"));
return sb.toString();
}
public void setDlcListFromString(String str) {
dlc.clear();
final String[] lines = str.split("\\R+");
for (String line : lines) {
Arrays.stream(str.split("\\R+")).forEach(line -> {
final String[] split = line.split("\\s*=\\s*", 2);
if (split.length == 2) dlc.put(Integer.parseInt(split[0]), split[1]);
else System.err.println(MessageFormat.format("Error while splitting line: \"{0}\"", line));
}
});
}
// GETTERS AND SETTERS

View File

@ -16,7 +16,6 @@ public class Main extends Application {
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}

View File

@ -11,6 +11,7 @@ import java.time.Duration;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@SuppressWarnings("WeakerAccess")
public class SteamAppsListCache {
@ -25,7 +26,7 @@ public class SteamAppsListCache {
public SteamAppsListCache() {
getListFromFile();
if (Instant.now().isAfter(list.timestamp.plus(Duration.ofDays(14)))) {
if (Instant.now().isAfter(list.timestamp.plus(Duration.ofDays(3)))) {
getListFromApi();
saveListToFile();
}
@ -49,7 +50,7 @@ public class SteamAppsListCache {
return null;
}
public SteamApp searchGame(String name) {
public SteamApp findGame(String name) {
for (SteamApp app : list.steamAppsList) {
if (app.getName().toLowerCase().contains(name.toLowerCase())) {
return app;
@ -91,15 +92,7 @@ public class SteamAppsListCache {
private void getListFromFile() {
try {
BufferedReader fIn = new BufferedReader(new FileReader(cacheFile));
StringBuilder content = new StringBuilder();
String line;
while ((line = fIn.readLine()) != null) {
content.append(line);
//content.append(System.lineSeparator());
}
String json = content.toString();
String json = fIn.lines().collect(Collectors.joining());
final Type type = new TypeToken<SteamAppsList>() {}.getType();
Gson gson = new Gson();
list = gson.fromJson(json, type);