/
alexmakov
/
Minecraft_Java
Обзор
Документация
Войти
/
alexmakov
/
Minecraft_Java
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/main/java/com/mojang/minecraft/GameSettings.java
262 строки
6 KB
Oliver Yasuna
Recoded GameSettings class.
24 сен 2012, 06:40
24 сен 2012, 06:40
139a468
Код
Авторство
О чём код?
package com.mojang.minecraft; import com.mojang.minecraft.render.TextureManager; import java.awt.image.BufferedImage; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.Iterator; import javax.imageio.ImageIO; import org.lwjgl.input.Keyboard; public final class GameSettings { public GameSettings(Minecraft minecraft, File minecraftFolder) { bindings = new KeyBinding[] {forwardKey, leftKey, backKey, rightKey, jumpKey, buildKey, chatKey, toggleFogKey, saveLocationKey, loadLocationKey}; settingCount = 8; this.minecraft = minecraft; settingsFile = new File(minecraftFolder, "options.txt"); load(); } private static final String[] renderDistances = new String[]{"FAR", "NORMAL", "SHORT", "TINY"}; public boolean music = true; public boolean sound = true; public boolean invertMouse = false; public boolean showFrameRate = false; public int viewDistance = 0; public boolean viewBobbing = true; public boolean anaglyph = false; public boolean limitFramerate = false; public KeyBinding forwardKey = new KeyBinding("Forward", 17); public KeyBinding leftKey = new KeyBinding("Left", 30); public KeyBinding backKey = new KeyBinding("Back", 31); public KeyBinding rightKey = new KeyBinding("Right", 32); public KeyBinding jumpKey = new KeyBinding("Jump", 57); public KeyBinding buildKey = new KeyBinding("Build", 48); public KeyBinding chatKey = new KeyBinding("Chat", 20); public KeyBinding toggleFogKey = new KeyBinding("Toggle fog", 33); public KeyBinding saveLocationKey = new KeyBinding("Save location", 28); public KeyBinding loadLocationKey = new KeyBinding("Load location", 19); public KeyBinding[] bindings; private Minecraft minecraft; private File settingsFile; public int settingCount; public String getBinding(int key) { return bindings[key].name + ": " + Keyboard.getKeyName(bindings[key].key); } public void setBinding(int key, int keyID) { bindings[key].key = keyID; save(); } public void toggleSetting(int setting, int fogValue) { if(setting == 0) { music = !music; } if(setting == 1) { sound = !sound; } if(setting == 2) { invertMouse = !invertMouse; } if(setting == 3) { showFrameRate = !showFrameRate; } if(setting == 4) { viewDistance = viewDistance + fogValue & 3; } if(setting == 5) { viewBobbing = !viewBobbing; } if(setting == 6) { anaglyph = !anaglyph; TextureManager textureManager = minecraft.textureManager; Iterator iterator = this.minecraft.textureManager.textureImages.keySet().iterator(); int i; BufferedImage image; while(iterator.hasNext()) { i = (Integer)iterator.next(); image = (BufferedImage)textureManager.textureImages.get(Integer.valueOf(i)); textureManager.load(image, i); } iterator = textureManager.textures.keySet().iterator(); while(iterator.hasNext()) { String s = (String)iterator.next(); try { if(s.startsWith("##")) { image = TextureManager.load1(ImageIO.read(TextureManager.class.getResourceAsStream(s.substring(2)))); } else { image = ImageIO.read(TextureManager.class.getResourceAsStream(s)); } i = (Integer)textureManager.textures.get(s); textureManager.load(image, i); } catch (IOException var6) { var6.printStackTrace(); } } } if(setting == 7) { limitFramerate = !limitFramerate; } save(); } public String getSetting(int id) { return id == 0 ? "Music: " + (music ? "ON" : "OFF") : (id == 1 ? "Sound: " + (sound ? "ON" : "OFF") : (id == 2 ? "Invert mouse: " + (invertMouse ? "ON" : "OFF") : (id == 3 ? "Show FPS: " + (showFrameRate ? "ON" : "OFF") : (id == 4 ? "Render distance: " + renderDistances[viewDistance] : (id == 5 ? "View bobbing: " + (viewBobbing ? "ON" : "OFF") : (id == 6 ? "3d anaglyph: " + (anaglyph ? "ON" : "OFF") : (id == 7 ? "Limit framerate: " + (limitFramerate ? "ON" : "OFF") : ""))))))); } private void load() { try { if(settingsFile.exists()) { FileReader fileReader = new FileReader(settingsFile); BufferedReader reader = new BufferedReader(fileReader); String line = null; while((line = reader.readLine()) != null) { String[] setting = line.split(":"); if(setting[0].equals("music")) { music = setting[1].equals("true"); } if(setting[0].equals("sound")) { sound = setting[1].equals("true"); } if(setting[0].equals("invertYMouse")) { invertMouse = setting[1].equals("true"); } if(setting[0].equals("showFrameRate")) { showFrameRate = setting[1].equals("true"); } if(setting[0].equals("viewDistance")) { viewDistance = Integer.parseInt(setting[1]); } if(setting[0].equals("bobView")) { viewBobbing = setting[1].equals("true"); } if(setting[0].equals("anaglyph3d")) { anaglyph = setting[1].equals("true"); } if(setting[0].equals("limitFramerate")) { limitFramerate = setting[1].equals("true"); } for(int index = 0; index < this.bindings.length; index++) { if(setting[0].equals("key_" + bindings[index].name)) { bindings[index].key = Integer.parseInt(setting[1]); } } } reader.close(); } } catch (Exception e) { System.out.println("Failed to load options"); e.printStackTrace(); } } private void save() { try { FileWriter fileWriter = new FileWriter(this.settingsFile); PrintWriter writer = new PrintWriter(fileWriter); writer.println("music:" + music); writer.println("sound:" + sound); writer.println("invertYMouse:" + invertMouse); writer.println("showFrameRate:" + showFrameRate); writer.println("viewDistance:" + viewDistance); writer.println("bobView:" + viewBobbing); writer.println("anaglyph3d:" + anaglyph); writer.println("limitFramerate:" + limitFramerate); for(int binding = 0; binding < bindings.length; binding++) { writer.println("key_" + bindings[binding].name + ":" + bindings[binding].key); } writer.close(); } catch (Exception e) { System.out.println("Failed to save options"); e.printStackTrace(); } } }