Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.35 KB | None | 0 0
  1. package rtr.font.localization;
  2.  
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;
  7. import java.nio.charset.Charset;
  8. import java.util.Map;
  9. import java.util.Properties;
  10.  
  11. import org.newdawn.slick.Image;
  12. import org.newdawn.slick.SlickException;
  13. import org.yaml.snakeyaml.Yaml;
  14.  
  15. import rtr.ImageLoader;
  16. import rtr.font.FontModule.FontType;
  17. import rtr.utilities.YAMLFlattener;
  18. import rtr.utilities.Utilities;
  19.  
  20. public class LocalizationTemplate {
  21.  
  22. private File languageFolderPath;
  23. private String languageFolderName;
  24. private String languageName, languageAuthor, fontNameBody, fontNameHeader, languageLink;
  25. private int[] glyphRangeStart = new int[10];
  26. private int[] glyphRangeStop = new int[10];
  27.  
  28. private int fontHeaderSizeOffset, fontBodySizeOffset, fontHeaderXOffset, fontHeaderYOffset, fontBodyXOffset, fontBodyYOffset;
  29.  
  30. private double percentCompleted;
  31. private String languageIconRef;
  32. private Image icon;
  33.  
  34. public LocalizationTemplate(String absolutePath, boolean workshop) {
  35. //absolutePath = absolutePath.replace("\\","/");
  36. absolutePath = absolutePath.replace("\\", File.separator);
  37. languageFolderPath = new File(absolutePath);
  38. int lastIndexOf = absolutePath.lastIndexOf('\\');
  39.  
  40. System.out.println(absolutePath);
  41. if (lastIndexOf != -1)
  42. languageFolderName = absolutePath.substring(lastIndexOf).replace("\\", "");
  43. else
  44. languageFolderName = absolutePath;
  45. System.out.println(absolutePath);
  46.  
  47. Properties languageConfig = new Properties();
  48.  
  49. FileInputStream in;
  50. try {
  51. in = new FileInputStream(languageFolderPath+"/configuration.properties");
  52. languageConfig.load(in);
  53. in.close();
  54. } catch (IOException e) {
  55. e.printStackTrace();
  56. }
  57.  
  58. languageName = languageConfig.getProperty("languageName");
  59. languageAuthor = languageConfig.getProperty("languageAuthor");
  60.  
  61. fontNameHeader = languageConfig.getProperty("fontNameHeader");
  62. fontNameBody = languageConfig.getProperty("fontNameBody");
  63.  
  64. for (int x = 0; x < glyphRangeStart.length; x++) {
  65. if (!languageConfig.getProperty("glyphRangeStart"+x, "0").equals("0")) {
  66. glyphRangeStart[x] = Integer.parseInt(languageConfig.getProperty("glyphRangeStart"+x), 16);
  67. glyphRangeStop[x] = Integer.parseInt(languageConfig.getProperty("glyphRangeStop"+x), 16);
  68. }
  69. }
  70.  
  71. fontBodySizeOffset = Integer.parseInt(languageConfig.getProperty("fontBodySizeOffset", "0"));
  72. fontHeaderSizeOffset = Integer.parseInt(languageConfig.getProperty("fontHeaderSizeOffset", "0"));
  73.  
  74. fontBodyXOffset = Integer.parseInt(languageConfig.getProperty("fontBodyXOffset", "0"));
  75. fontBodyYOffset = Integer.parseInt(languageConfig.getProperty("fontBodyYOffset", "0"));
  76.  
  77. fontHeaderXOffset = Integer.parseInt(languageConfig.getProperty("fontHeaderXOffset", "0"));
  78. fontHeaderYOffset = Integer.parseInt(languageConfig.getProperty("fontHeaderYOffset", "0"));
  79.  
  80. languageIconRef = languageConfig.getProperty("languageIcon", "noFlag");
  81.  
  82. if (workshop) {
  83. languageLink = "https://steamcommunity.com/sharedfiles/filedetails/?id="+languageFolderName;
  84. }else {
  85. languageLink = languageConfig.getProperty("languageLink");
  86. }
  87. calculatePercentage();
  88. }
  89.  
  90. private void calculatePercentage() {
  91. if (languageFolderPath.toString().contains("defaultEnglish")) {
  92. percentCompleted = 100.0;
  93. }else {
  94.  
  95. Charset UTF_8 = Charset.forName("UTF-8");
  96. Map<String, Object> defaultEnglishMap = null;
  97. try {
  98. File fileDir = new File("localization/defaultEnglish/text.yml");
  99.  
  100. InputStreamReader in = new InputStreamReader(new FileInputStream(fileDir), UTF_8);
  101. defaultEnglishMap = new Yaml().loadAs(in, Map.class);
  102. defaultEnglishMap = YAMLFlattener.flattenYamlTree(defaultEnglishMap);
  103. in.close();
  104. } catch (IOException e) {
  105. e.printStackTrace();
  106. }
  107.  
  108. Map<String, Object> thisMap = null;
  109. try {
  110. File fileDir = new File(languageFolderPath+"/text.yml");
  111.  
  112. InputStreamReader in = new InputStreamReader(new FileInputStream(fileDir), UTF_8);
  113. thisMap = new Yaml().loadAs(in, Map.class);
  114. thisMap = YAMLFlattener.flattenYamlTree(thisMap);
  115. in.close();
  116. } catch (IOException e) {
  117. e.printStackTrace();
  118. }
  119.  
  120. int totalDefaultEnglishKeys = 0;
  121. int totalNewKeys = 0;
  122. for (Object rawKey : defaultEnglishMap.keySet()) {
  123. if (rawKey.toString().contains(".text")) {
  124. totalDefaultEnglishKeys++;
  125. }
  126. }
  127.  
  128. k:
  129. for (String thisKey : thisMap.keySet()) {
  130. if (thisKey.endsWith(".text")) {
  131. String forceCheck = thisKey.replace(".text", ".forceCount");
  132. if (thisMap.containsKey(forceCheck)) {
  133. totalNewKeys++;
  134. continue k;
  135. }
  136.  
  137. for (String defaultKey : defaultEnglishMap.keySet()) {
  138. if (thisKey.equals(defaultKey)) {
  139. if (!thisMap.get(thisKey).equals("")
  140. && !thisMap.get(thisKey).equals(" ")
  141. && !thisMap.get(thisKey).toString().equals(defaultEnglishMap.get(defaultKey).toString())) {
  142. totalNewKeys++;
  143. continue k;
  144. }
  145. }
  146. }
  147.  
  148. //System.out.println(thisKey+" "+thisMap.get(thisKey));
  149. }
  150. }
  151.  
  152. if (totalNewKeys == totalDefaultEnglishKeys) {
  153. percentCompleted = 100.0;
  154. } else {
  155. percentCompleted = ((totalNewKeys*1.0)/(totalDefaultEnglishKeys*1.0)) * 100.0;
  156. percentCompleted = Double.parseDouble((Double.toString(percentCompleted)).substring(0, 4));
  157. }
  158. }
  159. }
  160.  
  161. public File getLanguageFolderPath() {return languageFolderPath;}
  162. public String getLanguageName() {return languageName;}
  163. public String getLanguageAuthor() {return languageAuthor;}
  164. public String getFontName(FontType type) {
  165. if (type == FontType.BODY)
  166. return fontNameBody;
  167. else
  168. return fontNameHeader;
  169. }
  170. public int[] getGlyphRangeStart() {return glyphRangeStart;}
  171. public int[] getGlyphRangeStop() {return glyphRangeStop;}
  172. public int getFontSizeOffset(FontType type) {
  173. if (type == FontType.BODY)
  174. return fontBodySizeOffset;
  175. else
  176. return fontHeaderSizeOffset;
  177. }
  178. public int getFontXOffset(FontType type) {
  179. if (type == FontType.BODY)
  180. return fontBodyXOffset;
  181. else
  182. return fontHeaderXOffset;
  183. }
  184. public int getFontYOffset(FontType type) {
  185. if (type == FontType.BODY)
  186. return fontBodyYOffset;
  187. else
  188. return fontHeaderYOffset;
  189. }
  190.  
  191.  
  192. public double getPercentCompleted() {return percentCompleted;}
  193.  
  194. public Image getIcon() {
  195. //This must be done here, because you need an OGL context available before you can load images, and these templates are loaded before the game is actually launched.
  196. if (icon == null) {
  197. try {
  198. File localFolderIcon = new File(languageFolderPath+"\\"+languageIconRef+".png");
  199. File flagFolderIcon = new File("localization/flags/"+languageIconRef+".png");
  200. if (localFolderIcon.exists())
  201. icon = ImageLoader.getImage(localFolderIcon.toString());
  202. else if (flagFolderIcon.exists())
  203. icon = ImageLoader.getImage(flagFolderIcon.toString());
  204. else
  205. icon = ImageLoader.getImage("localization/flags/noFlag.png");
  206. } catch (SlickException e) {
  207. // TODO Auto-generated catch block
  208. e.printStackTrace();
  209. }
  210. }
  211. return icon;
  212. }
  213.  
  214. public File getTextFilePath() {return new File(languageFolderPath+"\\text.yml");}
  215. public String getLanguageFolderName() {return languageFolderName;}
  216. public String getLanguageLink() {return languageLink;}
  217. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement