| 1 | package net.encode.wurmesp.util; |
| 2 | |
| 3 | import com.wurmonline.mesh.Tiles; |
| 4 | import java.awt.Color; |
| 5 | import java.io.IOException; |
| 6 | import java.io.InputStream; |
| 7 | import java.nio.file.Files; |
| 8 | import java.nio.file.OpenOption; |
| 9 | import java.nio.file.Path; |
| 10 | import java.nio.file.Paths; |
| 11 | import java.util.Properties; |
| 12 | import net.encode.wurmesp.Unit; |
| 13 | import net.encode.wurmesp.WurmEspMod; |
| 14 | |
| 15 | public class ConfigUtils { |
| 16 | /* |
| 17 | * WARNING - Removed try catching itself - possible behaviour change. |
| 18 | */ |
| 19 | public static void loadProperties(String name) { |
| 20 | WurmEspMod.modProperties.clear(); |
| 21 | InputStream inputStream = null; |
| 22 | Path path = Paths.get("mods", new String[0]); |
| 23 | path = path.resolve(name + ".properties"); |
| 24 | try { |
| 25 | inputStream = Files.newInputStream(path, new OpenOption[0]); |
| 26 | WurmEspMod.modProperties.load(inputStream); |
| 27 | } |
| 28 | catch (IOException e) { |
| 29 | e.printStackTrace(); |
| 30 | } |
| 31 | finally { |
| 32 | if (inputStream != null) { |
| 33 | try { |
| 34 | inputStream.close(); |
| 35 | } |
| 36 | catch (IOException e) { |
| 37 | e.printStackTrace(); |
| 38 | } |
| 39 | } |
| 40 | } |
| 41 | } |
| 42 | |
| 43 | public static void DoConfig(Properties properties) { |
| 44 | WurmEspMod.players = Boolean.valueOf(properties.getProperty("players", Boolean.toString(WurmEspMod.players))); |
| 45 | WurmEspMod.mobs = Boolean.valueOf(properties.getProperty("mobs", Boolean.toString(WurmEspMod.mobs))); |
| 46 | WurmEspMod.animals = Boolean.valueOf(properties.getProperty("animals", Boolean.toString(WurmEspMod.animals))); |
| 47 | WurmEspMod.specials = Boolean.valueOf(properties.getProperty("specials", Boolean.toString(WurmEspMod.specials))); |
| 48 | WurmEspMod.items = Boolean.valueOf(properties.getProperty("items", Boolean.toString(WurmEspMod.items))); |
| 49 | WurmEspMod.uniques = Boolean.valueOf(properties.getProperty("uniques", Boolean.toString(WurmEspMod.uniques))); |
| 50 | WurmEspMod.conditioned = Boolean.valueOf(properties.getProperty("conditioned", Boolean.toString(WurmEspMod.conditioned))); |
| 51 | WurmEspMod.tilescloseby = Boolean.valueOf(properties.getProperty("tilescloseby", Boolean.toString(WurmEspMod.tilescloseby))); |
| 52 | WurmEspMod.deedsize = Boolean.valueOf(properties.getProperty("deedsize", Boolean.toString(WurmEspMod.deedsize))); |
| 53 | WurmEspMod.xray = Boolean.valueOf(properties.getProperty("xray", Boolean.toString(WurmEspMod.xray))); |
| 54 | WurmEspMod.xraythread = Boolean.valueOf(properties.getProperty("xraythread", Boolean.toString(WurmEspMod.xraythread))); |
| 55 | WurmEspMod.xrayrefreshthread = Boolean.valueOf(properties.getProperty("xrayrefreshthread", Boolean.toString(WurmEspMod.xrayrefreshthread))); |
| 56 | WurmEspMod.xraydiameter = Integer.parseInt(properties.getProperty("xraydiameter", Integer.toString(WurmEspMod.xraydiameter))); |
| 57 | WurmEspMod.xrayrefreshrate = Integer.parseInt(properties.getProperty("xrayrefreshrate", Integer.toString(WurmEspMod.xrayrefreshrate))); |
| 58 | WurmEspMod.tilenotrideable = Integer.parseInt(properties.getProperty("tilenotrideable", Integer.toString(WurmEspMod.tilenotrideable))); |
| 59 | WurmEspMod.flowerdiameter = Integer.parseInt(properties.getProperty("flowerdiameter", Integer.toString(WurmEspMod.flowerdiameter))); |
| 60 | WurmEspMod.playsoundspecial = Boolean.valueOf(properties.getProperty("playsoundspecial", Boolean.toString(WurmEspMod.playsoundspecial))); |
| 61 | WurmEspMod.playsounditem = Boolean.valueOf(properties.getProperty("playsounditem", Boolean.toString(WurmEspMod.playsounditem))); |
| 62 | WurmEspMod.playsoundunique = Boolean.valueOf(properties.getProperty("playsoundunique", Boolean.toString(WurmEspMod.playsoundunique))); |
| 63 | WurmEspMod.soundspecial = properties.getProperty("soundspecial", WurmEspMod.soundspecial); |
| 64 | WurmEspMod.sounditem = properties.getProperty("sounditem", WurmEspMod.sounditem); |
| 65 | WurmEspMod.soundunique = properties.getProperty("soundunique", WurmEspMod.soundunique); |
| 66 | WurmEspMod.conditionedcolorsallways = Boolean.valueOf(properties.getProperty("conditionedcolorsallways", Boolean.toString(WurmEspMod.conditionedcolorsallways))); |
| 67 | WurmEspMod.championmcoloralways = Boolean.valueOf(properties.getProperty("championmcoloralways", Boolean.toString(WurmEspMod.championmcoloralways))); |
| 68 | Unit.colorPlayers = ConfigUtils.colorStringToFloatA(properties.getProperty("colorPlayers", ConfigUtils.colorFloatAToString(Unit.colorPlayers))); |
| 69 | Unit.colorPlayersEnemy = ConfigUtils.colorStringToFloatA(properties.getProperty("colorPlayersEnemy", ConfigUtils.colorFloatAToString(Unit.colorPlayersEnemy))); |
| 70 | Unit.colorMobs = ConfigUtils.colorStringToFloatA(properties.getProperty("colorMobs", ConfigUtils.colorFloatAToString(Unit.colorMobs))); |
| 71 | Unit.colorMobsAggro = ConfigUtils.colorStringToFloatA(properties.getProperty("colorMobsAggro", ConfigUtils.colorFloatAToString(Unit.colorMobsAggro))); |
| 72 | Unit.colorSpecials = ConfigUtils.colorStringToFloatA(properties.getProperty("colorSpecials", ConfigUtils.colorFloatAToString(Unit.colorSpecials))); |
| 73 | Unit.colorSpotted = ConfigUtils.colorStringToFloatA(properties.getProperty("colorSpotted", ConfigUtils.colorFloatAToString(Unit.colorSpotted))); |
| 74 | Unit.colorUniques = ConfigUtils.colorStringToFloatA(properties.getProperty("colorUniques", ConfigUtils.colorFloatAToString(Unit.colorUniques))); |
| 75 | Unit.colorAlert = ConfigUtils.colorStringToFloatA(properties.getProperty("colorAlert", ConfigUtils.colorFloatAToString(Unit.colorAlert))); |
| 76 | Unit.colorAngry = ConfigUtils.colorStringToFloatA(properties.getProperty("colorAngry", ConfigUtils.colorFloatAToString(Unit.colorAngry))); |
| 77 | Unit.colorChampion = ConfigUtils.colorStringToFloatA(properties.getProperty("colorChampion", ConfigUtils.colorFloatAToString(Unit.colorChampion))); |
| 78 | Unit.colorDiseased = ConfigUtils.colorStringToFloatA(properties.getProperty("colorDiseased", ConfigUtils.colorFloatAToString(Unit.colorDiseased))); |
| 79 | Unit.colorFierce = ConfigUtils.colorStringToFloatA(properties.getProperty("colorFierce", ConfigUtils.colorFloatAToString(Unit.colorFierce))); |
| 80 | Unit.colorGreenish = ConfigUtils.colorStringToFloatA(properties.getProperty("colorGreenish", ConfigUtils.colorFloatAToString(Unit.colorGreenish))); |
| 81 | Unit.colorHardened = ConfigUtils.colorStringToFloatA(properties.getProperty("colorHardened", ConfigUtils.colorFloatAToString(Unit.colorHardened))); |
| 82 | Unit.colorLurking = ConfigUtils.colorStringToFloatA(properties.getProperty("colorLurking", ConfigUtils.colorFloatAToString(Unit.colorLurking))); |
| 83 | Unit.colorRaging = ConfigUtils.colorStringToFloatA(properties.getProperty("colorRaging", ConfigUtils.colorFloatAToString(Unit.colorRaging))); |
| 84 | Unit.colorScared = ConfigUtils.colorStringToFloatA(properties.getProperty("colorScared", ConfigUtils.colorFloatAToString(Unit.colorScared))); |
| 85 | Unit.colorSlow = ConfigUtils.colorStringToFloatA(properties.getProperty("colorSlow", ConfigUtils.colorFloatAToString(Unit.colorSlow))); |
| 86 | Unit.colorSly = ConfigUtils.colorStringToFloatA(properties.getProperty("colorSly", ConfigUtils.colorFloatAToString(Unit.colorSly))); |
| 87 | String oreColorOreIron = properties.getProperty("oreColorOreIron", "default"); |
| 88 | if (!oreColorOreIron.equals("default")) { |
| 89 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_IRON, ConfigUtils.colorStringToFloatA(oreColorOreIron)); |
| 90 | } else { |
| 91 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_IRON, Color.RED.darker()); |
| 92 | } |
| 93 | String oreColorOreCopper = properties.getProperty("oreColorOreCopper", "default"); |
| 94 | if (!oreColorOreCopper.equals("default")) { |
| 95 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_COPPER, ConfigUtils.colorStringToFloatA(oreColorOreCopper)); |
| 96 | } else { |
| 97 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_COPPER, Color.GREEN); |
| 98 | } |
| 99 | String oreColorOreTin = properties.getProperty("oreColorOreTin", "default"); |
| 100 | if (!oreColorOreTin.equals("default")) { |
| 101 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_TIN, ConfigUtils.colorStringToFloatA(oreColorOreTin)); |
| 102 | } else { |
| 103 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_TIN, Color.GRAY); |
| 104 | } |
| 105 | String oreColorOreGold = properties.getProperty("oreColorOreGold", "default"); |
| 106 | if (!oreColorOreGold.equals("default")) { |
| 107 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_GOLD, ConfigUtils.colorStringToFloatA(oreColorOreGold)); |
| 108 | } else { |
| 109 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_GOLD, Color.YELLOW.darker()); |
| 110 | } |
| 111 | String oreColorOreAdamantine = properties.getProperty("oreColorOreAdamantine", "default"); |
| 112 | if (!oreColorOreAdamantine.equals("default")) { |
| 113 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_ADAMANTINE, ConfigUtils.colorStringToFloatA(oreColorOreAdamantine)); |
| 114 | } else { |
| 115 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_ADAMANTINE, Color.CYAN); |
| 116 | } |
| 117 | String oreColorOreGlimmersteel = properties.getProperty("oreColorOreGlimmersteel", "default"); |
| 118 | if (!oreColorOreGlimmersteel.equals("default")) { |
| 119 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_GLIMMERSTEEL, ConfigUtils.colorStringToFloatA(oreColorOreGlimmersteel)); |
| 120 | } else { |
| 121 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_GLIMMERSTEEL, Color.YELLOW.brighter()); |
| 122 | } |
| 123 | String oreColorOreSilver = properties.getProperty("oreColorOreSilver", "default"); |
| 124 | if (!oreColorOreSilver.equals("default")) { |
| 125 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_SILVER, ConfigUtils.colorStringToFloatA(oreColorOreSilver)); |
| 126 | } else { |
| 127 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_SILVER, Color.LIGHT_GRAY); |
| 128 | } |
| 129 | String oreColorOreLead = properties.getProperty("oreColorOreLead", "default"); |
| 130 | if (!oreColorOreLead.equals("default")) { |
| 131 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_LEAD, ConfigUtils.colorStringToFloatA(oreColorOreLead)); |
| 132 | } else { |
| 133 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_LEAD, Color.PINK.darker().darker()); |
| 134 | } |
| 135 | String oreColorOreZinc = properties.getProperty("oreColorOreZinc", "default"); |
| 136 | if (!oreColorOreZinc.equals("default")) { |
| 137 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_ZINC, ConfigUtils.colorStringToFloatA(oreColorOreZinc)); |
| 138 | } else { |
| 139 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ORE_ZINC, new Color(235, 235, 235)); |
| 140 | } |
| 141 | String oreColorSlate = properties.getProperty("oreColorSlate", "default"); |
| 142 | if (!oreColorSlate.equals("default")) { |
| 143 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_SLATE, ConfigUtils.colorStringToFloatA(oreColorSlate)); |
| 144 | } else { |
| 145 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_SLATE, Color.BLACK); |
| 146 | } |
| 147 | String oreColorMarble = properties.getProperty("oreColorMarble", "default"); |
| 148 | if (!oreColorMarble.equals("default")) { |
| 149 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_MARBLE, ConfigUtils.colorStringToFloatA(oreColorMarble)); |
| 150 | } else { |
| 151 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_MARBLE, Color.WHITE); |
| 152 | } |
| 153 | String oreColorSandstone = properties.getProperty("oreColorSandstone", "default"); |
| 154 | if (!oreColorSandstone.equals("default")) { |
| 155 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_SANDSTONE, ConfigUtils.colorStringToFloatA(oreColorSandstone)); |
| 156 | } else { |
| 157 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_SANDSTONE, Color.YELLOW.darker().darker()); |
| 158 | } |
| 159 | String oreColorRocksalt = properties.getProperty("oreColorRocksalt", "default"); |
| 160 | if (!oreColorRocksalt.equals("default")) { |
| 161 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ROCKSALT, ConfigUtils.colorStringToFloatA(oreColorRocksalt)); |
| 162 | } else { |
| 163 | XrayColors.addMapping(Tiles.Tile.TILE_CAVE_WALL_ROCKSALT, Color.WHITE.darker()); |
| 164 | } |
| 165 | Unit.aggroMOBS = properties.getProperty("aggroMOBS").split(";"); |
| 166 | Unit.uniqueMOBS = properties.getProperty("uniqueMOBS").split(";"); |
| 167 | Unit.specialITEMS = properties.getProperty("specialITEMS").split(";"); |
| 168 | Unit.spottedITEMS = properties.getProperty("spottedITEMS").split(";"); |
| 169 | Unit.conditionedMOBS = properties.getProperty("conditionedMOBS").split(";"); |
| 170 | WurmEspMod.tilesFlowerSearch = properties.getProperty("tilesFlowerSearch").split(";"); |
| 171 | } |
| 172 | |
| 173 | private static float[] colorStringToFloatA(String color) { |
| 174 | String[] colors = color.split(","); |
| 175 | float[] colorf = new float[]{Float.valueOf(colors[0]).floatValue() / 255.0f, Float.valueOf(colors[1]).floatValue() / 255.0f, Float.valueOf(colors[2]).floatValue() / 255.0f}; |
| 176 | return colorf; |
| 177 | } |
| 178 | |
| 179 | private static String colorFloatAToString(float[] color) { |
| 180 | String colors = String.valueOf(color[0] * 255.0f) + "," + String.valueOf(color[1] * 255.0f) + "," + String.valueOf(color[2] * 255.0f); |
| 181 | return colors; |
| 182 | } |
| 183 | } |
| 184 | |