diff --git a/Core/pom.xml b/Core/pom.xml index 47474a82b..d0dd70bb8 100644 --- a/Core/pom.xml +++ b/Core/pom.xml @@ -4,7 +4,7 @@ de.tor.dswb dsworkbench - 3.71 + 3.72 4.0.0 diff --git a/Core/src/main/java/de/tor/tribes/control/GenericManager.java b/Core/src/main/java/de/tor/tribes/control/GenericManager.java index e945f3a90..72bd8578e 100644 --- a/Core/src/main/java/de/tor/tribes/control/GenericManager.java +++ b/Core/src/main/java/de/tor/tribes/control/GenericManager.java @@ -467,6 +467,9 @@ public void loadElements(String pFile) { logger.debug("Failed loading data", ex); checkValues(); } + if(!valid) { + revalidate(true); + } } public void saveElements(String pFile) { @@ -490,7 +493,7 @@ public void saveElements(String pFile) { public abstract Element getExportData(final List pGroupsToExport); /** - * @return number of imported Elements
negativ (-x-1) if failed + * @return number of imported Elements
negative (-x-1) if failed */ public abstract int importData(Element pElm, String pExtension); } diff --git a/Core/src/main/java/de/tor/tribes/io/TroopAmountElement.java b/Core/src/main/java/de/tor/tribes/io/TroopAmountElement.java index e106e5fc5..a29083416 100644 --- a/Core/src/main/java/de/tor/tribes/io/TroopAmountElement.java +++ b/Core/src/main/java/de/tor/tribes/io/TroopAmountElement.java @@ -39,6 +39,8 @@ public class TroopAmountElement { private String dynamicAmount = ""; //buffer to speed up private boolean fixed = false; + + private boolean testRun = false; public TroopAmountElement(UnitHolder pUnit, int pAmount) { this(pUnit, Integer.toString(pAmount)); @@ -61,14 +63,15 @@ public final void setDynamicAmount(String pAmount) { //Try if we can parse this Object val; try { - val = parse(pAmount, 0, 0); + testRun = false; + val = parse(pAmount, null, 0); } catch (Exception e) { logger.debug("Parser Crashed ", e); throw new IllegalArgumentException("Parser returned error ", e); } if (val instanceof String) { logger.debug("Can't parse Amount " + (String) val); - throw new IllegalArgumentException("Unable to parse Math"); + throw new IllegalArgumentException("Unable to parse first remaining dynamic variable will be most likely the problem: " + val); } //ok we can parse look if its fixed String pAmountLower = pAmount.toLowerCase(); @@ -78,7 +81,9 @@ public final void setDynamicAmount(String pAmount) { fixed = false; dynamicAmount = pAmount; } else { - val = parse(pAmount, -1, -1); + testRun = true; + val = parse(pAmount, null, -1); + testRun = false; if (val instanceof Double) { fixed = true; dynamicAmount = Integer.toString(((Double) val).intValue()); @@ -95,17 +100,20 @@ public int getTroopsAmount(Village pVillage) { logger.error("Tried to read fixed troops from Dynamic amount"); throw new IllegalArgumentException("Tried to read fixed troops from Dynamic amount"); } - int availableAmount = getAvailable(pVillage); + TroopAmountFixed availableAmounts = getAvailable(pVillage); + int availableAmount = (availableAmounts != null)?(availableAmounts.getAmountForUnit(unit)):(0); int fakeMinAmount = 0; if(pVillage != null) { //amount nedds to rounded down so we can simply use int Calculation fakeMinAmount = pVillage.getPoints() * ServerSettings.getSingleton().getFakeLimitPercent() / 100; + if(fakeMinAmount == 0) fakeMinAmount = 1; //there is at least 1 one needed even on servers without Fake Limit } - Object val = parse(dynamicAmount, availableAmount, fakeMinAmount); + testRun = false; + Object val = parse(dynamicAmount, availableAmounts, fakeMinAmount); if (val instanceof String) { - logger.error("cant get Amount " + availableAmount + "/" + dynamicAmount); + logger.error("cant get Amount ({})/{}", (availableAmounts != null)?(availableAmounts.toProperty()):("null"), dynamicAmount); throw new RuntimeException("cant get Amount"); } else if (val instanceof Double) { int wanted = ((Double) val).intValue(); @@ -187,7 +195,7 @@ public String toBase64() { * @return returns a double if able to parse returns a String if unable to * parse */ - Object parse(String math, int pDynValue, int pFakeValue) { + Object parse(String math, TroopAmountFixed pDynValue, int pFakeValue) { if (math.length() == 0) { return (double) 0; } @@ -248,9 +256,9 @@ Object parse(String math, int pDynValue, int pFakeValue) { * @return returns a double if able to parse returns a String if unable to * parse */ - private final String[] mathChars = {"+", "-", "*", "/", "%", "^", "<", ">", "="}; + private final String[] mathChars = {"+", "-", "*", "/", "%", "^", "<=", ">=", "=<", "=>", "<>", "><", "<", ">", "="}; - private Object innerParse(String noBrackets, int pDynValue, int pFakeValue, int level) { + private Object innerParse(String noBrackets, TroopAmountFixed pDynValue, int pFakeValue, int level) { if (noBrackets.length() == 0) { return (double) 0; } @@ -337,20 +345,32 @@ private Object innerParse(String noBrackets, int pDynValue, int pFakeValue, int case "=": dAll = (dAll == dInner) ? (1.0) : (0.0); break; + case ">=": + case "=>": + dAll = (dAll >= dInner) ? (1.0) : (0.0); + break; + case "<=": + case "=<": + dAll = (dAll <= dInner) ? (1.0) : (0.0); + break; + case "<>": + case "><": + dAll = (dAll != dInner) ? (1.0) : (0.0); + break; } result = dAll; } } - currentIndex = next + 1; + currentIndex = next + mathChars[level].length(); } - return result; + return (result != null)?(result):((double) 0); } private final String[] elementPostChars = {"%"}; - private final String[] elementPreChars = {"_"}; + private final String[] elementPreChars = {"_", "!"}; - private Object elementParse(String element, int pDynValue, int pFakeValue) { + private Object elementParse(String element, TroopAmountFixed pDynValue, int pFakeValue) { if (element.length() == 0) { return (double) 0; } @@ -358,12 +378,34 @@ private Object elementParse(String element, int pDynValue, int pFakeValue) { if (element.equalsIgnoreCase(ALL_TROOPS)) { //element is all Troops placeholder - if (pDynValue >= 0) { - return (double) pDynValue; - } else { + if (testRun) { //no dynamic Value given return element; } + else if (pDynValue != null) { + return (double) pDynValue.getAmountForUnit(unit); + } else { + return 0; + } + } + if (element.length() > ALL_TROOPS.length() + 1 && + element.substring(0, ALL_TROOPS.length()+1).equalsIgnoreCase(ALL_TROOPS + "_")) { + //element could be placeholder of "external" all Troops placeholder (for another unit) + String name = element.substring((ALL_TROOPS + "_").length()); + for(UnitHolder otherUnit: DataHolder.getSingleton().getUnits()) { + if(name.equalsIgnoreCase(otherUnit.getPlainName()) || + name.equalsIgnoreCase(otherUnit.getName())) { + if (testRun) { + //no dynamic Value given + return element; + } + else if (pDynValue != null) { + return (double) pDynValue.getAmountForUnit(otherUnit); + } else { + return 0; + } + } + } } if (element.equalsIgnoreCase(RND_VALUE)) { //element is random placeholder @@ -371,11 +413,11 @@ private Object elementParse(String element, int pDynValue, int pFakeValue) { } if (element.equalsIgnoreCase(FAKE_VALUE)) { //element is fake placeholder - if (pFakeValue >= 0) { - return (double) pFakeValue; - } else { + if (testRun) { //no dynamic Value given return element; + } else { + return (double) pFakeValue; } } @@ -392,11 +434,14 @@ private Object elementParse(String element, int pDynValue, int pFakeValue) { //able to parse switch (elementPostChar) { case "%": - if (pDynValue >= 0) { - return (double) pDynValue * dVal / 100; - } else { + if (testRun) { return val.toString() + elementPostChar; } + else if (pDynValue != null) { + return (double) pDynValue.getAmountForUnit(unit) * dVal / 100; + } else { + return 0; + } } } } @@ -414,6 +459,8 @@ private Object elementParse(String element, int pDynValue, int pFakeValue) { switch (elementPreChar) { case "_": return (double) dVal * -1; + case "!": + return (dVal == 0) ? (1.0) : (0.0); } } } @@ -476,10 +523,10 @@ private int findNextOperator(String input, int parsingLevel, int startIndex, boo return next; } - private int getAvailable(Village pVillage) { + private TroopAmountFixed getAvailable(Village pVillage) { if (pVillage == null) { //don't care - return 0; + return null; } else { VillageTroopsHolder own = TroopsManager.getSingleton().getTroopsForVillage(pVillage, TroopsManager.TROOP_TYPE.OWN); if (own == null) { @@ -488,9 +535,9 @@ private int getAvailable(Village pVillage) { logger.debug("No troop information found for village '" + pVillage + "'"); } //just use 0 for all Units - return 0; + return null; } - return own.getTroops().getAmountForUnit(unit); + return own.getTroops(); } } } diff --git a/Core/src/main/java/de/tor/tribes/types/ext/Tribe.java b/Core/src/main/java/de/tor/tribes/types/ext/Tribe.java index d6f3c9065..60dca07ce 100644 --- a/Core/src/main/java/de/tor/tribes/types/ext/Tribe.java +++ b/Core/src/main/java/de/tor/tribes/types/ext/Tribe.java @@ -238,18 +238,24 @@ public void setRankDeff(int rankDef) { } public Color getMarkerColor() { - Marker m = MarkerManager.getSingleton().getMarker(this); - if (m != null) { - return m.getMarkerColor(); - } - - if (this.equals(Barbarians.getSingleton())) { - return Color.LIGHT_GRAY; + Marker mTribe = MarkerManager.getSingleton().getMarker(this); + if (mTribe != null) { + return mTribe.getMarkerColor(); } if (getId() == GlobalOptions.getSelectedProfile().getTribe().getId()) { return Color.YELLOW; } + + Marker mAlly = MarkerManager.getSingleton().getMarker(getAlly()); + if(mAlly != null) { + return mAlly.getMarkerColor(); + } + + if (this.equals(Barbarians.getSingleton())) { + return Color.LIGHT_GRAY; + } + Color DEFAULT = null; switch(GlobalOptions.getProperties().getInt("default.mark")) { case 1: diff --git a/Core/src/main/java/de/tor/tribes/ui/panels/AttackTableTab.java b/Core/src/main/java/de/tor/tribes/ui/panels/AttackTableTab.java index 16837c14f..2d3572be9 100644 --- a/Core/src/main/java/de/tor/tribes/ui/panels/AttackTableTab.java +++ b/Core/src/main/java/de/tor/tribes/ui/panels/AttackTableTab.java @@ -1446,7 +1446,7 @@ private void copyBBToExternalClipboardEvent() { showInfo("Keine Befehle ausgewählt"); return; } - int answer = JOptionPaneHelper.showQuestionThreeChoicesBox(this, "Welcher BB-Codes Typ soll verwendet werden?\n(Erweiterte BB-Codes sind nur für das Forum und die Notizen geeignet)", "Erweiterter BB-Code", "IGM", "Normal", "Erweitert"); + int answer = JOptionPaneHelper.showQuestionThreeChoicesBox(this, "Welcher BB-Codes Typ soll verwendet werden?\n(Erweiterte BB-Codes sind nur für das Forum und die Notizen geeignet)", "Erweiterter BB-Code", "Normal", "IGM", "Erweitert"); StringBuilder buffer = new StringBuilder(); switch (answer) { @@ -1473,6 +1473,7 @@ private void copyBBToExternalClipboardEvent() { buffer.append(" mit DS Workbench "); buffer.append(Constants.VERSION).append(Constants.VERSION_ADDITION + "[/size]\n"); break; + case JOptionPane.NO_OPTION: default: //Normal buffer.append("[u]Geplante Befehle[/u]\n\n"); diff --git a/Core/src/main/java/de/tor/tribes/ui/renderer/map/MapLayerRenderer.java b/Core/src/main/java/de/tor/tribes/ui/renderer/map/MapLayerRenderer.java index 668130f27..c2d6ec283 100644 --- a/Core/src/main/java/de/tor/tribes/ui/renderer/map/MapLayerRenderer.java +++ b/Core/src/main/java/de/tor/tribes/ui/renderer/map/MapLayerRenderer.java @@ -475,8 +475,7 @@ private void renderMarkerField(Village v, int row, int col, int pFieldWidth, int boolean showBarbarian = GlobalOptions.getProperties().getBoolean("show.barbarian"); Village currentUserVillage = DSWorkbenchMainFrame.getSingleton().getCurrentUserVillage(); - if (v != null && !(v.getTribe().equals(Barbarians.getSingleton()) && !showBarbarian) //&& !(MarkerManager.getSingleton().getMarker(v) == null && !v.getTribe().getName().equals(GlobalOptions.getSelectedProfile().getTribeName())) - ) { + if (v != null && (!v.getTribe().equals(Barbarians.getSingleton()) || showBarbarian)) { v.setVisibleOnMap(true); tribeId = v.getTribeID(); copyRect = renderedMarkerBounds.get(tribeId); diff --git a/Core/src/main/java/de/tor/tribes/ui/renderer/map/TagMarkerLayerRenderer.java b/Core/src/main/java/de/tor/tribes/ui/renderer/map/TagMarkerLayerRenderer.java index 633ee0f77..9229c8b07 100644 --- a/Core/src/main/java/de/tor/tribes/ui/renderer/map/TagMarkerLayerRenderer.java +++ b/Core/src/main/java/de/tor/tribes/ui/renderer/map/TagMarkerLayerRenderer.java @@ -207,7 +207,7 @@ private void renderMarkerField(Village v, int row, int col, int pFieldWidth, int int xcnt = 1; int ycnt = 2; int cnt = 0; - for (Tag tag : TagManager.getSingleton().getTags(v)) { + for (Tag tag : villageTags) { // if (tag.isShowOnMap()) { boolean isDrawable = false; diff --git a/Core/src/main/java/de/tor/tribes/ui/views/DSWorkbenchFarmManager.java b/Core/src/main/java/de/tor/tribes/ui/views/DSWorkbenchFarmManager.java index 8b23a3eba..ef84ddf0d 100644 --- a/Core/src/main/java/de/tor/tribes/ui/views/DSWorkbenchFarmManager.java +++ b/Core/src/main/java/de/tor/tribes/ui/views/DSWorkbenchFarmManager.java @@ -106,7 +106,8 @@ private void setSelectedCataTarget() { } private void setSelectedFarmGroup() { - DSWorkbenchFarmManager.SelectedFarmGroup = (String) jFarmGroup.getSelectedItem(); + if(jFarmGroup.getSelectedItem() != null) + DSWorkbenchFarmManager.SelectedFarmGroup = (String) jFarmGroup.getSelectedItem(); } public static String getSelectedCataTarget() { @@ -2254,7 +2255,8 @@ public void restoreCustomProperties(Configuration pConfig) { } try { - DSWorkbenchFarmManager.SelectedFarmGroup = pConfig.getString(getPropertyPrefix() + ".farm.group"); + if(pConfig.getString(getPropertyPrefix() + ".farm.group") != null) + DSWorkbenchFarmManager.SelectedFarmGroup = pConfig.getString(getPropertyPrefix() + ".farm.group"); } catch (Exception ignored) { } diff --git a/Core/src/main/java/de/tor/tribes/ui/views/TroopSetupConfigurationFrame.form b/Core/src/main/java/de/tor/tribes/ui/views/TroopSetupConfigurationFrame.form index bc02217a6..e7d4e3603 100644 --- a/Core/src/main/java/de/tor/tribes/ui/views/TroopSetupConfigurationFrame.form +++ b/Core/src/main/java/de/tor/tribes/ui/views/TroopSetupConfigurationFrame.form @@ -111,7 +111,7 @@ - + diff --git a/Core/src/main/java/de/tor/tribes/ui/views/TroopSetupConfigurationFrame.java b/Core/src/main/java/de/tor/tribes/ui/views/TroopSetupConfigurationFrame.java index cf817d236..5419c68a0 100644 --- a/Core/src/main/java/de/tor/tribes/ui/views/TroopSetupConfigurationFrame.java +++ b/Core/src/main/java/de/tor/tribes/ui/views/TroopSetupConfigurationFrame.java @@ -168,7 +168,7 @@ public void mouseReleased(java.awt.event.MouseEvent evt) { jHelpPanel.setLayout(new java.awt.GridBagLayout()); jTextPane1.setContentType("text/html"); // NOI18N - jTextPane1.setText("Standardangriffe sind voreingestellte Angriffe mit einer festgelegten Truppenzahl, die an vielen Stellen in DS Workbench verwendet werden können. \nSo dienen sie z.B. dazu, die Angriffe eines Angriffsplans im Versammlungsplatz zu öffnen und die Truppen direkt einzufügen. \nDazu müssen die Truppeninformationen aus dem Spielaccount nach DS Workbench importiert werden.\nMehr dazu erfährst du in der Programmhilfe, die du mit F1 öffnest.\nIn den Standardangriffen können verschiedene Konstanten und mathematische Rechenoperationen benutzt werden :\n\nDas Ergebnis wird abgerundet bevor die Truppen losgeschickt werden.\n "); + jTextPane1.setText("Standardangriffe sind voreingestellte Angriffe mit einer festgelegten Truppenzahl, die an vielen Stellen in DS Workbench verwendet werden können. \nSo dienen sie z.B. dazu, die Angriffe eines Angriffsplans im Versammlungsplatz zu öffnen und die Truppen direkt einzufügen. \nDazu müssen die Truppeninformationen aus dem Spielaccount nach DS Workbench importiert werden.\nMehr dazu erfährst du in der Programmhilfe, die du mit F1 öffnest.\nIn den Standardangriffen können verschiedene Konstanten und mathematische Rechenoperationen benutzt werden :\n\nDas Ergebnis wird abgerundet bevor die Truppen losgeschickt werden.\n "); jScrollPane2.setViewportView(jTextPane1); gridBagConstraints = new java.awt.GridBagConstraints(); diff --git a/Core/src/main/java/de/tor/tribes/ui/windows/DSWorkbenchMainFrame.java b/Core/src/main/java/de/tor/tribes/ui/windows/DSWorkbenchMainFrame.java index 0e7049542..2746e330b 100644 --- a/Core/src/main/java/de/tor/tribes/ui/windows/DSWorkbenchMainFrame.java +++ b/Core/src/main/java/de/tor/tribes/ui/windows/DSWorkbenchMainFrame.java @@ -2798,9 +2798,7 @@ public void centerVillage(Village pVillage) { return; } - jCenterX.setText(Integer.toString(pVillage.getX())); - jCenterY.setText(Integer.toString(pVillage.getY())); - refreshMap(); + centerPosition(pVillage.getX(), pVillage.getY()); } public void centerPosition(double xPos, double yPos) { diff --git a/Core/src/main/java/de/tor/tribes/ui/windows/DSWorkbenchSplashScreen.java b/Core/src/main/java/de/tor/tribes/ui/windows/DSWorkbenchSplashScreen.java index 450321cb7..0a3760536 100644 --- a/Core/src/main/java/de/tor/tribes/ui/windows/DSWorkbenchSplashScreen.java +++ b/Core/src/main/java/de/tor/tribes/ui/windows/DSWorkbenchSplashScreen.java @@ -100,7 +100,7 @@ public static synchronized DSWorkbenchSplashScreen getSingleton() { // private void initComponents() { - jProfileDialog = new javax.swing.JDialog(); + jProfileDialog = new javax.swing.JDialog(this); jScrollPane2 = new javax.swing.JScrollPane(); jTree1 = new javax.swing.JTree(); jButton1 = new javax.swing.JButton(); diff --git a/Core/src/main/java/de/tor/tribes/util/BuildingSettings.java b/Core/src/main/java/de/tor/tribes/util/BuildingSettings.java index 64aa6cbb4..fa337f4d0 100644 --- a/Core/src/main/java/de/tor/tribes/util/BuildingSettings.java +++ b/Core/src/main/java/de/tor/tribes/util/BuildingSettings.java @@ -39,7 +39,7 @@ public class BuildingSettings { private static final int[] BUILD_STONE = new int[BUILDING_NAMES.length]; private static final int[] BUILD_IRON = new int[BUILDING_NAMES.length]; private static final int[] BUILD_POP = new int[BUILDING_NAMES.length]; - private static final int[] BUILD_TIME = new int[BUILDING_NAMES.length]; + private static final double[] BUILD_TIME = new double[BUILDING_NAMES.length]; private static final double[] BUILD_WOOD_FACTOR = new double[BUILDING_NAMES.length]; private static final double[] BUILD_STONE_FACTOR = new double[BUILDING_NAMES.length]; private static final double[] BUILD_IRON_FACTOR = new double[BUILDING_NAMES.length]; @@ -94,7 +94,7 @@ public static boolean loadSettings(String pServerID) { BUILD_STONE[index] = Integer.parseInt(b.getChildTextTrim("stone")); BUILD_IRON[index] = Integer.parseInt(b.getChildTextTrim("iron")); BUILD_POP[index] = Integer.parseInt(b.getChildTextTrim("pop")); - BUILD_TIME[index] = Integer.parseInt(b.getChildTextTrim("build_time")); + BUILD_TIME[index] = Double.parseDouble(b.getChildTextTrim("build_time")); BUILD_WOOD_FACTOR[index] = Double.parseDouble(b.getChildTextTrim("wood_factor")); BUILD_STONE_FACTOR[index] = Double.parseDouble(b.getChildTextTrim("stone_factor")); BUILD_IRON_FACTOR[index] = Double.parseDouble(b.getChildTextTrim("iron_factor")); @@ -194,6 +194,10 @@ public static boolean isBuildingLevelValid(String pBuilding, int pLevel) { * returns false if building was not found */ public static boolean isBuildingLevelValid(int pBuildingID, int pLevel) { + if(pLevel == -1) { + //Always allow -1 as it means unknown + return true; + } if(pLevel > MAX_LEVEL[pBuildingID]) { logger.debug("Level too hight {} / {} / {}", pBuildingID, pLevel, MAX_LEVEL[pBuildingID]); return false; diff --git a/Core/src/main/java/de/tor/tribes/util/Constants.java b/Core/src/main/java/de/tor/tribes/util/Constants.java index 660439f74..fcda81678 100644 --- a/Core/src/main/java/de/tor/tribes/util/Constants.java +++ b/Core/src/main/java/de/tor/tribes/util/Constants.java @@ -24,7 +24,7 @@ * @author Torridity */ public class Constants { - public final static double VERSION = 3.71; + public final static double VERSION = 3.72; public final static String VERSION_ADDITION = ""; public final static Color DS_BACK = new Color(225, 213, 190); public final static Color DS_BACK_LIGHT = new Color(239, 235, 223); diff --git a/Core/src/main/java/de/tor/tribes/util/conquer/ConquerManager.java b/Core/src/main/java/de/tor/tribes/util/conquer/ConquerManager.java index 09319c5af..843df6516 100644 --- a/Core/src/main/java/de/tor/tribes/util/conquer/ConquerManager.java +++ b/Core/src/main/java/de/tor/tribes/util/conquer/ConquerManager.java @@ -94,6 +94,7 @@ public int importData(Element pElm, String pExtension) { try { String lastup = JDomUtils.getNodeValue(pElm, "conquers/lastUpdate"); this.lastUpdate = Long.parseLong(lastup); + result++; for (Element e : (List) JDomUtils.getNodes(pElm, "conquers/conquer")) { try { Conquer c = new Conquer(); diff --git a/Core/src/main/java/de/tor/tribes/util/js/AttackScriptWriter.java b/Core/src/main/java/de/tor/tribes/util/js/AttackScriptWriter.java index 8e1417afa..997536f80 100644 --- a/Core/src/main/java/de/tor/tribes/util/js/AttackScriptWriter.java +++ b/Core/src/main/java/de/tor/tribes/util/js/AttackScriptWriter.java @@ -49,7 +49,7 @@ public static boolean writeAttackScript(List pAttacks, String tmpl = ""; try { logger.debug(" - reading template"); - BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream("./scripts/show.tmpl"))); + BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream("./templates/scriptShow.tmpl"))); String line = ""; while ((line = r.readLine()) != null) { tmpl += line + "\n"; diff --git a/Core/src/main/java/de/tor/tribes/util/village/KnownVillage.java b/Core/src/main/java/de/tor/tribes/util/village/KnownVillage.java index 72701a591..c66089444 100644 --- a/Core/src/main/java/de/tor/tribes/util/village/KnownVillage.java +++ b/Core/src/main/java/de/tor/tribes/util/village/KnownVillage.java @@ -171,7 +171,7 @@ public void removeChurchInfo() { } public void setWatchtowerLevel(int pLevel) { - if(!ServerSettings.getSingleton().isChurch()) { + if(!ServerSettings.getSingleton().isWatchtower()) { logger.info("Tried to set Watchtower level " + pLevel + "on server without"); return; } @@ -180,7 +180,7 @@ public void setWatchtowerLevel(int pLevel) { } public void removeWatchtowerInfo() { - if(!ServerSettings.getSingleton().isChurch()) { + if(!ServerSettings.getSingleton().isWatchtower()) { logger.info("Tried to remove Watchtower on server without"); return; } @@ -215,13 +215,14 @@ public int getBuildingLevelByName(String pBuilding) { public void setBuildingLevelByName(String pBuilding, int pLevel) { int id = BuildingSettings.getBuildingIdByName(pBuilding); + logger.debug("Setting building {} ({}) to level {}", pBuilding, id, pLevel); if(id == -2) { - logger.info("Building " + pBuilding + " not found"); + logger.info("Building {} not found", pBuilding); return; } if(!BuildingSettings.isBuildingLevelValid(pBuilding, pLevel)) { - logger.error("Building level invalid " + pBuilding + ": " + pLevel); + logger.error("Building level invalid {}: {}", pBuilding, pLevel); return; } @@ -229,6 +230,7 @@ public void setBuildingLevelByName(String pBuilding, int pLevel) { } public void setBuildingLevelById(int pBuildingId, int pLevel) { + logger.debug("Setting building {} to level {}", pBuildingId, pLevel); if(!BuildingSettings.isBuildingLevelValid(pBuildingId, pLevel)) { logger.error("Building level invalid " + pBuildingId + ": " + pLevel); return; diff --git a/Core/src/main/java/de/tor/tribes/util/village/KnownVillageManager.java b/Core/src/main/java/de/tor/tribes/util/village/KnownVillageManager.java index b58e1209c..00e9443e5 100644 --- a/Core/src/main/java/de/tor/tribes/util/village/KnownVillageManager.java +++ b/Core/src/main/java/de/tor/tribes/util/village/KnownVillageManager.java @@ -55,11 +55,13 @@ public static synchronized KnownVillageManager getSingleton() { addManagerListener(new GenericManagerListener() { @Override public void dataChangedEvent() { + logger.debug("invalidating cache"); cacheValid = false; } @Override public void dataChangedEvent(String pGroup) { + logger.debug("invalidating cache grouped"); cacheValid = false; } }); @@ -220,6 +222,7 @@ public void updateInformation(FightReport pReport) { } private void rebuildWatchtowerChurchCache() { + logger.debug("rebuilding cache"); churchVillages.clear(); watchtowerVillages.clear(); @@ -233,6 +236,7 @@ private void rebuildWatchtowerChurchCache() { } } + logger.debug("rebuilded cache"); cacheValid = true; } } diff --git a/ParserPlugin/pom.xml b/ParserPlugin/pom.xml index e5eff7be1..400aa1ef9 100644 --- a/ParserPlugin/pom.xml +++ b/ParserPlugin/pom.xml @@ -4,7 +4,7 @@ de.tor.dswb dsworkbench - 3.71 + 3.72 4.0.0 diff --git a/lib/flamingo/flamingo/1.0/flamingo-1.0.jar b/lib/flamingo/flamingo/1.0/flamingo-1.0.jar new file mode 100644 index 000000000..b002c13f6 Binary files /dev/null and b/lib/flamingo/flamingo/1.0/flamingo-1.0.jar differ diff --git a/pom.xml b/pom.xml index 967b4393b..4a059b809 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ dsworkbench DSWorkbench pom - 3.71 + 3.72 Parent project for DS Workbench. The project contains two modules: core and plugins which are put together @@ -107,9 +107,14 @@ 2.0 - com.github.insubstantial + flamingo flamingo - 7.3 + 1.0 + + + org.pushingpixels + trident + 1.3 bislider diff --git a/resources/Scripts/DSWorkbench Java 10 b/resources/Scripts/DSWorkbench Java 10 deleted file mode 100755 index 647dfd2d0..000000000 --- a/resources/Scripts/DSWorkbench Java 10 +++ /dev/null @@ -1,130 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# Copyright 2001-2006 The Apache Software Foundation. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ---------------------------------------------------------------------------- -# -# Copyright (c) 2001-2006 The Apache Software Foundation. All rights -# reserved. - - -# resolve links - $0 may be a softlink -PRG="$0" - -while [ -h "$PRG" ]; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`/"$link" - fi -done - -PRGDIR=`dirname "$PRG"` -BASEDIR=`cd "$PRGDIR/" >/dev/null; pwd` - -cd $BASEDIR -# Reset the REPO variable. If you need to influence this use the environment setup file. -REPO= - - -# OS specific support. $var _must_ be set to either true or false. -cygwin=false; -darwin=false; -case "`uname`" in - CYGWIN*) cygwin=true ;; - Darwin*) darwin=true - if [ -z "$JAVA_VERSION" ] ; then - JAVA_VERSION="CurrentJDK" - else - echo "Using Java version: $JAVA_VERSION" - fi - if [ -z "$JAVA_HOME" ]; then - if [ -x "/usr/libexec/java_home" ]; then - JAVA_HOME=`/usr/libexec/java_home` - else - JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/${JAVA_VERSION}/Home - fi - fi - ;; -esac - -if [ -z "$JAVA_HOME" ] ; then - if [ -r /etc/gentoo-release ] ; then - JAVA_HOME=`java-config --jre-home` - fi -fi - -# For Cygwin, ensure paths are in UNIX format before anything is touched -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"` -fi - -# If a specific java binary isn't specified search for the standard 'java' binary -if [ -z "$JAVACMD" ] ; then - if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - else - JAVACMD=`which java` - fi -fi - -if [ ! -x "$JAVACMD" ] ; then - echo "Error: JAVA_HOME is not defined correctly." 1>&2 - echo " We cannot execute $JAVACMD" 1>&2 - exit 1 -fi - -if [ -z "$REPO" ] -then - REPO="$BASEDIR"/lib -fi - -CLASSPATH="$BASEDIR"/.:"$REPO"/* - -ENDORSED_DIR=lib -if [ -n "$ENDORSED_DIR" ] ; then - CLASSPATH=$BASEDIR/$ENDORSED_DIR/*:$CLASSPATH -fi - -if [ -n "$CLASSPATH_PREFIX" ] ; then - CLASSPATH=$CLASSPATH_PREFIX:$CLASSPATH -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin; then - [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --windows "$CLASSPATH"` - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` - [ -n "$HOME" ] && HOME=`cygpath --path --windows "$HOME"` - [ -n "$BASEDIR" ] && BASEDIR=`cygpath --path --windows "$BASEDIR"` - [ -n "$REPO" ] && REPO=`cygpath --path --windows "$REPO"` -fi - -exec "$JAVACMD" $JAVA_OPTS -Dlog4j.configurationFile="$BASEDIR"/log4j.xml -Xmx512m \ - -classpath "$CLASSPATH" \ - -Dapp.name="DSWorkbench" \ - -Dapp.pid="$$" \ - -Dapp.repo="$REPO" \ - -Dapp.home="$BASEDIR" \ - -Dbasedir="$BASEDIR" \ - --illegal-access=warn \ - de.tor.tribes.ui.windows.DSWorkbenchSplashScreen \ - "$@" diff --git a/resources/Scripts/DSWorkbench Java 10 debug b/resources/Scripts/DSWorkbench Java 10 debug deleted file mode 100755 index 0a5d570da..000000000 --- a/resources/Scripts/DSWorkbench Java 10 debug +++ /dev/null @@ -1,130 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# Copyright 2001-2006 The Apache Software Foundation. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ---------------------------------------------------------------------------- -# -# Copyright (c) 2001-2006 The Apache Software Foundation. All rights -# reserved. - - -# resolve links - $0 may be a softlink -PRG="$0" - -while [ -h "$PRG" ]; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`/"$link" - fi -done - -PRGDIR=`dirname "$PRG"` -BASEDIR=`cd "$PRGDIR/" >/dev/null; pwd` - -cd $BASEDIR -# Reset the REPO variable. If you need to influence this use the environment setup file. -REPO= - - -# OS specific support. $var _must_ be set to either true or false. -cygwin=false; -darwin=false; -case "`uname`" in - CYGWIN*) cygwin=true ;; - Darwin*) darwin=true - if [ -z "$JAVA_VERSION" ] ; then - JAVA_VERSION="CurrentJDK" - else - echo "Using Java version: $JAVA_VERSION" - fi - if [ -z "$JAVA_HOME" ]; then - if [ -x "/usr/libexec/java_home" ]; then - JAVA_HOME=`/usr/libexec/java_home` - else - JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/${JAVA_VERSION}/Home - fi - fi - ;; -esac - -if [ -z "$JAVA_HOME" ] ; then - if [ -r /etc/gentoo-release ] ; then - JAVA_HOME=`java-config --jre-home` - fi -fi - -# For Cygwin, ensure paths are in UNIX format before anything is touched -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"` -fi - -# If a specific java binary isn't specified search for the standard 'java' binary -if [ -z "$JAVACMD" ] ; then - if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - else - JAVACMD=`which java` - fi -fi - -if [ ! -x "$JAVACMD" ] ; then - echo "Error: JAVA_HOME is not defined correctly." 1>&2 - echo " We cannot execute $JAVACMD" 1>&2 - exit 1 -fi - -if [ -z "$REPO" ] -then - REPO="$BASEDIR"/lib -fi - -CLASSPATH="$BASEDIR"/.:"$REPO"/* - -ENDORSED_DIR=lib -if [ -n "$ENDORSED_DIR" ] ; then - CLASSPATH=$BASEDIR/$ENDORSED_DIR/*:$CLASSPATH -fi - -if [ -n "$CLASSPATH_PREFIX" ] ; then - CLASSPATH=$CLASSPATH_PREFIX:$CLASSPATH -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin; then - [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --windows "$CLASSPATH"` - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` - [ -n "$HOME" ] && HOME=`cygpath --path --windows "$HOME"` - [ -n "$BASEDIR" ] && BASEDIR=`cygpath --path --windows "$BASEDIR"` - [ -n "$REPO" ] && REPO=`cygpath --path --windows "$REPO"` -fi - -exec "$JAVACMD" $JAVA_OPTS -Dlog4j.configurationFile="$BASEDIR"/log4j-debug.xml -Xmx512m \ - -classpath "$CLASSPATH" \ - -Dapp.name="DSWorkbench" \ - -Dapp.pid="$$" \ - -Dapp.repo="$REPO" \ - -Dapp.home="$BASEDIR" \ - -Dbasedir="$BASEDIR" \ - --illegal-access=warn \ - de.tor.tribes.ui.windows.DSWorkbenchSplashScreen \ - "$@" diff --git a/src/main/assemble/distribution.xml b/src/main/assemble/distribution.xml index 45fcb4913..c0bdc3bec 100644 --- a/src/main/assemble/distribution.xml +++ b/src/main/assemble/distribution.xml @@ -52,7 +52,7 @@ resources/Scripts - show.tmpl + BuildStartScript.sh DSWorkbench* Launcher.bat hidecmd.vbs