// // MPrefs.java // Thud // // Created by Anthony Parker on Sat Dec 22 2001. // Copyright (c) 2001 Anthony Parker. All rights reserved. // Please see LICENSE.TXT for more information. // // package btthud.data; import java.io.*; import java.lang.*; import java.awt.geom.*; import java.awt.*; import java.util.*; import java.util.prefs.*; import btthud.ui.*; public class MPrefs extends Object implements Serializable, Cloneable { public Point desktopLoc; public Dimension desktopSize, mapFrameSize; public Point toolsLoc, terrainToolsLoc, elevationToolsLoc, brushToolsLoc, mapFrameLoc, inspectorLoc; public boolean showTools, showTerrain, showElevation, showBrush, showInspector; // For the tactical map display public boolean antiAliasText; public boolean tacShowHexNumbers, tacShowTerrainChar, tacShowTerrainElev, tacDarkenElev; public float elevationColorMultiplier; public boolean tacShowCliffs; public int cliffDiff; public Properties theSystem; public Color terrainColors[] = new Color[MUXHex.TOTAL_TERRAIN]; public int mainFontSize, smallFontSize, hexNumberFontSize, infoFontSize, elevationFontSize; public int paintType; // ---------------------------- public MPrefs() { } /** * Read the preferences from the backing store. */ public void readPrefs() { Preferences p = Preferences.userNodeForPackage(MPrefs.class).node("Thump"); try { p.sync(); } catch (Exception e) { System.out.println("Error: readPrefs: " + e); } antiAliasText = p.getBoolean("antiAliasText", true); mapFrameSize = readPrefDimension(p, "mapFrameSize", (int) (800f * (3f / 4f)), (int) (600f * (3f / 4f))); desktopLoc = readPrefPoint(p, "desktopLoc", 10, 10); desktopSize = readPrefDimension(p, "desktopSize", 790, 590); toolsLoc = readPrefPoint(p, "toolsLoc", 8, 10); terrainToolsLoc = readPrefPoint(p, "terrainToolsLoc", 8, 87); elevationToolsLoc = readPrefPoint(p, "elevationToolsLoc", 89, 10); brushToolsLoc = readPrefPoint(p, "brushToolsLoc", 360, 10); inspectorLoc = readPrefPoint(p, "inspectorLoc", 640, 10); mapFrameLoc = readPrefPoint(p, "mapFrameLoc", 89, 87); showTools = p.getBoolean("showTools", true); showTerrain = p.getBoolean("showTerrain", true); showElevation = p.getBoolean("showElevation", true); showBrush = p.getBoolean("showBrush", true); showInspector = p.getBoolean("showInspector", true); elevationColorMultiplier = p.getFloat("elevationColorMultiplier", 0.08f); tacShowHexNumbers = p.getBoolean("tacShowHexNumbers", false); tacShowTerrainChar = p.getBoolean("tacShowTerrainChar", true); tacShowTerrainElev = p.getBoolean("tacShowTerrainElev", true); tacDarkenElev = p.getBoolean("tacDarkenElev", true); tacShowCliffs = p.getBoolean("tacShowCliffs", false); cliffDiff = p.getInt("cliffDiff", 2); terrainColors[MUXHex.PLAIN] = readPrefColor(p, "Color-Plain", Color.white); terrainColors[MUXHex.WATER] = readPrefColor(p, "Color-Water", Color.blue); terrainColors[MUXHex.LIGHT_FOREST] = readPrefColor(p, "Color-Light_Forest", Color.green); terrainColors[MUXHex.HEAVY_FOREST] = readPrefColor(p, "Color-Heavy_Forest", Color.green); terrainColors[MUXHex.MOUNTAIN] = readPrefColor(p, "Color-Mountain", Color.yellow); terrainColors[MUXHex.ROUGH] = readPrefColor(p, "Color-Rough", Color.yellow); terrainColors[MUXHex.BUILDING] = readPrefColor(p, "Color-Building", Color.magenta); terrainColors[MUXHex.ROAD] = readPrefColor(p, "Color-Road", Color.lightGray); terrainColors[MUXHex.BRIDGE] = readPrefColor(p, "Color-Bridge", Color.lightGray); terrainColors[MUXHex.FIRE] = readPrefColor(p, "Color-Fire", Color.red); terrainColors[MUXHex.DESERT] = readPrefColor(p, "Color-Desert", Color.pink); terrainColors[MUXHex.WALL] = readPrefColor(p, "Color-Wall", Color.orange); terrainColors[MUXHex.ICE] = readPrefColor(p, "Color-Ice", Color.white); terrainColors[MUXHex.SMOKE] = readPrefColor(p, "Color-Smoke", Color.lightGray); terrainColors[MUXHex.SMOKE_OVER_WATER] = readPrefColor(p, "Color-Smoke_Over_Water", Color.lightGray); terrainColors[MUXHex.UNKNOWN] = readPrefColor(p, "Color-Unknown", Color.black); mainFontSize = p.getInt("mainFontSize", 10); smallFontSize = p.getInt("smallFontSize", 9); hexNumberFontSize = p.getInt("hexNumberFontSize", 9); infoFontSize = p.getInt("infoFontSize", 10); elevationFontSize = p.getInt("elevationFontSize", 10); paintType = p.getInt("paintType", ToolManager.TERRAIN_AND_ELEVATION); } protected Dimension readPrefDimension(Preferences pref, String key, int defW, int defH) { return new Dimension(pref.getInt(key + "W", defW), pref.getInt(key + "H", defH)); } protected Point readPrefPoint(Preferences pref, String key, int defX, int defY) { return new Point(pref.getInt(key + "X", defX), pref.getInt(key + "Y", defY)); } protected Color readPrefColor(Preferences pref, String key, Color defColor) { return new Color(pref.getInt(key + "R", defColor.getRed()), pref.getInt(key + "G", defColor.getGreen()), pref.getInt(key + "B", defColor.getBlue())); } protected void writePrefDimension(Preferences pref, String key, Dimension d) { pref.putInt(key + "W", (int)d.getWidth()); pref.putInt(key + "H", (int)d.getHeight()); } protected void writePrefPoint(Preferences pref, String key, Point pt) { pref.putInt(key + "X", (int)pt.getX()); pref.putInt(key + "Y", (int)pt.getY()); } protected void writePrefColor(Preferences pref, String key, Color c) { pref.putInt(key + "R", c.getRed()); pref.putInt(key + "G", c.getGreen()); pref.putInt(key + "B", c.getBlue()); } /** * Write the preferences to the backing store. */ public void writePrefs() { Preferences p = Preferences.userNodeForPackage(MPrefs.class).node("Thump"); p.putBoolean("antiAliasText", antiAliasText); writePrefDimension(p, "mapFrameSize", mapFrameSize); writePrefPoint(p, "desktopLoc", desktopLoc); writePrefDimension(p, "desktopSize", desktopSize); writePrefPoint(p, "toolsLoc", toolsLoc); writePrefPoint(p, "terrainToolsLoc", terrainToolsLoc); writePrefPoint(p, "elevationToolsLoc", elevationToolsLoc); writePrefPoint(p, "brushToolsLoc", brushToolsLoc); writePrefPoint(p, "inspectorLoc", inspectorLoc); writePrefPoint(p, "mapFrameLoc", mapFrameLoc); p.putBoolean("showTools", showTools); p.putBoolean("showTerrain", showTerrain); p.putBoolean("showElevation", showElevation); p.putBoolean("showBrush", showBrush); p.putBoolean("showInspector", showInspector); p.putFloat("elevationColorMultiplier", elevationColorMultiplier); p.putBoolean("tacShowHexNumbers", tacShowHexNumbers); p.putBoolean("tacShowTerrainChar", tacShowTerrainChar); p.putBoolean("tacShowTerrainElev", tacShowTerrainElev); p.putBoolean("tacDarkenElev", tacDarkenElev); p.putBoolean("tacShowCliffs", tacShowCliffs); p.putInt("cliffDiff", cliffDiff); writePrefColor(p, "Color-Plain", terrainColors[MUXHex.PLAIN]); writePrefColor(p, "Color-Water", terrainColors[MUXHex.WATER]); writePrefColor(p, "Color-Light_Forest", terrainColors[MUXHex.LIGHT_FOREST]); writePrefColor(p, "Color-Heavy_Forest", terrainColors[MUXHex.HEAVY_FOREST]); writePrefColor(p, "Color-Mountain", terrainColors[MUXHex.MOUNTAIN]); writePrefColor(p, "Color-Rough", terrainColors[MUXHex.ROUGH]); writePrefColor(p, "Color-Building", terrainColors[MUXHex.BUILDING]); writePrefColor(p, "Color-Road", terrainColors[MUXHex.ROAD]); writePrefColor(p, "Color-Bridge", terrainColors[MUXHex.BRIDGE]); writePrefColor(p, "Color-Fire", terrainColors[MUXHex.FIRE]); writePrefColor(p, "Color-Desert", terrainColors[MUXHex.DESERT]); writePrefColor(p, "Color-Wall", terrainColors[MUXHex.WALL]); writePrefColor(p, "Color-Ice", terrainColors[MUXHex.ICE]); writePrefColor(p, "Color-Smoke", terrainColors[MUXHex.SMOKE]); writePrefColor(p, "Color-Smoke_Over_Water", terrainColors[MUXHex.SMOKE_OVER_WATER]); writePrefColor(p, "Color-Unknown", terrainColors[MUXHex.UNKNOWN]); p.putInt("mainFontSize", mainFontSize); p.putInt("smallFontSize", smallFontSize); p.putInt("hexNumberFontSize", hexNumberFontSize); p.putInt("infoFontSize", infoFontSize); p.putInt("elevationFontSize", elevationFontSize); p.putInt("paintType", paintType); try { p.flush(); } catch (Exception e) { System.out.println("Error: writePrefs: " + e); } } }