You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(103) |
Jun
(121) |
Jul
(16) |
Aug
(67) |
Sep
(126) |
Oct
(161) |
Nov
(164) |
Dec
(588) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(394) |
Feb
(181) |
Mar
(131) |
Apr
(180) |
May
(255) |
Jun
(11) |
Jul
(79) |
Aug
(70) |
Sep
(274) |
Oct
(138) |
Nov
(195) |
Dec
(8) |
2008 |
Jan
(3) |
Feb
(142) |
Mar
(162) |
Apr
(124) |
May
(148) |
Jun
(157) |
Jul
(425) |
Aug
(373) |
Sep
(264) |
Oct
(315) |
Nov
(225) |
Dec
(6) |
2009 |
Jan
(67) |
Feb
(78) |
Mar
(279) |
Apr
(294) |
May
(92) |
Jun
(65) |
Jul
(134) |
Aug
(41) |
Sep
(138) |
Oct
(125) |
Nov
(126) |
Dec
(122) |
2010 |
Jan
(15) |
Feb
(48) |
Mar
(9) |
Apr
(195) |
May
(373) |
Jun
(507) |
Jul
(42) |
Aug
(16) |
Sep
(38) |
Oct
(81) |
Nov
(64) |
Dec
(18) |
2011 |
Jan
(13) |
Feb
(12) |
Mar
(39) |
Apr
(1) |
May
(2) |
Jun
(27) |
Jul
(27) |
Aug
(31) |
Sep
(14) |
Oct
(102) |
Nov
(20) |
Dec
(37) |
2012 |
Jan
(22) |
Feb
(1) |
Mar
(1) |
Apr
(2) |
May
(2) |
Jun
(18) |
Jul
(6) |
Aug
(1) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
2013 |
Jan
(1) |
Feb
(2) |
Mar
(1) |
Apr
(1) |
May
(47) |
Jun
(7) |
Jul
(107) |
Aug
|
Sep
|
Oct
(112) |
Nov
(31) |
Dec
(17) |
2014 |
Jan
(29) |
Feb
(111) |
Mar
(34) |
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
(18) |
Dec
(10) |
From: <aki...@us...> - 2014-12-26 11:56:08
|
Revision: 9736 http://sourceforge.net/p/gridarta/code/9736 Author: akirschbaum Date: 2014-12-26 11:55:35 +0000 (Fri, 26 Dec 2014) Log Message: ----------- Fix incorrect nullable annotation. Modified Paths: -------------- trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/AbstractBaseObject.java Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/AbstractBaseObject.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/AbstractBaseObject.java 2014-12-26 11:50:32 UTC (rev 9735) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/AbstractBaseObject.java 2014-12-26 11:55:35 UTC (rev 9736) @@ -52,7 +52,7 @@ /** * The {@link AnimationObjects} for looking up animations. */ - @Nullable + @NotNull private final AnimationObjects animationObjects; /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-12-26 11:50:57
|
Revision: 9735 http://sourceforge.net/p/gridarta/code/9735 Author: akirschbaum Date: 2014-12-26 11:50:32 +0000 (Fri, 26 Dec 2014) Log Message: ----------- Fix undo/redo operations involving game object attribute changes. Modified Paths: -------------- trunk/src/atrinik/ChangeLog trunk/src/crossfire/ChangeLog trunk/src/daimonin/ChangeLog trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/AbstractBaseObject.java trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/GameObjectText.java Modified: trunk/src/atrinik/ChangeLog =================================================================== --- trunk/src/atrinik/ChangeLog 2014-12-25 16:36:11 UTC (rev 9734) +++ trunk/src/atrinik/ChangeLog 2014-12-26 11:50:32 UTC (rev 9735) @@ -1,3 +1,7 @@ +2014-12-26 Andreas Kirschbaum + + * Fix undo/redo operations involving game object attribute changes. + 2014-12-25 Alex Tokar * Add support for auto-tiling: omit tile_path map attributes that Modified: trunk/src/crossfire/ChangeLog =================================================================== --- trunk/src/crossfire/ChangeLog 2014-12-25 16:36:11 UTC (rev 9734) +++ trunk/src/crossfire/ChangeLog 2014-12-26 11:50:32 UTC (rev 9735) @@ -1,3 +1,7 @@ +2014-12-26 Andreas Kirschbaum + + * Fix undo/redo operations involving game object attribute changes. + 2014-12-07 Andreas Kirschbaum * Define "rendererFactory" variable in plugins when run from Modified: trunk/src/daimonin/ChangeLog =================================================================== --- trunk/src/daimonin/ChangeLog 2014-12-25 16:36:11 UTC (rev 9734) +++ trunk/src/daimonin/ChangeLog 2014-12-26 11:50:32 UTC (rev 9735) @@ -1,3 +1,7 @@ +2014-12-26 Andreas Kirschbaum + + * Fix undo/redo operations involving game object attribute changes. + 2014-12-07 Andreas Kirschbaum * Define "rendererFactory" variable in plugins when run from Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/AbstractBaseObject.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/AbstractBaseObject.java 2014-12-25 16:36:11 UTC (rev 9734) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/AbstractBaseObject.java 2014-12-26 11:50:32 UTC (rev 9735) @@ -352,7 +352,7 @@ @Override public void setAttributeString(@NotNull final String attributeName, @NotNull final String value) { final boolean sameAsInArchetype = getArchetype().getAttributeString(attributeName).equals(value); - if (!gameObjectText.setAttributeValue(attributeName, sameAsInArchetype, value)) { + if (!gameObjectText.setAttributeValue(attributeName, sameAsInArchetype, value, this)) { return; } @@ -365,7 +365,7 @@ @Override public void setAttributeInt(@NotNull final String attributeName, final int value) { final boolean sameAsInArchetype = getArchetype().getAttributeInt(attributeName) == value; - if (!gameObjectText.setAttributeValue(attributeName, sameAsInArchetype, Integer.toString(value))) { + if (!gameObjectText.setAttributeValue(attributeName, sameAsInArchetype, Integer.toString(value), this)) { return; } @@ -377,7 +377,7 @@ */ @Override public void removeAttribute(@NotNull final String attributeName) { - if (!gameObjectText.removeAttribute(attributeName)) { + if (!gameObjectText.removeAttribute(attributeName, this)) { return; } @@ -753,7 +753,7 @@ */ @Override public void addObjectText(@NotNull final String line) { - if (!gameObjectText.addObjectText(line)) { + if (!gameObjectText.addObjectText(line, this)) { return; } @@ -765,7 +765,7 @@ */ @Override public void setObjectText(@NotNull final String objectText) { - if (!gameObjectText.setObjectText(objectText)) { + if (!gameObjectText.setObjectText(objectText, this)) { return; } Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/GameObjectText.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/GameObjectText.java 2014-12-25 16:36:11 UTC (rev 9734) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/baseobject/GameObjectText.java 2014-12-26 11:50:32 UTC (rev 9735) @@ -133,15 +133,21 @@ * Appends a line to the object text. * @param line the line to append, may contain '\n' for appending multiple * lines + * @param baseObject the game object to notify of changes * @return whether the object text was changed */ - public boolean addObjectText(@NotNull final String line) { + public boolean addObjectText(@NotNull final String line, @NotNull final AbstractBaseObject<?, ?, ?, ?> baseObject) { if (line.isEmpty()) { return false; } - objectText.append(line); - if (!line.endsWith("\n")) { - objectText.append('\n'); + baseObject.beginGameObjectChange(); + try { + objectText.append(line); + if (!line.endsWith("\n")) { + objectText.append('\n'); + } + } finally { + baseObject.endGameObjectChange(); } clearAttributeCache(); return true; @@ -150,9 +156,10 @@ /** * Sets the object text. * @param objectText the object text to set + * @param baseObject the game object to notify of changes * @return whether the object text was changed */ - public boolean setObjectText(@NotNull final String objectText) { + public boolean setObjectText(@NotNull final String objectText, @NotNull final AbstractBaseObject<?, ?, ?, ?> baseObject) { final String oldObjectText = this.objectText.toString(); if (oldObjectText.length() == objectText.length()) { final String oldSortedObjectText = StringUtils.sortLines(oldObjectText); @@ -162,10 +169,15 @@ } } - this.objectText.setLength(0); - this.objectText.append(objectText); - if (!objectText.isEmpty() && !objectText.endsWith("\n")) { - this.objectText.append('\n'); + baseObject.beginGameObjectChange(); + try { + this.objectText.setLength(0); + this.objectText.append(objectText); + if (!objectText.isEmpty() && !objectText.endsWith("\n")) { + this.objectText.append('\n'); + } + } finally { + baseObject.endGameObjectChange(); } clearAttributeCache(); return true; @@ -197,9 +209,10 @@ /** * Removes an attribute. * @param attributeName the attribute name + * @param baseObject the game object to notify of changes * @return whether the object text has changed */ - public boolean removeAttribute(@NotNull final String attributeName) { + public boolean removeAttribute(@NotNull final String attributeName, @NotNull final AbstractBaseObject<?, ?, ?, ?> baseObject) { final String attributeNameWithSpace = attributeName.trim() + " "; // attributeName must be followed by space final StringBuilder sb = new StringBuilder(); @@ -208,7 +221,7 @@ sb.append(line).append('\n'); } } - return setObjectText(sb.toString()); + return setObjectText(sb.toString(), baseObject); } /** @@ -217,11 +230,12 @@ * @param sameAsInArchetype whether the new value is the same as in the * archetype * @param value the new value + * @param baseObject the game object to notify of changes * @return whether the object text has changed */ - public boolean setAttributeValue(@NotNull final String attributeName, final boolean sameAsInArchetype, @NotNull final String value) { + public boolean setAttributeValue(@NotNull final String attributeName, final boolean sameAsInArchetype, @NotNull final String value, @NotNull final AbstractBaseObject<?, ?, ?, ?> baseObject) { if (value.isEmpty()) { - return removeAttribute(attributeName); + return removeAttribute(attributeName, baseObject); } final String attributeNameWithSpace = attributeName.trim() + " "; @@ -242,7 +256,7 @@ if (!exists && !sameAsInArchetype) { result.append(attributeNameWithSpace).append(value).append('\n'); } - return setObjectText(result.toString()); + return setObjectText(result.toString(), baseObject); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-12-17 19:47:58
|
Revision: 9733 http://sourceforge.net/p/gridarta/code/9733 Author: akirschbaum Date: 2014-12-17 19:47:40 +0000 (Wed, 17 Dec 2014) Log Message: ----------- Add support for tiled maps in up and down direction. [Atrinik] Modified Paths: -------------- trunk/src/atrinik/ChangeLog trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/gui/mappropertiesdialog/MapPropertiesDialog.java trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/maincontrol/DefaultEditorFactory.java trunk/src/atrinik/src/main/resources/net/sf/gridarta/var/atrinik/action.properties trunk/src/atrinik/src/main/resources/net/sf/gridarta/var/atrinik/messages.properties trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/mapactions/EnterMap.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/mapactions/MapActions.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/AbstractMapTilePane.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/FlatMapTilePane.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/IsoMapTilePane.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/DirectionLayout.java trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties trunk/src/model/src/main/java/net/sf/gridarta/model/direction/Direction.java trunk/src/model/src/main/java/net/sf/gridarta/model/io/AbstractMapArchObjectParser.java trunk/src/model/src/main/java/net/sf/gridarta/model/maparchobject/AbstractMapArchObject.java trunk/src/model/src/main/java/net/sf/gridarta/model/mapcursor/MapCursor.java trunk/src/model/src/test/java/net/sf/gridarta/model/mapcursor/MapCursorTest.java Added Paths: ----------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/Iso3DMapTilePane.java Modified: trunk/src/atrinik/ChangeLog =================================================================== --- trunk/src/atrinik/ChangeLog 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/atrinik/ChangeLog 2014-12-17 19:47:40 UTC (rev 9733) @@ -1,3 +1,7 @@ +2014-12-17 Alex Tokar + + * Add support for tiled maps in up and down direction. + 2014-12-07 Andreas Kirschbaum * Define "rendererFactory" variable in plugins when run from Modified: trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/gui/mappropertiesdialog/MapPropertiesDialog.java =================================================================== --- trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/gui/mappropertiesdialog/MapPropertiesDialog.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/gui/mappropertiesdialog/MapPropertiesDialog.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -48,7 +48,7 @@ import javax.swing.filechooser.FileFilter; import net.sf.gridarta.gui.dialog.help.Help; import net.sf.gridarta.gui.map.maptilepane.AbstractMapTilePane; -import net.sf.gridarta.gui.map.maptilepane.IsoMapTilePane; +import net.sf.gridarta.gui.map.maptilepane.Iso3DMapTilePane; import net.sf.gridarta.gui.utils.GUIConstants; import net.sf.gridarta.gui.utils.TextComponentUtils; import net.sf.gridarta.model.mapmanager.MapManager; @@ -333,7 +333,7 @@ final Component mainPanel = createMainPanel(map); tabs.add(ActionBuilderUtils.getString(ACTION_BUILDER, "mapMapTabTitle"), mainPanel); - mapTilePane = new IsoMapTilePane<GameObject, MapArchObject, Archetype>(mapManager, projectSettings, mapModel, mapFileFilter); + mapTilePane = new Iso3DMapTilePane<GameObject, MapArchObject, Archetype>(mapManager, projectSettings, mapModel, mapFileFilter); final Component tilePanel = createTilePathPanel(mapTilePane); tabs.add(ActionBuilderUtils.getString(ACTION_BUILDER, "mapTilesTabTitle"), tilePanel); Modified: trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/maincontrol/DefaultEditorFactory.java =================================================================== --- trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/maincontrol/DefaultEditorFactory.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/maincontrol/DefaultEditorFactory.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -535,7 +535,7 @@ @NotNull @Override public Direction[] getDirectionMap() { - return new Direction[] { Direction.NORTH_EAST, Direction.SOUTH_EAST, Direction.SOUTH_WEST, Direction.NORTH_WEST, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.NORTH, }; + return new Direction[] { Direction.NORTH_EAST, Direction.SOUTH_EAST, Direction.SOUTH_WEST, Direction.NORTH_WEST, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.NORTH, Direction.UP, Direction.DOWN }; } /** Modified: trunk/src/atrinik/src/main/resources/net/sf/gridarta/var/atrinik/action.properties =================================================================== --- trunk/src/atrinik/src/main/resources/net/sf/gridarta/var/atrinik/action.properties 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/atrinik/src/main/resources/net/sf/gridarta/var/atrinik/action.properties 2014-12-17 19:47:40 UTC (rev 9733) @@ -27,7 +27,7 @@ main.menubar=file edit map archetypes pickmaps resources tools analyze view bookmarks plugins window help file.menu=newMap openFile goMap recent closeMap - saveMap saveMapAs saveAllMaps - closeAllMaps reloadMap createImage - options shortcuts - exit edit.menu=undo redo - clear cut copy paste pasteTiled - shift - find findNext findPrev replace fillAuto fillAbove fillBelow randFillAuto randFillAbove randFillBelow floodFill - selectAll invertSelection expandEmptySelection growSelection shrinkSelection -map.menu=autoJoin - enterExit nextExit prevExit enterNorthMap enterEastMap enterSouthMap enterWestMap enterNorthEastMap enterSouthEastMap enterSouthWestMap enterNorthWestMap - mapCreateView mapProperties shrinkMapSize deleteUnknownObjects - gameObjectTextEditor +map.menu=autoJoin - enterExit nextExit prevExit enterNorthMap enterEastMap enterSouthMap enterWestMap enterNorthEastMap enterSouthEastMap enterSouthWestMap enterNorthWestMap enterUpMap enterDownMap - mapCreateView mapProperties shrinkMapSize deleteUnknownObjects - gameObjectTextEditor archetypes.menu=displayGameObjectNames displayArchetypeNames displayIconsOnly - findArchetypes browseArchetypes #pickmaps.menu: See gridarta resources.menu=collectArches collectSpells - reloadFaces - viewTreasurelists @@ -42,7 +42,7 @@ mapwindowFile.menu=saveMap saveMapAs createImage - reloadMap - closeMap mapwindowEdit.menu=undo redo - clear cut copy paste pasteTiled - shift - find findNext findPrev replace fillAuto fillAbove fillBelow randFillAuto randFillAbove randFillBelow floodFill - selectAll invertSelection expandEmptySelection growSelection shrinkSelection -mapwindowMap.menu=gridVisible lightVisible - goExit enterExit nextExit prevExit enterNorthMap enterEastMap enterSouthMap enterWestMap enterNorthEastMap enterSouthEastMap enterSouthWestMap enterNorthWestMap - mapCreateView mapProperties shrinkMapSize deleteUnknownObjects openInClient +mapwindowMap.menu=gridVisible lightVisible - goExit enterExit nextExit prevExit enterNorthMap enterEastMap enterSouthMap enterWestMap enterNorthEastMap enterSouthEastMap enterSouthWestMap enterNorthWestMap enterUpMap enterDownMap - mapCreateView mapProperties shrinkMapSize deleteUnknownObjects openInClient mapwindowCursor.menu=moveCursor - exitConnector - selectSquare startStopDrag addToSelection subFromSelection releaseDrag - insertArch deleteArch - selectArchAbove selectArchBelow - archAttributes ########## Modified: trunk/src/atrinik/src/main/resources/net/sf/gridarta/var/atrinik/messages.properties =================================================================== --- trunk/src/atrinik/src/main/resources/net/sf/gridarta/var/atrinik/messages.properties 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/atrinik/src/main/resources/net/sf/gridarta/var/atrinik/messages.properties 2014-12-17 19:47:40 UTC (rev 9733) @@ -122,6 +122,8 @@ enterSouthWestMap.accel=ctrl pressed NUMPAD4 enterWestMap.accel=ctrl pressed NUMPAD7 enterNorthWestMap.accel=ctrl pressed NUMPAD8 +enterUpMap.accel=ctrl pressed ADD +enterDownMap.accel=ctrl pressed SUBTRACT ####### Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/mapactions/EnterMap.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/mapactions/EnterMap.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/mapactions/EnterMap.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -238,6 +238,11 @@ scrollTo = new Rectangle(newViewSize.width - oldViewRectangle.width, newViewSize.height - oldViewRectangle.height, oldViewRectangle.width, oldViewRectangle.height); break; + case UP: + case DOWN: + scrollTo = new Rectangle(oldViewRectangle.x, oldViewRectangle.y, oldViewRectangle.width, oldViewRectangle.height); + break; + default: throw new AssertionError(); } @@ -297,6 +302,10 @@ case NORTH_WEST: return new Point(mapSize.getWidth() - 1, mapSize.getHeight() - 1); + case UP: + case DOWN: + return new Point(oldCursorLocation.x, oldCursorLocation.y); + default: throw new AssertionError(); } Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/mapactions/MapActions.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/mapactions/MapActions.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/mapactions/MapActions.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -68,7 +68,7 @@ * Possible directions for "enter xxx map". */ @NotNull - private final String[] directionsMap = { "enterNorthMap", "enterEastMap", "enterSouthMap", "enterWestMap", "enterNorthEastMap", "enterSouthEastMap", "enterSouthWestMap", "enterNorthWestMap" }; + private final String[] directionsMap = { "enterNorthMap", "enterEastMap", "enterSouthMap", "enterWestMap", "enterNorthEastMap", "enterSouthEastMap", "enterSouthWestMap", "enterNorthWestMap", "enterUpMap", "enterDownMap" }; /** * Action for "grid visible". @@ -564,6 +564,22 @@ } /** + * Action method for entering the up map. + */ + @ActionMethod + public void enterUpMap() { + doEnterMap(true, Direction.UP); + } + + /** + * Action method for entering the down map. + */ + @ActionMethod + public void enterDownMap() { + doEnterMap(true, Direction.DOWN); + } + + /** * Deletes all game objects referencing unknown archetypes. */ @ActionMethod Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/AbstractMapTilePane.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/AbstractMapTilePane.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/AbstractMapTilePane.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -140,10 +140,10 @@ this.mapModel = mapModel; this.nextFocus = nextFocus.clone(); this.mapFileFilter = mapFileFilter; - assert tileLink.length == 8; - tileLinks = new TileLink[] { newTileLink("mapNorth", tileLink[0], Direction.SOUTH), newTileLink("mapEast", tileLink[1], Direction.WEST), newTileLink("mapSouth", tileLink[2], Direction.NORTH), newTileLink("mapWest", tileLink[3], Direction.EAST), newTileLink("mapNorthEast", tileLink[4], Direction.SOUTH_WEST), newTileLink("mapSouthEast", tileLink[5], Direction.NORTH_WEST), newTileLink("mapSouthWest", tileLink[6], Direction.NORTH_EAST), newTileLink("mapNorthWest", tileLink[7], Direction.SOUTH_EAST), }; + assert tileLink.length == 10; + tileLinks = new TileLink[] { newTileLink("mapNorth", tileLink[0], Direction.SOUTH), newTileLink("mapEast", tileLink[1], Direction.WEST), newTileLink("mapSouth", tileLink[2], Direction.NORTH), newTileLink("mapWest", tileLink[3], Direction.EAST), newTileLink("mapNorthEast", tileLink[4], Direction.SOUTH_WEST), newTileLink("mapSouthEast", tileLink[5], Direction.NORTH_WEST), newTileLink("mapSouthWest", tileLink[6], Direction.NORTH_EAST), newTileLink("mapNorthWest", tileLink[7], Direction.SOUTH_EAST), newTileLink("mapUp", tileLink[8], Direction.DOWN), newTileLink("mapDown", tileLink[9], Direction.UP)}; attachTiledMaps = new AttachTiledMaps<G, A, R>(mapManager, tileLinks); - canAttachMaps = tileLink[0].length + tileLink[1].length + tileLink[2].length + tileLink[3].length + tileLink[4].length + tileLink[5].length + tileLink[6].length + tileLink[7].length > 0; + canAttachMaps = tileLink[0].length + tileLink[1].length + tileLink[2].length + tileLink[3].length + tileLink[4].length + tileLink[5].length + tileLink[6].length + tileLink[7].length + tileLink[8].length + tileLink[9].length > 0; mapArchObject = mapModel.getMapArchObject(); tilePaths = buildComponents(directionMapping); } Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/FlatMapTilePane.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/FlatMapTilePane.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/FlatMapTilePane.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -45,7 +45,7 @@ /** * The tile links used for the attach map algorithm. */ - private static final MapLink[][] TILE_LINK = new MapLink[8][0]; + private static final MapLink[][] TILE_LINK = new MapLink[10][0]; /** * Maps map direction to {@link net.sf.gridarta.gui.utils.DirectionLayout} Added: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/Iso3DMapTilePane.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/Iso3DMapTilePane.java (rev 0) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/Iso3DMapTilePane.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -0,0 +1,99 @@ +/* + * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games. + * Copyright (C) 2000-2011 The Gridarta Developers. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +package net.sf.gridarta.gui.map.maptilepane; + +import javax.swing.filechooser.FileFilter; +import net.sf.gridarta.model.archetype.Archetype; +import net.sf.gridarta.model.direction.Direction; +import net.sf.gridarta.model.gameobject.GameObject; +import net.sf.gridarta.model.maparchobject.MapArchObject; +import net.sf.gridarta.model.mapmanager.MapManager; +import net.sf.gridarta.model.mapmodel.MapModel; +import net.sf.gridarta.model.settings.ProjectSettings; +import net.sf.gridarta.model.tiles.MapLink; +import org.jetbrains.annotations.NotNull; + +/** + * A Panel for managing the tiling of maps. Implementation for 10 tile paths. + * @author <a href="mailto:mic...@no...">Michael Toennies</a> + * @author <a href="mailto:ch...@ri...">Christian Hujer</a> + */ +public class Iso3DMapTilePane<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> extends AbstractMapTilePane<G, A, R> { + + /** + * Serial Version UID. + */ + private static final long serialVersionUID = 1L; + + /** + * The tile links used for the attach map algorithm. + */ + private static final MapLink[][] TILE_LINK = new MapLink[10][2]; + + static { + /* fine list of indirect links von maps around to other maps around us */ + TILE_LINK[Direction.NORTH.ordinal()][0] = new MapLink(Direction.NORTH_WEST, Direction.WEST); + TILE_LINK[Direction.NORTH.ordinal()][1] = new MapLink(Direction.NORTH_EAST, Direction.EAST); + + TILE_LINK[Direction.NORTH_EAST.ordinal()][0] = new MapLink(Direction.NORTH, Direction.WEST); + TILE_LINK[Direction.NORTH_EAST.ordinal()][1] = new MapLink(Direction.EAST, Direction.SOUTH); + + TILE_LINK[Direction.EAST.ordinal()][0] = new MapLink(Direction.NORTH_EAST, Direction.NORTH); + TILE_LINK[Direction.EAST.ordinal()][1] = new MapLink(Direction.SOUTH_EAST, Direction.SOUTH); + + TILE_LINK[Direction.SOUTH_EAST.ordinal()][0] = new MapLink(Direction.EAST, Direction.NORTH); + TILE_LINK[Direction.SOUTH_EAST.ordinal()][1] = new MapLink(Direction.SOUTH, Direction.WEST); + + TILE_LINK[Direction.SOUTH.ordinal()][0] = new MapLink(Direction.SOUTH_EAST, Direction.EAST); + TILE_LINK[Direction.SOUTH.ordinal()][1] = new MapLink(Direction.SOUTH_WEST, Direction.WEST); + + TILE_LINK[Direction.SOUTH_WEST.ordinal()][0] = new MapLink(Direction.SOUTH, Direction.EAST); + TILE_LINK[Direction.SOUTH_WEST.ordinal()][1] = new MapLink(Direction.WEST, Direction.NORTH); + + TILE_LINK[Direction.WEST.ordinal()][0] = new MapLink(Direction.SOUTH_WEST, Direction.SOUTH); + TILE_LINK[Direction.WEST.ordinal()][1] = new MapLink(Direction.NORTH_WEST, Direction.NORTH); + + TILE_LINK[Direction.NORTH_WEST.ordinal()][0] = new MapLink(Direction.WEST, Direction.SOUTH); + TILE_LINK[Direction.NORTH_WEST.ordinal()][1] = new MapLink(Direction.NORTH, Direction.EAST); + } + + /** + * Maps map direction to {@link net.sf.gridarta.gui.utils.DirectionLayout} + * direction. + */ + private static final Direction[] DIRECTION_MAPPING = { Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.NORTH_EAST, Direction.SOUTH_EAST, Direction.SOUTH_WEST, Direction.NORTH_WEST, Direction.UP, Direction.DOWN }; + + /** + * Indices of next focus. + */ + private static final int[] NEXT_FOCUS = { 4, 5, 6, 7, 1, 2, 3, 0 }; + + /** + * Create a MapTilePane. + * @param mapManager the map manager to use + * @param projectSettings the project settings instance + * @param mapModel the map that's tiles are to be viewed / controlled + * @param mapFileFilter the Swing file filter to use + */ + public Iso3DMapTilePane(final MapManager<G, A, R> mapManager, @NotNull final ProjectSettings projectSettings, final MapModel<G, A, R> mapModel, final FileFilter mapFileFilter) { + super(mapManager, projectSettings, mapModel, TILE_LINK, DIRECTION_MAPPING, NEXT_FOCUS, mapFileFilter); + } + +} Property changes on: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/Iso3DMapTilePane.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/IsoMapTilePane.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/IsoMapTilePane.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/IsoMapTilePane.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -45,7 +45,7 @@ /** * The tile links used for the attach map algorithm. */ - private static final MapLink[][] TILE_LINK = new MapLink[8][2]; + private static final MapLink[][] TILE_LINK = new MapLink[10][2]; static { /* fine list of indirect links von maps around to other maps around us */ Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/DirectionLayout.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/DirectionLayout.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/DirectionLayout.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -53,7 +53,7 @@ * illegal if this were declared inside the enum. */ @NotNull - private static final Direction[] DAIMONIN_TO_DIRECTION_MAP = new Direction[8]; + private static final Direction[] DAIMONIN_TO_DIRECTION_MAP = new Direction[10]; static { addDirection(Direction.NORTH); @@ -64,6 +64,8 @@ addDirection(Direction.SOUTH_EAST); addDirection(Direction.SOUTH_WEST); addDirection(Direction.NORTH_WEST); + addDirection(Direction.UP); + addDirection(Direction.DOWN); } /** @@ -157,6 +159,20 @@ private Component cC; /** + * Up Component. + * @serial include + */ + @Nullable + private Component cU; + + /** + * Down Component. + * @serial include + */ + @Nullable + private Component cD; + + /** * Creates a DirectionLayout with zero gaps. */ public DirectionLayout() { @@ -217,6 +233,12 @@ case NORTH_WEST: cNW = comp; break; + case UP: + cU = comp; + break; + case DOWN: + cD = comp; + break; default: assert false; break; @@ -257,6 +279,10 @@ cSW = null; } else if (cNW == comp) { cNW = null; + } else if (cU == comp) { + cU = null; + } else if (cD == comp) { + cD = null; } } } @@ -278,7 +304,9 @@ final Dimension dSE = getMinimumSize(cSE); final Dimension dSW = getMinimumSize(cSW); final Dimension dNW = getMinimumSize(cNW); - dim.height = vGap * 4 + dNW.height + max(dW.height, dN.height) + max(dSW.height, dC.height, dNE.height) + max(dS.height, dE.height) + dSE.height; + final Dimension dU = getMinimumSize(cU); + final Dimension dD = getMinimumSize(cD); + dim.height = vGap * 4 + dNW.height + max(dW.height, dN.height) + max(dSW.height, dC.height, dNE.height) + max(dS.height, dE.height) + dSE.height + max(dU.height, dD.height); dim.width = max(hGap * 2 + dSW.width + max(dNW.width, dC.width, dSE.width) + dNE.width, hGap + max(dW.width, dS.width) + max(dN.width, dE.width), max(dNW.width, dSE.width)); final Insets insets = parent.getInsets(); dim.width += insets.left + insets.right; @@ -315,7 +343,9 @@ final Dimension dSE = getPreferredSize(cSE); final Dimension dSW = getPreferredSize(cSW); final Dimension dNW = getPreferredSize(cNW); - dim.height = vGap * 4 + dNW.height + max(dW.height, dN.height) + max(dSW.height, dC.height, dNE.height) + max(dS.height, dE.height) + dSE.height; + final Dimension dU = getMinimumSize(cU); + final Dimension dD = getMinimumSize(cD); + dim.height = vGap * 4 + dNW.height + max(dW.height, dN.height) + max(dSW.height, dC.height, dNE.height) + max(dS.height, dE.height) + dSE.height + max(dU.height, dD.height); dim.width = hGap * 2 + dSW.width + max(dNW.width, dC.width, dSE.width) + dNE.width; final Insets insets = parent.getInsets(); dim.width += insets.left + insets.right; @@ -396,6 +426,9 @@ if (cSE != null) { rows++; } + if (cU != null || cD != null) { + rows++; + } if (rows <= 0) { return; } @@ -439,7 +472,17 @@ } if (cSE != null) { cSE.setBounds(left + colWidth + hGap, top, colWidth, rowHeight); + top += rowHeight + vGap; } + if (cU != null || cD != null) { + if (cU != null) { + cU.setBounds(left + ((colWidth + hGap) / 2), top, colWidth, rowHeight); + } + if (cD != null) { + cD.setBounds(left + ((colWidth + hGap) * 3 / 2), top, colWidth, rowHeight); + } + top += rowHeight + vGap; + } } } Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -437,6 +437,8 @@ editorActionManager.createAction("enterSouthEastMap", "Map Navigation", mapActions); editorActionManager.createAction("enterSouthWestMap", "Map Navigation", mapActions); editorActionManager.createAction("enterNorthWestMap", "Map Navigation", mapActions); + editorActionManager.createAction("enterUpMap", "Map Navigation", mapActions); + editorActionManager.createAction("enterDownMap", "Map Navigation", mapActions); editorActionManager.createToggleAction("gridVisible", "Map Navigation", mapActions); editorActionManager.createToggleAction("lightVisible", "Map Navigation", new LightVisibleAction(mapViewSettings)); editorActionManager.createToggleAction("smoothing", "Map Navigation", mapActions); Modified: trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties =================================================================== --- trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties 2014-12-17 19:47:40 UTC (rev 9733) @@ -247,6 +247,12 @@ enterNorthWestMap.text=Enter Northwest Map enterNorthWestMap.shortdescription=Opens the tiled map north west of the current map. +enterUpMap.text=Enter Up Map +enterUpMap.shortdescription=Opens the tiled map up of the current map. + +enterDownMap.text=Enter Down Map +enterDownMap.shortdescription=Opens the tiled map down of the current map. + deleteUnknownObjects.text=Delete unknown objects deleteUnknownObjects.shortdescription=Deletes game objects referring to undefined archetypes from the current map. @@ -549,6 +555,8 @@ mapNorthWest=Northwest mapSouthEast=Southeast mapSouthWest=Southwest +mapUp=Up +mapDown=Down mapTiles=Paths for Map-Tiling mapControl=Control Map-Tiling mapTilesAttach.text=Attach Map Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/direction/Direction.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/direction/Direction.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/direction/Direction.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -65,9 +65,19 @@ /** * North west. */ - NORTH_WEST(-1, -1, "NorthWest"); + NORTH_WEST(-1, -1, "NorthWest"), /** + * Up. + */ + UP(0, 0, "Up"), + + /** + * Down. + */ + DOWN(0, 0, "Down"); + + /** * The relative x direction. */ private final int dx; Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/io/AbstractMapArchObjectParser.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/io/AbstractMapArchObjectParser.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/io/AbstractMapArchObjectParser.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -21,6 +21,8 @@ import java.io.BufferedReader; import java.io.IOException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import net.sf.gridarta.model.direction.Direction; import net.sf.gridarta.model.maparchobject.MapArchObject; import net.sf.gridarta.utils.NumberUtils; @@ -38,6 +40,13 @@ public abstract class AbstractMapArchObjectParser<A extends MapArchObject<A>> implements MapArchObjectParser<A> { /** + * Matches the remainder of a "tile_path_xyz" line. First group is the + * direction, second group is the destination path. + */ + @NotNull + private static final Pattern TILE_PATH_PATTERN = Pattern.compile("(\\d+) (.+)"); + + /** * {@inheritDoc} */ @Override @@ -112,11 +121,16 @@ mapArchObject.setOutdoor(true); } } else if (trimmedLine.startsWith("tile_path_")) { + final Matcher m = TILE_PATH_PATTERN.matcher(trimmedLine.substring(10)); + if (!m.matches()) { + throw new InvalidMapFormatException("unexpected map attribute: '" + trimmedLine + "'"); + } + // get tile path try { - final int index = Integer.valueOf(trimmedLine.substring(10, 11)); - if (index > 0 && index <= Direction.values().length && trimmedLine.length() >= 12 && trimmedLine.charAt(11) == ' ') { - mapArchObject.setTilePath(Direction.values()[index - 1], trimmedLine.substring(12)); + final int index = Integer.valueOf(m.group(1)); + if (index > 0 && index <= Direction.values().length) { + mapArchObject.setTilePath(Direction.values()[index - 1], m.group(2)); } else { throw new InvalidMapFormatException("unexpected map attribute: '" + trimmedLine + "'"); } Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/maparchobject/AbstractMapArchObject.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/maparchobject/AbstractMapArchObject.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/maparchobject/AbstractMapArchObject.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -126,7 +126,8 @@ /** * The map tile paths used for map tiling. 0 = north, 1 = east, 2 = south, 3 - * = west. 4 = northeast, 5 = southeast, 6 = southwest, 7 = northwest + * = west. 4 = northeast, 5 = southeast, 6 = southwest, 7 = northwest, + * 8 = up, 9 = down */ @NotNull private final String[] tilePaths; Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/mapcursor/MapCursor.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/mapcursor/MapCursor.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/mapcursor/MapCursor.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -377,6 +377,9 @@ * @return {@code true} if cursor really moved */ public boolean goTo(final boolean performAction, @NotNull final Direction dir) { + if (dir.getDx() == 0 && dir.getDy() == 0) { + return false; + } tmpPoint.setLocation(pos.x + dir.getDx(), pos.y + dir.getDy()); if (!mapRec.contains(tmpPoint)) { return false; Modified: trunk/src/model/src/test/java/net/sf/gridarta/model/mapcursor/MapCursorTest.java =================================================================== --- trunk/src/model/src/test/java/net/sf/gridarta/model/mapcursor/MapCursorTest.java 2014-12-17 19:20:52 UTC (rev 9732) +++ trunk/src/model/src/test/java/net/sf/gridarta/model/mapcursor/MapCursorTest.java 2014-12-17 19:47:40 UTC (rev 9733) @@ -224,8 +224,13 @@ cursor.setLocation(p); testEvents(1, 0); for (final Direction dir : Direction.values()) { - Assert.assertTrue("go(" + dir + ") should return true. (Maybe the grid was too small.)", cursor.goTo(true, dir)); - testEvents(1, 0); + if (dir == Direction.UP || dir == Direction.DOWN) { + Assert.assertFalse("go(" + dir + ") should return false. (Maybe the grid was too small.)", cursor.goTo(true, dir)); + testEvents(0, 0); + } else { + Assert.assertTrue("go(" + dir + ") should return true. (Maybe the grid was too small.)", cursor.goTo(true, dir)); + testEvents(1, 0); + } p.x += dir.getDx(); p.y += dir.getDy(); Assert.assertEquals("Moving cursor.", p, cursor.getLocation()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-12-17 19:21:02
|
Revision: 9732 http://sourceforge.net/p/gridarta/code/9732 Author: akirschbaum Date: 2014-12-17 19:20:52 +0000 (Wed, 17 Dec 2014) Log Message: ----------- Tentative fix for incorrect map file names. Modified Paths: -------------- trunk/src/model/src/main/java/net/sf/gridarta/model/io/PathManager.java trunk/src/utils/src/main/java/net/sf/gridarta/utils/IOUtils.java Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/io/PathManager.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/io/PathManager.java 2014-12-07 21:54:19 UTC (rev 9731) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/io/PathManager.java 2014-12-17 19:20:52 UTC (rev 9732) @@ -83,7 +83,7 @@ public MapFile getMapFile(@NotNull final File file) { final String canonicalFile = IOUtils.getCanonicalPath(file); final File mapsDirectory = projectSettings.getMapsDirectory(); - final String canonicalMapsDir = IOUtils.getCanonicalPath(mapsDirectory) + File.separator; + final String canonicalMapsDir = IOUtils.getCanonicalPath(mapsDirectory) + "/"; final String mapPath; final File baseDir; if (canonicalFile.startsWith(canonicalMapsDir)) { Modified: trunk/src/utils/src/main/java/net/sf/gridarta/utils/IOUtils.java =================================================================== --- trunk/src/utils/src/main/java/net/sf/gridarta/utils/IOUtils.java 2014-12-07 21:54:19 UTC (rev 9731) +++ trunk/src/utils/src/main/java/net/sf/gridarta/utils/IOUtils.java 2014-12-17 19:20:52 UTC (rev 9732) @@ -197,11 +197,13 @@ */ @NotNull public static String getCanonicalPath(@NotNull final File file) { + String path; try { - return file.getCanonicalPath(); + path = file.getCanonicalPath(); } catch (final IOException ignored) { - return file.getAbsolutePath(); + path = file.getAbsolutePath(); } + return path.replace(File.separatorChar, '/'); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-12-07 21:54:32
|
Revision: 9731 http://sourceforge.net/p/gridarta/code/9731 Author: akirschbaum Date: 2014-12-07 21:54:19 +0000 (Sun, 07 Dec 2014) Log Message: ----------- Define "rendererFactory" variable in plugins when run from command line. Modified Paths: -------------- trunk/src/atrinik/ChangeLog trunk/src/crossfire/ChangeLog trunk/src/daimonin/ChangeLog trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GridartaEditor.java trunk/src/project/src/main/java/net/sf/gridarta/project/ProjectModel.java Modified: trunk/src/atrinik/ChangeLog =================================================================== --- trunk/src/atrinik/ChangeLog 2014-12-07 11:07:51 UTC (rev 9730) +++ trunk/src/atrinik/ChangeLog 2014-12-07 21:54:19 UTC (rev 9731) @@ -1,3 +1,8 @@ +2014-12-07 Andreas Kirschbaum + + * Define "rendererFactory" variable in plugins when run from + command line. Makes WorldMaker plugin work again. + 2014-11-16 Alex Tokar * Remove support for 'no_priest' map attribute; add support for Modified: trunk/src/crossfire/ChangeLog =================================================================== --- trunk/src/crossfire/ChangeLog 2014-12-07 11:07:51 UTC (rev 9730) +++ trunk/src/crossfire/ChangeLog 2014-12-07 21:54:19 UTC (rev 9731) @@ -1,3 +1,8 @@ +2014-12-07 Andreas Kirschbaum + + * Define "rendererFactory" variable in plugins when run from + command line. Makes WorldMaker plugin work again. + 2014-10-07 Andreas Kirschbaum * Browse archetypes: Add option to save the current selection as a Modified: trunk/src/daimonin/ChangeLog =================================================================== --- trunk/src/daimonin/ChangeLog 2014-12-07 11:07:51 UTC (rev 9730) +++ trunk/src/daimonin/ChangeLog 2014-12-07 21:54:19 UTC (rev 9731) @@ -1,3 +1,8 @@ +2014-12-07 Andreas Kirschbaum + + * Define "rendererFactory" variable in plugins when run from + command line. Makes WorldMaker plugin work again. + 2014-10-07 Andreas Kirschbaum * Browse archetypes: Add option to save the current selection as a Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-12-07 11:07:51 UTC (rev 9730) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GUIMainControl.java 2014-12-07 21:54:19 UTC (rev 9731) @@ -199,7 +199,6 @@ import net.sf.gridarta.model.settings.DefaultVolatileSettings; import net.sf.gridarta.model.settings.EditorSettings; import net.sf.gridarta.model.settings.VolatileSettings; -import net.sf.gridarta.plugin.PluginParameters; import net.sf.gridarta.project.ProjectModel; import net.sf.gridarta.textedit.scripteditor.MenuEntries; import net.sf.gridarta.textedit.scripteditor.ScriptEditControl; @@ -401,9 +400,7 @@ final GameObjectTab<G, A, R> gameObjectTab = new GameObjectTab<G, A, R>("gameObject", gameObjectAttributesControl, Location.BOTTOM, false, 0, true); final ReplaceDialogManager<G, A, R> replaceDialogManager = new ReplaceDialogManager<G, A, R>(parent, copyBuffer, objectChooser, mapViewManager, projectModel.getFaceObjectProviders(), insertionModeSet); final PluginParameterViewFactory<G, A, R> pluginParameterViewFactory = new PluginParameterViewFactory<G, A, R>(projectModel.getArchetypeSet(), gameObjectAttributesModel, objectChooser, projectModel.getMapManager(), projectModel.getFaceObjectProviders(), projectModel.getPathManager()); - final PluginParameters pluginParameters = projectModel.newPluginParameters(); - pluginParameters.addPluginParameter("rendererFactory", rendererFactory); - final PluginController<G, A, R> pluginControl = new PluginController<G, A, R>(filterControl, projectModel.getPluginModel(), pluginParameters, parent, pluginParameterViewFactory, scriptsFile, resourceIcons); + final PluginController<G, A, R> pluginControl = new PluginController<G, A, R>(filterControl, projectModel.getPluginModel(), projectModel.newPluginParameters(rendererFactory), parent, pluginParameterViewFactory, scriptsFile, resourceIcons); final EditorAction mainActions = new MainActions<G, A, R>(findDialogManager, replaceDialogManager, mainViewFrame, mapViewSettings, projectModel.getArchetypeSet(), copyBuffer, objectChooser, projectModel.getMapManager(), insertionModeSet); final EditorAction mapCursorActions = new MapCursorActions<G, A, R>(mapActions); final Action moveSquareDownAction = editorActionManager.createAction("moveSquareDown", "Selected Square View", new MoveSquareDownAction<G, A, R>(selectedSquareModel, projectModel.getMapManager())); Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GridartaEditor.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GridartaEditor.java 2014-12-07 11:07:51 UTC (rev 9730) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/maincontrol/GridartaEditor.java 2014-12-07 21:54:19 UTC (rev 9731) @@ -38,14 +38,20 @@ import net.sf.gridarta.gui.dialog.errorview.ConsoleErrorView; import net.sf.gridarta.gui.dialog.errorview.DefaultErrorView; import net.sf.gridarta.gui.dialog.prefs.GUIPreferences; +import net.sf.gridarta.gui.filter.DefaultFilterControl; +import net.sf.gridarta.gui.filter.FilterControl; +import net.sf.gridarta.gui.map.renderer.RendererFactory; import net.sf.gridarta.mainactions.DefaultExiter; import net.sf.gridarta.model.archetype.Archetype; import net.sf.gridarta.model.configsource.ConfigSource; import net.sf.gridarta.model.configsource.ConfigSourceFactory; import net.sf.gridarta.model.configsource.DefaultConfigSourceFactory; import net.sf.gridarta.model.errorview.ErrorView; +import net.sf.gridarta.model.filter.NamedFilter; import net.sf.gridarta.model.gameobject.GameObject; import net.sf.gridarta.model.maparchobject.MapArchObject; +import net.sf.gridarta.model.mapviewsettings.DefaultMapViewSettings; +import net.sf.gridarta.model.mapviewsettings.MapViewSettings; import net.sf.gridarta.model.settings.DefaultEditorSettings; import net.sf.gridarta.model.settings.EditorSettings; import net.sf.gridarta.model.settings.ProjectSettings; @@ -194,7 +200,7 @@ final ProjectModel<G, A, R> projectModel = new ProjectModel<G, A, R>(errorView, projectSettings, editorFactory, resourceIcons, configSource); if (plugin != null) { - returnCode = runPlugin(plugin, errorView, args2, projectModel); + returnCode = runPlugin(plugin, errorView, args2, editorFactory, projectModel, resourceIcons); } else { try { switch (mode) { @@ -239,13 +245,19 @@ * @param plugin the name of the plugin to run * @param errorView the error view to add errors to * @param args the arguments for the plugin + * @param editorFactory the editor factory to use * @param projectModel the project model to use + * @param resourceIcons the gui utils to use * @return return code suitable for passing to {@link System#exit(int)} */ - private int runPlugin(@NotNull final String plugin, final ErrorView errorView, final Iterable<String> args, @NotNull final ProjectModel<G, A, R> projectModel) { + private int runPlugin(@NotNull final String plugin, final ErrorView errorView, final Iterable<String> args, @NotNull final EditorFactory<G, A, R> editorFactory, @NotNull final ProjectModel<G, A, R> projectModel, @NotNull final ResourceIcons resourceIcons) { checkForErrors(errorView); waitDialog(errorView); - return new PluginExecutor<G, A, R>(projectModel.getPluginModel(), projectModel.newPluginParameters()).executePlugin(plugin, args); + final NamedFilter defaultNamedFilterList = new NamedFilter(projectModel.getGameObjectMatchers().getFilters()); + final FilterControl<G, A, R> filterControl = new DefaultFilterControl<G, A, R>(defaultNamedFilterList); + final MapViewSettings mapViewSettings = new DefaultMapViewSettings(); + final RendererFactory<G, A, R> rendererFactory = editorFactory.newRendererFactory(mapViewSettings, filterControl, projectModel.getGameObjectParser(), projectModel.getFaceObjectProviders(), resourceIcons, projectModel.getSmoothFaces()); + return new PluginExecutor<G, A, R>(projectModel.getPluginModel(), projectModel.newPluginParameters(rendererFactory)).executePlugin(plugin, args); } /** Modified: trunk/src/project/src/main/java/net/sf/gridarta/project/ProjectModel.java =================================================================== --- trunk/src/project/src/main/java/net/sf/gridarta/project/ProjectModel.java 2014-12-07 11:07:51 UTC (rev 9730) +++ trunk/src/project/src/main/java/net/sf/gridarta/project/ProjectModel.java 2014-12-07 21:54:19 UTC (rev 9731) @@ -593,10 +593,11 @@ /** * Creates a new {@link PluginParameters} instance for this project model. + * @param rendererFactory the renderer factory to include * @return the plugin parameters; may be modified */ @NotNull - public PluginParameters newPluginParameters() { + public PluginParameters newPluginParameters(@NotNull final Object rendererFactory) { final PluginParameters pluginParameters = new PluginParameters(); pluginParameters.addPluginParameter("archetypeSet", archetypeSet); pluginParameters.addPluginParameter("projectSettings", projectSettings); @@ -604,6 +605,7 @@ pluginParameters.addPluginParameter("mapManager", mapManager); pluginParameters.addPluginParameter("validators", validators); pluginParameters.addPluginParameter("gameObjectMatchers", gameObjectMatchers); + pluginParameters.addPluginParameter("rendererFactory", rendererFactory); return pluginParameters; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-12-07 11:07:54
|
Revision: 9730 http://sourceforge.net/p/gridarta/code/9730 Author: akirschbaum Date: 2014-12-07 11:07:51 +0000 (Sun, 07 Dec 2014) Log Message: ----------- Simplify code. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapPathParameter.java Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java 2014-12-07 10:56:49 UTC (rev 9729) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java 2014-12-07 11:07:51 UTC (rev 9730) @@ -65,10 +65,9 @@ * @noinspection TypeMayBeWeakened */ public MapPathParameterView(@NotNull final Component parent, @NotNull final MapPathParameter<G, A, R> parameter, @NotNull final PathManager pathManager) { - final String value = parameter.getValueOrNull(); - final MapFile mapFile = pathManager.getMapFile(MapPathUtils.newAbsoluteMapPath("/" + value)); - this.value = new JFileField(parent, "mapPathPluginParameter", mapFile.getMapsDir(), mapFile.getFile(), JFileChooser.FILES_AND_DIRECTORIES); - this.value.addDocumentListener(new DocumentListener() { + final MapFile mapFile = pathManager.getMapFile(MapPathUtils.newAbsoluteMapPath("/" + parameter.getValue())); + value = new JFileField(parent, "mapPathPluginParameter", mapFile.getMapsDir(), mapFile.getFile(), JFileChooser.FILES_AND_DIRECTORIES); + value.addDocumentListener(new DocumentListener() { @Override public void insertUpdate(final DocumentEvent e) { @@ -90,7 +89,7 @@ */ private void setFile() { try { - parameter.setFile(MapPathParameterView.this.value.getFile()); + parameter.setFile(value.getFile()); } catch (final InvalidValueException ex) { JOptionPane.showMessageDialog(parent, "Invalid file: " + ex.getMessage()); } Modified: trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapPathParameter.java =================================================================== --- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapPathParameter.java 2014-12-07 10:56:49 UTC (rev 9729) +++ trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/parameter/MapPathParameter.java 2014-12-07 11:07:51 UTC (rev 9730) @@ -88,7 +88,7 @@ */ @NotNull @Override - public String getValue() throws InvalidValueException { + public String getValue() { return getStringValue(); } @@ -98,11 +98,7 @@ @Nullable @Override public String getValueOrNull() { - try { - return getValue(); - } catch (final InvalidValueException ignored) { - return null; - } + return getValue(); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-12-07 10:56:54
|
Revision: 9729 http://sourceforge.net/p/gridarta/code/9729 Author: akirschbaum Date: 2014-12-07 10:56:49 +0000 (Sun, 07 Dec 2014) Log Message: ----------- Add tooltip to all JFileField instances. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/JFileField.java trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_de.properties trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_fr.properties trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_sv.properties Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java 2014-12-07 10:50:32 UTC (rev 9728) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/parameter/MapPathParameterView.java 2014-12-07 10:56:49 UTC (rev 9729) @@ -67,7 +67,7 @@ public MapPathParameterView(@NotNull final Component parent, @NotNull final MapPathParameter<G, A, R> parameter, @NotNull final PathManager pathManager) { final String value = parameter.getValueOrNull(); final MapFile mapFile = pathManager.getMapFile(MapPathUtils.newAbsoluteMapPath("/" + value)); - this.value = new JFileField(parent, null, mapFile.getMapsDir(), mapFile.getFile(), JFileChooser.FILES_AND_DIRECTORIES); + this.value = new JFileField(parent, "mapPathPluginParameter", mapFile.getMapsDir(), mapFile.getFile(), JFileChooser.FILES_AND_DIRECTORIES); this.value.addDocumentListener(new DocumentListener() { @Override Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/JFileField.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/JFileField.java 2014-12-07 10:50:32 UTC (rev 9728) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/utils/JFileField.java 2014-12-07 10:56:49 UTC (rev 9729) @@ -30,6 +30,7 @@ import javax.swing.JTextField; import javax.swing.event.DocumentListener; import net.sf.gridarta.model.io.PathManagerUtils; +import net.sf.gridarta.utils.ActionBuilderUtils; import net.sf.japi.swing.action.ActionBuilder; import net.sf.japi.swing.action.ActionBuilderFactory; import net.sf.japi.swing.action.ActionMethod; @@ -82,27 +83,20 @@ /** * Creates a new instance. * @param parent the parent component - * @param key the resource key for showing tooltips; {@code null} disables - * tooltips + * @param key the resource key for showing tooltips * @param baseDir the base directory; when non-{@code null} the contents of * the text input field are relative to this directory * @param file the currently selected file * @param fileSelectionMode the file selection mode for the file chooser */ - public JFileField(@NotNull final Component parent, @Nullable final String key, @Nullable final File baseDir, @NotNull final File file, final int fileSelectionMode) { + public JFileField(@NotNull final Component parent, @NotNull final String key, @Nullable final File baseDir, @NotNull final File file, final int fileSelectionMode) { this.parent = parent; this.baseDir = baseDir; textField = new JTextField(getRelativeFile(file), 20); fileChooser.setFileSelectionMode(fileSelectionMode); + textField.setToolTipText(ActionBuilderUtils.getString(ACTION_BUILDER, key + ".shortdescription")); - if (key != null) { - final String tooltip = ACTION_BUILDER.getString(key + ".shortdescription"); - if (tooltip != null) { - textField.setToolTipText(tooltip); - } - } - final AbstractButton fileChooserButton = new JButton(ACTION_BUILDER.createAction(false, "fileChooserButton", this)); fileChooserButton.setMargin(new Insets(0, 0, 0, 0)); Modified: trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties =================================================================== --- trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties 2014-12-07 10:50:32 UTC (rev 9728) +++ trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties 2014-12-07 10:56:49 UTC (rev 9729) @@ -1834,7 +1834,9 @@ pluginEditorRunScript.text=Run plugin script... pluginEditorRunScript.shortdescription=Executes the plugin script. +mapPathPluginParameter.shortdescription=The filename of the plugin parameter. + # Plugin View pluginViewNoScripts=no scripts available pluginViewConsoleTitle=Beanshell scripts I/O Console Modified: trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_de.properties =================================================================== --- trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_de.properties 2014-12-07 10:50:32 UTC (rev 9728) +++ trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_de.properties 2014-12-07 10:56:49 UTC (rev 9729) @@ -1580,7 +1580,9 @@ pluginEditorRunScript.text=Editor-Script starten pluginEditorRunScript.shortdescription=F\xFChrt das Editor-Script aus. +mapPathPluginParameter.shortdescription=Der Dateiname des Parameters. + # Plugin View pluginViewNoScripts=Keine Editor-Scripte vorhanden pluginViewConsoleTitle=Editor-Script-Konsole Modified: trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_fr.properties =================================================================== --- trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_fr.properties 2014-12-07 10:50:32 UTC (rev 9728) +++ trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_fr.properties 2014-12-07 10:56:49 UTC (rev 9729) @@ -1567,7 +1567,9 @@ #pluginEditorRunScript.text= #pluginEditorRunScript.shortdescription= +#mapPathPluginParameter.shortdescription= + # Plugin View #pluginViewNoScripts= #pluginViewConsoleTitle= Modified: trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_sv.properties =================================================================== --- trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_sv.properties 2014-12-07 10:50:32 UTC (rev 9728) +++ trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_sv.properties 2014-12-07 10:56:49 UTC (rev 9729) @@ -1566,7 +1566,9 @@ #pluginEditorRunScript.text= #pluginEditorRunScript.shortdescription= +#mapPathPluginParameter.shortdescription= + # Plugin View #pluginViewNoScripts= #pluginViewConsoleTitle= This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-12-07 10:50:40
|
Revision: 9728 http://sourceforge.net/p/gridarta/code/9728 Author: akirschbaum Date: 2014-12-07 10:50:32 +0000 (Sun, 07 Dec 2014) Log Message: ----------- Add comments. Modified Paths: -------------- trunk/src/utils/src/main/java/net/sf/gridarta/utils/ActionBuilderUtils.java Modified: trunk/src/utils/src/main/java/net/sf/gridarta/utils/ActionBuilderUtils.java =================================================================== --- trunk/src/utils/src/main/java/net/sf/gridarta/utils/ActionBuilderUtils.java 2014-12-07 10:06:19 UTC (rev 9727) +++ trunk/src/utils/src/main/java/net/sf/gridarta/utils/ActionBuilderUtils.java 2014-12-07 10:50:32 UTC (rev 9728) @@ -40,7 +40,8 @@ * Returns the value of a key as a {@code boolean}. * @param actionBuilder the action builder to query * @param key the key to query - * @return the value + * @return the value or {@code false} if the key does not exist or if the + * value is invalid */ public static boolean getBoolean(@NotNull final ActionBuilder actionBuilder, @NotNull final String key) { final String value = actionBuilder.getString(key); @@ -82,6 +83,7 @@ * @param actionBuilder the action builder to query * @param key the key to query * @return the value + * @throws MissingResourceException if the key does not exist */ @NotNull public static String getString(@NotNull final ActionBuilder actionBuilder, @NotNull final String key) { @@ -98,6 +100,7 @@ * @param key the key to query * @param args the arguments to replace in the format string * @return the value + * @throws MissingResourceException if the key does not exist */ @NotNull public static String format(@NotNull final ActionBuilder actionBuilder, @NotNull final String key, @NotNull final Object... args) { @@ -113,6 +116,7 @@ * @param actionBuilder the action builder to query * @param key the resource key * @return the label + * @throws MissingResourceException if the key does not exist * @noinspection TypeMayBeWeakened */ @NotNull This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-12-07 10:06:31
|
Revision: 9727 http://sourceforge.net/p/gridarta/code/9727 Author: akirschbaum Date: 2014-12-07 10:06:19 +0000 (Sun, 07 Dec 2014) Log Message: ----------- Tentative fix for incorrect map file names. Modified Paths: -------------- trunk/src/model/src/main/java/net/sf/gridarta/model/io/PathManager.java Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/io/PathManager.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/io/PathManager.java 2014-12-05 08:51:37 UTC (rev 9726) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/io/PathManager.java 2014-12-07 10:06:19 UTC (rev 9727) @@ -83,7 +83,7 @@ public MapFile getMapFile(@NotNull final File file) { final String canonicalFile = IOUtils.getCanonicalPath(file); final File mapsDirectory = projectSettings.getMapsDirectory(); - final String canonicalMapsDir = IOUtils.getCanonicalPath(mapsDirectory) + "/"; + final String canonicalMapsDir = IOUtils.getCanonicalPath(mapsDirectory) + File.separator; final String mapPath; final File baseDir; if (canonicalFile.startsWith(canonicalMapsDir)) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-12-05 08:51:43
|
Revision: 9726 http://sourceforge.net/p/gridarta/code/9726 Author: akirschbaum Date: 2014-12-05 08:51:37 +0000 (Fri, 05 Dec 2014) Log Message: ----------- Simplify code. Modified Paths: -------------- trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/AbstractFlatMapRenderer.java trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/SimpleFlatMapRenderer.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractIsoMapRenderer.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractMapRenderer.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractSimpleIsoMapRenderer.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/MapRenderer.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/mapuserlistener/MapMouseListener.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/misc/StatusBar.java trunk/src/gridarta/src/test/java/net/sf/gridarta/gui/map/renderer/TestMapRenderer.java Modified: trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/AbstractFlatMapRenderer.java =================================================================== --- trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/AbstractFlatMapRenderer.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/AbstractFlatMapRenderer.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -486,27 +486,21 @@ /** * {@inheritDoc} */ - @Nullable @Override - public Point getSquareLocationAt(@NotNull final Point point, @Nullable final Point retPoint) { + public boolean getSquareLocationAt(@NotNull final Point point, @NotNull final Point retPoint) { final int x = point.x - borderOffset.x; final int y = point.y - borderOffset.y; if (x < 0 || y < 0) { - return null; + return false; } final int xm = x / IGUIConstants.SQUARE_WIDTH; final int ym = y / IGUIConstants.SQUARE_HEIGHT; if (xm >= mapSize.getWidth() || ym >= mapSize.getHeight()) { - return null; + return false; } - if (retPoint == null) { - return new Point(xm, ym); - } - retPoint.setLocation(xm, ym); - return retPoint; - + return true; } /** Modified: trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/SimpleFlatMapRenderer.java =================================================================== --- trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/SimpleFlatMapRenderer.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/SimpleFlatMapRenderer.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -35,7 +35,6 @@ import net.sf.gridarta.var.crossfire.model.gameobject.GameObject; import net.sf.gridarta.var.crossfire.model.maparchobject.MapArchObject; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * Renders maps without MapGrid. @@ -90,9 +89,8 @@ /** * {@inheritDoc} */ - @Nullable @Override - public Point getSquareLocationAt(@NotNull final Point point, @Nullable final Point retPoint) { + public boolean getSquareLocationAt(@NotNull final Point point, @NotNull final Point retPoint) { throw new IllegalStateException(); } Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractIsoMapRenderer.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractIsoMapRenderer.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractIsoMapRenderer.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -452,14 +452,10 @@ final Point posDL = new Point(posUL.x, posUL.y + visDim.height); final Point posDR = new Point(posUR.x, posDL.y); // Calculate map positions of corners and from them properties of Rectangle - final Point mapPosUL = getSquareLocationAt(posUL, tmpPoint); - rec.x = mapPosUL == null ? 0 : mapPosUL.x; - final Point mapPosUR = getSquareLocationAt(posUR, tmpPoint); - rec.y = mapPosUR == null ? 0 : mapPosUR.y; - final Point mapPosDL = getSquareLocationAt(posDL, tmpPoint); - rec.height = mapPosDL == null ? mapSize.getHeight() - rec.y : mapPosDL.y - rec.y + 1; - final Point mapPosDR = getSquareLocationAt(posDR, tmpPoint); - rec.width = mapPosDR == null ? mapSize.getWidth() - rec.x : mapPosDR.x - rec.x + 1; + rec.x = getSquareLocationAt(posUL, tmpPoint) ? tmpPoint.x : 0; + rec.y = getSquareLocationAt(posUR, tmpPoint) ? tmpPoint.y : 0; + rec.height = getSquareLocationAt(posDL, tmpPoint) ? tmpPoint.y - rec.y + 1 : mapSize.getHeight() - rec.y; + rec.width = getSquareLocationAt(posDR, tmpPoint) ? tmpPoint.x - rec.x + 1 : mapSize.getWidth() - rec.x; return rec; } @@ -739,9 +735,8 @@ /** * {@inheritDoc} */ - @Nullable @Override - public Point getSquareLocationAt(@NotNull final Point point, @Nullable final Point retPoint) { + public boolean getSquareLocationAt(@NotNull final Point point, @NotNull final Point retPoint) { final int x0 = point.x - origin.x; final int y0 = point.y - origin.y; final int yt = (2 * y0 - x0) / 2; @@ -749,14 +744,11 @@ final int xm = xt / isoMapSquareInfo.getXLen2(); final int ym = yt / isoMapSquareInfo.getYLen2() / 2; if (xm < 0 || xm >= mapSize.getWidth() || ym < 0 || ym >= mapSize.getHeight()) { - return null; + return false; } - if (retPoint != null) { - retPoint.setLocation(xm, ym); - return retPoint; - } - return new Point(xm, ym); + retPoint.setLocation(xm, ym); + return true; } /** Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractMapRenderer.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractMapRenderer.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractMapRenderer.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -119,12 +119,11 @@ @Nullable @Override public String getToolTipText(@NotNull final MouseEvent event) { - final Point mapLocation = getSquareLocationAt(event.getPoint(), tmpPoint); - if (mapLocation == null) { + if (!getSquareLocationAt(event.getPoint(), tmpPoint)) { return null; } - final MapSquare<G, A, R> mapSquare = mapModel.getMapSquare(mapLocation); + final MapSquare<G, A, R> mapSquare = mapModel.getMapSquare(tmpPoint); final ToolTipAppender<G, A, R> toolTipAppender = new ToolTipAppender<G, A, R>(gameObjectParser); for (final G gameObject : mapSquare.reverse()) { Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractSimpleIsoMapRenderer.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractSimpleIsoMapRenderer.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractSimpleIsoMapRenderer.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -33,7 +33,6 @@ import net.sf.gridarta.model.mapmodel.MapModel; import net.sf.gridarta.utils.Size2D; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * Abstract base class for ISO {@link MapRenderer MapRenderers}. @@ -129,9 +128,8 @@ /** * {@inheritDoc} */ - @Nullable @Override - public Point getSquareLocationAt(@NotNull final Point point, @Nullable final Point retPoint) { + public boolean getSquareLocationAt(@NotNull final Point point, @NotNull final Point retPoint) { throw new IllegalStateException(); } Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/MapRenderer.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/MapRenderer.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/MapRenderer.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -27,7 +27,6 @@ import java.io.File; import java.io.IOException; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * Common interface for renderers of map control instances. @@ -43,15 +42,12 @@ BufferedImage getFullImage(); /** - * Returns the map location at the given point or null if no map location is - * at the point. + * Returns the map location at the given point. * @param point the coordinates in the renderer view - * @param retPoint if {@code (retPoint != null)} this point will be returned - * otherwise a new point will be created - * @return the map location + * @param retPoint this point will be returned + * @return whether the location is within the map bounds */ - @Nullable - Point getSquareLocationAt(@NotNull Point point, @Nullable Point retPoint); + boolean getSquareLocationAt(@NotNull Point point, @NotNull Point retPoint); /** * Repaint the view because some view parameters may have changed. Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/mapuserlistener/MapMouseListener.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/mapuserlistener/MapMouseListener.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/mapuserlistener/MapMouseListener.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -188,7 +188,7 @@ */ @Nullable private Point getMapLocation(@NotNull final MouseEvent event) { - return renderer.getSquareLocationAt(event.getPoint(), tmpPoint); + return renderer.getSquareLocationAt(event.getPoint(), tmpPoint) ? tmpPoint : null; } } Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/misc/StatusBar.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/misc/StatusBar.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/misc/StatusBar.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -376,10 +376,9 @@ */ private void mousePosChanged(@NotNull final MouseEvent e) { final MapRenderer renderer = (MapRenderer) e.getSource(); - final Point mouseMap = renderer.getSquareLocationAt(e.getPoint(), mouseMapTmp); - if (mouseMap != null) { - final int mouseMapX = mouseMap.x; - final int mouseMapY = mouseMap.y; + if (renderer.getSquareLocationAt(e.getPoint(), mouseMapTmp)) { + final int mouseMapX = mouseMapTmp.x; + final int mouseMapY = mouseMapTmp.y; mouse.setText(ACTION_BUILDER.format("statusMouseOn", mouseMapX, mouseMapY)); } else { mouse.setText(ACTION_BUILDER.format("statusMouseOff")); Modified: trunk/src/gridarta/src/test/java/net/sf/gridarta/gui/map/renderer/TestMapRenderer.java =================================================================== --- trunk/src/gridarta/src/test/java/net/sf/gridarta/gui/map/renderer/TestMapRenderer.java 2014-11-29 15:07:50 UTC (rev 9725) +++ trunk/src/gridarta/src/test/java/net/sf/gridarta/gui/map/renderer/TestMapRenderer.java 2014-12-05 08:51:37 UTC (rev 9726) @@ -27,7 +27,6 @@ import net.sf.gridarta.model.maparchobject.TestMapArchObject; import net.sf.gridarta.model.mapmodel.MapModel; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * A {@link MapRenderer} implementation for testing purposes. @@ -60,9 +59,8 @@ /** * {@inheritDoc} */ - @Nullable @Override - public Point getSquareLocationAt(@NotNull final Point point, @Nullable final Point retPoint) { + public boolean getSquareLocationAt(@NotNull final Point point, @NotNull final Point retPoint) { throw new AssertionError(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-11-29 15:07:57
|
Revision: 9725 http://sourceforge.net/p/gridarta/code/9725 Author: akirschbaum Date: 2014-11-29 15:07:50 +0000 (Sat, 29 Nov 2014) Log Message: ----------- Fix incorrect HTML tag. Modified Paths: -------------- trunk/src/crossfire/src/main/resources/resource/HelpFiles/map_otcs.html Modified: trunk/src/crossfire/src/main/resources/resource/HelpFiles/map_otcs.html =================================================================== --- trunk/src/crossfire/src/main/resources/resource/HelpFiles/map_otcs.html 2014-11-29 15:04:27 UTC (rev 9724) +++ trunk/src/crossfire/src/main/resources/resource/HelpFiles/map_otcs.html 2014-11-29 15:07:50 UTC (rev 9725) @@ -58,22 +58,21 @@ However, this arch syntax is so cryptic and complicated sometimes, that it just isn't readable unless you've got lots of practice. </LI> - <P> - <LI><b>The attribute dialog</b> is there to help you - <br> - <br> - Select an object on the map and double click on it in the - <A HREF="tut_frames.html">Map-ArchPanel</A> (bottom-right window), - or press the "attributes" button. You'll see a popup window: The - so-called Attribute Dialog. This is an interface which tries to - interpret the Crossfire arch syntax and present it in a user - friendly form. This can help you to learn how things work! The <Help> - button opens a type description, while the various <?> buttons - offer explanations for each attribute. - <br> - <P> - <IMG SRC="attrib_window.jpg" WIDTH="298" HEIGHT="352" ALIGN="CENTER"> - </P> + <LI><b>The attribute dialog</b> is there to help you + <br> + <br> + Select an object on the map and double click on it in the + <A HREF="tut_frames.html">Map-ArchPanel</A> (bottom-right window), or + press the "attributes" button. You'll see a popup window: The so-called + Attribute Dialog. This is an interface which tries to interpret the + Crossfire arch syntax and present it in a user friendly form. This can + help you to learn how things work! The <Help> button opens a type + description, while the various <?> buttons offer explanations for + each attribute. + <br> + <P> + <IMG SRC="attrib_window.jpg" WIDTH="298" HEIGHT="352" ALIGN="CENTER"> + </P> </ol> <P>Apart from that, I recommend you to look at existing maps. Look how it's done, copy and experiment...</P> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-11-29 15:04:32
|
Revision: 9724 http://sourceforge.net/p/gridarta/code/9724 Author: akirschbaum Date: 2014-11-29 15:04:27 +0000 (Sat, 29 Nov 2014) Log Message: ----------- Ignore .svn and .git directories in file filters. Modified Paths: -------------- trunk/src/utils/src/main/java/net/sf/gridarta/utils/HideFileFilterProxy.java trunk/src/utils/src/test/java/net/sf/gridarta/utils/HideFileFilterProxyTest.java Modified: trunk/src/utils/src/main/java/net/sf/gridarta/utils/HideFileFilterProxy.java =================================================================== --- trunk/src/utils/src/main/java/net/sf/gridarta/utils/HideFileFilterProxy.java 2014-11-29 14:56:27 UTC (rev 9723) +++ trunk/src/utils/src/main/java/net/sf/gridarta/utils/HideFileFilterProxy.java 2014-11-29 15:04:27 UTC (rev 9724) @@ -28,9 +28,9 @@ import org.jetbrains.annotations.NotNull; /** - * A FileFilter that wraps another FileFilter and filters out CVS and .xvpics - * files. The description and other filtering are taken from the wrapped file - * filter. + * A FileFilter that wraps another FileFilter and filters out version control + * directories. The description and other filtering are taken from the wrapped + * file filter. * @author <a href="mailto:ch...@ri...">Christian Hujer</a> */ public class HideFileFilterProxy extends AbstractFileFilter { @@ -46,7 +46,7 @@ */ @NotNull @SuppressWarnings("StaticCollection") - private static final Collection<String> REJECTED_DIRECTORY_NAMES = Arrays.asList("CVS"); + private static final Collection<String> REJECTED_DIRECTORY_NAMES = Arrays.asList("CVS", ".git", ".svn"); /** * The rejected directory names. Modified: trunk/src/utils/src/test/java/net/sf/gridarta/utils/HideFileFilterProxyTest.java =================================================================== --- trunk/src/utils/src/test/java/net/sf/gridarta/utils/HideFileFilterProxyTest.java 2014-11-29 14:56:27 UTC (rev 9723) +++ trunk/src/utils/src/test/java/net/sf/gridarta/utils/HideFileFilterProxyTest.java 2014-11-29 15:04:27 UTC (rev 9724) @@ -23,6 +23,7 @@ import javax.swing.filechooser.FileFilter; import net.sf.japi.util.filter.file.AbstractFileFilter; import org.junit.Assert; +import org.junit.Ignore; import org.junit.Test; /** @@ -52,16 +53,19 @@ /** * Test case for {@link HideFileFilterProxy#accept(File)}. */ + @Ignore("Tests fail because filtered directories do not exist") @Test public void testAccept() { final FileFilter oUT1 = new HideFileFilterProxy(new MockFileFilter(true)); Assert.assertTrue(oUT1.accept(new File("foobar"))); - //Assert.assertFalse(oUT1.accept(new File("CVS"))); + Assert.assertFalse(oUT1.accept(new File("CVS"))); + Assert.assertFalse(oUT1.accept(new File(".git"))); Assert.assertFalse(oUT1.accept(new File(".svn"))); final FileFilter oUT2 = new HideFileFilterProxy(new MockFileFilter(false)); Assert.assertFalse(oUT2.accept(new File("foobar"))); - //Assert.assertFalse(oUT2.accept(new File("CVS"))); + Assert.assertFalse(oUT2.accept(new File("CVS"))); + Assert.assertFalse(oUT2.accept(new File(".git"))); Assert.assertFalse(oUT2.accept(new File(".svn"))); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-11-29 14:56:34
|
Revision: 9723 http://sourceforge.net/p/gridarta/code/9723 Author: akirschbaum Date: 2014-11-29 14:56:27 +0000 (Sat, 29 Nov 2014) Log Message: ----------- Suppress warning. Modified Paths: -------------- trunk/src/utils/src/main/java/net/sf/gridarta/utils/HideFileFilterProxy.java Modified: trunk/src/utils/src/main/java/net/sf/gridarta/utils/HideFileFilterProxy.java =================================================================== --- trunk/src/utils/src/main/java/net/sf/gridarta/utils/HideFileFilterProxy.java 2014-11-29 14:55:30 UTC (rev 9722) +++ trunk/src/utils/src/main/java/net/sf/gridarta/utils/HideFileFilterProxy.java 2014-11-29 14:56:27 UTC (rev 9723) @@ -45,6 +45,7 @@ * The default rejected directory names. */ @NotNull + @SuppressWarnings("StaticCollection") private static final Collection<String> REJECTED_DIRECTORY_NAMES = Arrays.asList("CVS"); /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-11-29 14:55:38
|
Revision: 9722 http://sourceforge.net/p/gridarta/code/9722 Author: akirschbaum Date: 2014-11-29 14:55:30 +0000 (Sat, 29 Nov 2014) Log Message: ----------- Rename identifiers. Modified Paths: -------------- trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/maincontrol/DefaultEditorFactory.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/panel/objectchooser/DefaultObjectChooser.java Modified: trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/maincontrol/DefaultEditorFactory.java =================================================================== --- trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/maincontrol/DefaultEditorFactory.java 2014-11-29 13:48:50 UTC (rev 9721) +++ trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/maincontrol/DefaultEditorFactory.java 2014-11-29 14:55:30 UTC (rev 9722) @@ -125,7 +125,7 @@ /** * The {@link Logger} for printing log messages. */ - private static final Category log = Logger.getLogger(DefaultEditorFactory.class); + private static final Category LOG = Logger.getLogger(DefaultEditorFactory.class); /** * {@inheritDoc} @@ -228,7 +228,7 @@ try { attributeRangeChecker.add(monsterMatcher, "level", "level", 1, 200); } catch (final InvalidCheckException ex) { - log.warn(ex.getMessage() + " for monster checker"); + LOG.warn(ex.getMessage() + " for monster checker"); } } return attributeRangeChecker; Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/panel/objectchooser/DefaultObjectChooser.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/panel/objectchooser/DefaultObjectChooser.java 2014-11-29 13:48:50 UTC (rev 9721) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/panel/objectchooser/DefaultObjectChooser.java 2014-11-29 14:55:30 UTC (rev 9722) @@ -222,21 +222,21 @@ final PickmapChooserModelListener<G, A, R> pickmapChooserModelListener = new PickmapChooserModelListener<G, A, R>() { @Override - public void activePickmapChanged(@Nullable final PickmapState<G, A, R> mapFile) { - if (activePickmapState != mapFile) { // ignore non-changes - updateActivePickmap(mapFile); + public void activePickmapChanged(@Nullable final PickmapState<G, A, R> pickmapState) { + if (activePickmapState != pickmapState) { // ignore non-changes + updateActivePickmap(pickmapState); } } @Override - public void pickmapReverted(@NotNull final PickmapState<G, A, R> mapFile) { - if (activePickmapState == mapFile) { // ignore unless active pickmap was reverted - updateActivePickmap(mapFile); + public void pickmapReverted(@NotNull final PickmapState<G, A, R> pickmapState) { + if (activePickmapState == pickmapState) { // ignore unless active pickmap was reverted + updateActivePickmap(pickmapState); } } @Override - public void pickmapModifiedChanged(final int index, final PickmapState<G, A, R> mapFile) { + public void pickmapModifiedChanged(final int index, final PickmapState<G, A, R> pickmapState) { // ignore } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-11-29 13:48:54
|
Revision: 9721 http://sourceforge.net/p/gridarta/code/9721 Author: akirschbaum Date: 2014-11-29 13:48:50 +0000 (Sat, 29 Nov 2014) Log Message: ----------- Display error message when tiling an unsaved map. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/actions/AttachTiledMaps.java trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/AbstractMapTilePane.java trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_de.properties trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_fr.properties trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_sv.properties Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/actions/AttachTiledMaps.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/actions/AttachTiledMaps.java 2014-11-29 13:33:58 UTC (rev 9720) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/actions/AttachTiledMaps.java 2014-11-29 13:48:50 UTC (rev 9721) @@ -34,6 +34,7 @@ import net.sf.gridarta.model.mapmodel.MapFile; import net.sf.gridarta.model.mapmodel.MapModel; import net.sf.gridarta.model.mapmodel.MapPathUtils; +import net.sf.gridarta.model.mapmodel.UnsavedMapException; import net.sf.gridarta.model.tiles.MapLink; import net.sf.gridarta.model.tiles.TileLink; import net.sf.gridarta.utils.Size2D; @@ -76,14 +77,14 @@ * @param tilePaths the new tile paths; empty slots will be filled in * @param mapsDirectory the maps directory * @param performAction whether the action should be performed - * @return whether the action was or can be performed * @throws CannotLoadMapFileException if a map file cannot be loaded * @throws CannotSaveMapFileException if a map file cannot be saved * @throws MapSizeMismatchException if adjacent map sizes do not match + * @throws UnsavedMapException if a map file is not saved */ - public boolean attachTiledMaps(@NotNull final MapModel<G, A, R> mapModel, @NotNull final String[] tilePaths, @NotNull final File mapsDirectory, final boolean performAction) throws CannotLoadMapFileException, CannotSaveMapFileException, MapSizeMismatchException { + public void attachTiledMaps(@NotNull final MapModel<G, A, R> mapModel, @NotNull final String[] tilePaths, @NotNull final File mapsDirectory, final boolean performAction) throws CannotLoadMapFileException, CannotSaveMapFileException, MapSizeMismatchException, UnsavedMapException { if (mapModel.getMapFile() == null) { - return false; // cannot update unsaved map + throw new UnsavedMapException(); // cannot update unsaved map } if (performAction) { @@ -111,8 +112,6 @@ } } } - - return true; } /** Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/AbstractMapTilePane.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/AbstractMapTilePane.java 2014-11-29 13:33:58 UTC (rev 9720) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/map/maptilepane/AbstractMapTilePane.java 2014-11-29 13:48:50 UTC (rev 9721) @@ -42,6 +42,7 @@ import net.sf.gridarta.model.mapmanager.MapManager; import net.sf.gridarta.model.mapmodel.MapFile; import net.sf.gridarta.model.mapmodel.MapModel; +import net.sf.gridarta.model.mapmodel.UnsavedMapException; import net.sf.gridarta.model.settings.ProjectSettings; import net.sf.gridarta.model.tiles.MapLink; import net.sf.gridarta.model.tiles.TileLink; @@ -252,6 +253,9 @@ } catch (final MapSizeMismatchException ex) { ACTION_BUILDER.showMessageDialog(this, "mapErrorDifferentSize", mapModel.getMapArchObject().getMapName(), ex.getMapSize().getWidth(), ex.getMapSize().getHeight(), ex.getMapFile(), ex.getOtherMapSize().getWidth(), ex.getOtherMapSize().getHeight()); return; + } catch (final UnsavedMapException ignored) { + ACTION_BUILDER.showMessageDialog(this, "mapErrorUnsaved"); + return; } for (int i = 0; i < tmpTilePaths.length; i++) { tilePaths[i].getTilePanel().setText(tmpTilePaths[i], true); Modified: trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties =================================================================== --- trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties 2014-11-29 13:33:58 UTC (rev 9720) +++ trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages.properties 2014-11-29 13:48:50 UTC (rev 9721) @@ -565,6 +565,8 @@ mapErrorFatalWrite.message=Can''t write map\nFatal Error:\n{0} mapErrorDifferentSize.title=Different size mapErrorDifferentSize.message=The maps you''re attaching have different sizes.\n{0} has size {1} \u00ef\u00bf\u00bd {2}, while\n{3} has size {4} \u00ef\u00bf\u00bd {5}.\nThis is hazardous for server and client and MUST BE FIXED! +mapErrorUnsaved.title=Unsaved map +mapErrorUnsaved.message=The map is not saved. mapTileRevert.shortdescription=Revert to stored path mapTileRevert.text= mapTileClear.shortdescription=Delete path Modified: trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_de.properties =================================================================== --- trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_de.properties 2014-11-29 13:33:58 UTC (rev 9720) +++ trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_de.properties 2014-11-29 13:48:50 UTC (rev 9721) @@ -543,6 +543,8 @@ mapErrorFatalWrite.message=Die Karte kann nicht gespeichert werden:\n{0} mapErrorDifferentSize.title=Unterschiedliche Gr\u00f6\u00dfe mapErrorDifferentSize.message=Die verbundenen Karten sind nicht gleich gro\u00df.\n{0} hat die Gr\u00f6\u00dfe {1} # {2},\n{3} hat die Gr\u00f6\u00dfe {4} # {5}.\nDies ist nicht erlaubt. +mapErrorUnsaved.title=Karte nicht gespeichert +mapErrorUnsaved.message=Die Karte ist nicht gespeichert. mapTileRevert.shortdescription=Pfad auf gespeicherten Pfad zur\u00fccksetzen mapTileRevert.text= mapTileClear.shortdescription=Pfad l\u00f6schen Modified: trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_fr.properties =================================================================== --- trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_fr.properties 2014-11-29 13:33:58 UTC (rev 9720) +++ trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_fr.properties 2014-11-29 13:48:50 UTC (rev 9721) @@ -537,6 +537,8 @@ #mapErrorFatalWrite.message= #mapErrorDifferentSize.title= #mapErrorDifferentSize.message= +#mapErrorUnsaved.title= +#mapErrorUnsaved.message= #mapTileRevert.shortdescription= mapTileRevert.text= #mapTileClear.shortdescription= Modified: trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_sv.properties =================================================================== --- trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_sv.properties 2014-11-29 13:33:58 UTC (rev 9720) +++ trunk/src/gridarta/src/main/resources/net/sf/gridarta/messages_sv.properties 2014-11-29 13:48:50 UTC (rev 9721) @@ -537,6 +537,8 @@ mapErrorFatalWrite.message=Kan inte skriva karta\n\u00d6desdigert fel:\n{0} mapErrorDifferentSize.title=Olika storlek mapErrorDifferentSize.message=Kartorna du kopplar ihop har olika storlek. {0} har storlek {1}x{2}, medan\n{3} har storlek {4}x{5}.\nDetta medf\u00f6r problem f\u00f6r servern och klienten och M\u00c5STE FIXAS! +#mapErrorUnsaved.title= +#mapErrorUnsaved.message= mapTileRevert.shortdescription=\u00c5terst\u00e4ll till lagrad s\u00f6kv\u00e4g mapTileRevert.text= mapTileClear.shortdescription=Radera s\u00f6kv\u00e4g This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-11-29 13:34:08
|
Revision: 9720 http://sourceforge.net/p/gridarta/code/9720 Author: akirschbaum Date: 2014-11-29 13:33:58 +0000 (Sat, 29 Nov 2014) Log Message: ----------- Suppress warnings. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/replace/ReplaceDialog.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/tokenmarker/Node.java Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/replace/ReplaceDialog.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/replace/ReplaceDialog.java 2014-11-29 13:33:30 UTC (rev 9719) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/replace/ReplaceDialog.java 2014-11-29 13:33:58 UTC (rev 9720) @@ -205,6 +205,7 @@ @NotNull private JTextComponent replaceDensityInput; + @SuppressWarnings("RedundantFieldInitialization") private int lastSelectedIndex = REPLACE_WITH_OBJECT_CHOOSER; /** Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/tokenmarker/Node.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/tokenmarker/Node.java 2014-11-29 13:33:30 UTC (rev 9719) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/tokenmarker/Node.java 2014-11-29 13:33:58 UTC (rev 9720) @@ -42,6 +42,7 @@ * The id for the key matching the path between the root node and this * node. */ + @SuppressWarnings("RedundantFieldInitialization") private byte id = Token.NULL; /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-11-29 13:33:35
|
Revision: 9719 http://sourceforge.net/p/gridarta/code/9719 Author: akirschbaum Date: 2014-11-29 13:33:30 +0000 (Sat, 29 Nov 2014) Log Message: ----------- Suppress warning. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/panel/gameobjectattributes/FaceTab.java Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/panel/gameobjectattributes/FaceTab.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/panel/gameobjectattributes/FaceTab.java 2014-11-29 13:24:31 UTC (rev 9718) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/panel/gameobjectattributes/FaceTab.java 2014-11-29 13:33:30 UTC (rev 9719) @@ -260,7 +260,7 @@ animated = false; } else { animated = gameObject.getAttributeInt(BaseObject.IS_ANIMATED) != 0; - //noinspection UnnecessaryParentheses + //noinspection UnnecessaryParentheses,DoubleNegation if (severity == Severity.DEFAULT && animated != (gameObject.getArchetype().getAttributeInt(BaseObject.IS_ANIMATED) != 0)) { severity = Severity.MODIFIED; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-11-29 13:24:36
|
Revision: 9718 http://sourceforge.net/p/gridarta/code/9718 Author: akirschbaum Date: 2014-11-29 13:24:31 +0000 (Sat, 29 Nov 2014) Log Message: ----------- Weaken types. Modified Paths: -------------- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginView.java trunk/src/model/src/main/java/net/sf/gridarta/model/gameobject/DefaultIsoGameObject.java trunk/src/model/src/main/java/net/sf/gridarta/model/validation/checks/ValidatorFactory.java trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/Plugin.java trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java Modified: trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginView.java =================================================================== --- trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginView.java 2014-11-29 12:36:55 UTC (rev 9717) +++ trunk/src/gridarta/src/main/java/net/sf/gridarta/gui/dialog/plugin/PluginView.java 2014-11-29 13:24:31 UTC (rev 9718) @@ -19,6 +19,7 @@ package net.sf.gridarta.gui.dialog.plugin; +import bsh.ConsoleInterface; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; @@ -206,7 +207,7 @@ } @NotNull - public PluginConsole createConsole(@NotNull final String name) { + public ConsoleInterface createConsole(@NotNull final String name) { showConsoleFrame(); final PluginConsole pluginConsole = new PluginConsole(); consolePane.addCloseableTab(name, pluginConsole, true); Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/gameobject/DefaultIsoGameObject.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/gameobject/DefaultIsoGameObject.java 2014-11-29 12:36:55 UTC (rev 9717) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/gameobject/DefaultIsoGameObject.java 2014-11-29 13:24:31 UTC (rev 9718) @@ -19,6 +19,7 @@ package net.sf.gridarta.model.gameobject; +import javax.swing.Icon; import javax.swing.ImageIcon; import net.sf.gridarta.model.anim.AnimationObjects; import net.sf.gridarta.model.archetype.Archetype; @@ -162,7 +163,7 @@ * @return the transparent face for this game object */ @NotNull - public ImageIcon getTransparentImage() { + public Icon getTransparentImage() { if (transFace == null) { transFace = faceObjectProviders.getTrans(this); } @@ -174,7 +175,7 @@ * @return the double face for this game object */ @NotNull - public ImageIcon getDoubleImage() { + public Icon getDoubleImage() { if (doubleFace == null) { doubleFace = faceObjectProviders.getDouble(this); } @@ -186,7 +187,7 @@ * @return the transparent face for this game object */ @NotNull - public ImageIcon getTransparentDoubleImage() { + public Icon getTransparentDoubleImage() { if (transDoubleFace == null) { transDoubleFace = faceObjectProviders.getTransDouble(this); } Modified: trunk/src/model/src/main/java/net/sf/gridarta/model/validation/checks/ValidatorFactory.java =================================================================== --- trunk/src/model/src/main/java/net/sf/gridarta/model/validation/checks/ValidatorFactory.java 2014-11-29 12:36:55 UTC (rev 9717) +++ trunk/src/model/src/main/java/net/sf/gridarta/model/validation/checks/ValidatorFactory.java 2014-11-29 13:24:31 UTC (rev 9718) @@ -99,7 +99,7 @@ * @throws NoSuchValidatorException if the validator cannot be created */ @NotNull - public Validator<G, A, R> newValidator(@NotNull final String spec) throws NoSuchValidatorException { + public Validator<G, A, R> newValidator(@NotNull final CharSequence spec) throws NoSuchValidatorException { final String[] args = StringUtils.PATTERN_WHITESPACE.split(spec); final Class<?> tmpClass; //noinspection ErrorNotRethrown Modified: trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/Plugin.java =================================================================== --- trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/Plugin.java 2014-11-29 12:36:55 UTC (rev 9717) +++ trunk/src/plugin/src/main/java/net/sf/gridarta/plugin/Plugin.java 2014-11-29 13:24:31 UTC (rev 9718) @@ -38,6 +38,7 @@ import net.sf.gridarta.plugin.parameter.StringParameter; import net.sf.gridarta.utils.EventListenerList2; import nu.xom.Element; +import nu.xom.Node; import org.apache.log4j.Category; import org.apache.log4j.Logger; import org.jetbrains.annotations.NotNull; @@ -475,7 +476,7 @@ * @return the plugin parameter in XML representation */ @NotNull - public Element toXML(@NotNull final PluginParameter<G, A, R, ?> pluginParameter) { + public Node toXML(@NotNull final PluginParameter<G, A, R, ?> pluginParameter) { return codec.toXML(pluginParameter); } Modified: trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java =================================================================== --- trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-11-29 12:36:55 UTC (rev 9717) +++ trunk/src/textedit/src/main/java/net/sf/gridarta/textedit/textarea/JEditTextArea.java 2014-11-29 13:24:31 UTC (rev 9718) @@ -46,6 +46,7 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.BadLocationException; +import javax.swing.text.PlainDocument; import javax.swing.text.Segment; import javax.swing.undo.AbstractUndoableEdit; import javax.swing.undo.CannotRedoException; @@ -489,7 +490,7 @@ * Returns the document this text area is editing. */ @NotNull - public SyntaxDocument getDocument() { + public PlainDocument getDocument() { return selection.getDocument(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-11-29 12:37:02
|
Revision: 9717 http://sourceforge.net/p/gridarta/code/9717 Author: akirschbaum Date: 2014-11-29 12:36:55 +0000 (Sat, 29 Nov 2014) Log Message: ----------- Simplify code. Modified Paths: -------------- trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/AbstractFlatMapRenderer.java Modified: trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/AbstractFlatMapRenderer.java =================================================================== --- trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/AbstractFlatMapRenderer.java 2014-11-29 12:12:28 UTC (rev 9716) +++ trunk/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/AbstractFlatMapRenderer.java 2014-11-29 12:36:55 UTC (rev 9717) @@ -489,27 +489,24 @@ @Nullable @Override public Point getSquareLocationAt(@NotNull final Point point, @Nullable final Point retPoint) { - final int mapWidth = mapSize.getWidth(); - final int mapHeight = mapSize.getHeight(); - final int xm; - final int ym; - if (point.x >= borderOffset.x && point.x < mapWidth * IGUIConstants.SQUARE_WIDTH + borderOffset.x && point.y >= borderOffset.y && point.y < mapHeight * IGUIConstants.SQUARE_HEIGHT + borderOffset.y) { - xm = (point.x - borderOffset.x) / IGUIConstants.SQUARE_WIDTH; - ym = (point.y - borderOffset.y) / IGUIConstants.SQUARE_HEIGHT; - } else { - xm = -1; - ym = -1; + final int x = point.x - borderOffset.x; + final int y = point.y - borderOffset.y; + if (x < 0 || y < 0) { + return null; } - - if (xm < 0 || xm >= mapWidth || ym < 0 || ym >= mapHeight) { + final int xm = x / IGUIConstants.SQUARE_WIDTH; + final int ym = y / IGUIConstants.SQUARE_HEIGHT; + if (xm >= mapSize.getWidth() || ym >= mapSize.getHeight()) { return null; } - if (retPoint != null) { - retPoint.setLocation(xm, ym); - return retPoint; + + if (retPoint == null) { + return new Point(xm, ym); } - return new Point(xm, ym); + retPoint.setLocation(xm, ym); + return retPoint; + } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 9716 http://sourceforge.net/p/gridarta/code/9716 Author: akirschbaum Date: 2014-11-29 12:12:28 +0000 (Sat, 29 Nov 2014) Log Message: ----------- Simplify code. Modified Paths: -------------- streams/tilestretching/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/AbstractFlatMapRenderer.java Modified: streams/tilestretching/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/AbstractFlatMapRenderer.java =================================================================== --- streams/tilestretching/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/AbstractFlatMapRenderer.java 2014-11-28 19:32:57 UTC (rev 9715) +++ streams/tilestretching/src/crossfire/src/main/java/net/sf/gridarta/var/crossfire/gui/map/renderer/AbstractFlatMapRenderer.java 2014-11-29 12:12:28 UTC (rev 9716) @@ -489,27 +489,24 @@ @Nullable @Override public Point getSquareLocationAt(@NotNull final Point point, @Nullable final Point retPoint) { - final int mapWidth = mapSize.getWidth(); - final int mapHeight = mapSize.getHeight(); - final int xm; - final int ym; - if (point.x >= borderOffset.x && point.x < mapWidth * IGUIConstants.SQUARE_WIDTH + borderOffset.x && point.y >= borderOffset.y && point.y < mapHeight * IGUIConstants.SQUARE_HEIGHT + borderOffset.y) { - xm = (point.x - borderOffset.x) / IGUIConstants.SQUARE_WIDTH; - ym = (point.y - borderOffset.y) / IGUIConstants.SQUARE_HEIGHT; - } else { - xm = -1; - ym = -1; + final int x = point.x - borderOffset.x; + final int y = point.y - borderOffset.y; + if (x < 0 || y < 0) { + return null; } - - if (xm < 0 || xm >= mapWidth || ym < 0 || ym >= mapHeight) { + final int xm = x / IGUIConstants.SQUARE_WIDTH; + final int ym = y / IGUIConstants.SQUARE_HEIGHT; + if (xm >= mapSize.getWidth() || ym >= mapSize.getHeight()) { return null; } - if (retPoint != null) { - retPoint.setLocation(xm, ym); - return retPoint; + + if (retPoint == null) { + return new Point(xm, ym); } - return new Point(xm, ym); + retPoint.setLocation(xm, ym); + return retPoint; + } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-11-28 19:33:04
|
Revision: 9715 http://sourceforge.net/p/gridarta/code/9715 Author: akirschbaum Date: 2014-11-28 19:32:57 +0000 (Fri, 28 Nov 2014) Log Message: ----------- Make variables final. Modified Paths: -------------- streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/StretchedImageFilter.java Modified: streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/StretchedImageFilter.java =================================================================== --- streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/StretchedImageFilter.java 2014-11-28 19:30:33 UTC (rev 9714) +++ streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/StretchedImageFilter.java 2014-11-28 19:32:57 UTC (rev 9715) @@ -206,22 +206,27 @@ final boolean flat = n != 0 || e != 0 || w != 0 || s != 0; - double eDark = 1.0; - double wDark = 1.0; + final double eDark; + final double wDark; if (w > e) { wDark = 1.0 - ((w - e) / 25.0); if (n > 0 || s > 0) { eDark = wDark; + } else { + eDark = 1.0; } - } - - if (e > w) { + } else if (e > w) { eDark = 1.0 + ((e - w) / 25.0); if (s > 0 || n > 0) { wDark = eDark; + } else { + wDark = 1.0; } + } else { + eDark = 1.0; + wDark = 1.0; } determineLine(0, 2, 10 - w + n, 22, 0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-11-28 19:30:45
|
Revision: 9714 http://sourceforge.net/p/gridarta/code/9714 Author: akirschbaum Date: 2014-11-28 19:30:33 +0000 (Fri, 28 Nov 2014) Log Message: ----------- Use proper type for variable. Modified Paths: -------------- streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/StretchedImageFilter.java Modified: streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/StretchedImageFilter.java =================================================================== --- streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/StretchedImageFilter.java 2014-11-28 19:28:22 UTC (rev 9713) +++ streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/StretchedImageFilter.java 2014-11-28 19:30:33 UTC (rev 9714) @@ -249,10 +249,10 @@ double kicker = 0.0; int y2 = destSy2; double kicker2 = 0.0; - int atLeastOne = 0; + boolean atLeastOne = false; - while ((destSlope != 0.0 && dx != destEx && dy != destEy) || (atLeastOne == 0 && destSlope == 0.0)) { - atLeastOne = 1; + while ((destSlope != 0.0 && dx != destEx && dy != destEy) || (!atLeastOne && destSlope == 0.0)) { + atLeastOne = true; if (kicker >= 1.0) { kicker -= 1.0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-11-28 19:28:27
|
Revision: 9713 http://sourceforge.net/p/gridarta/code/9713 Author: akirschbaum Date: 2014-11-28 19:28:22 +0000 (Fri, 28 Nov 2014) Log Message: ----------- Simplify code. Modified Paths: -------------- streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/StretchedImageFilter.java Modified: streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/StretchedImageFilter.java =================================================================== --- streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/StretchedImageFilter.java 2014-11-28 14:31:46 UTC (rev 9712) +++ streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/StretchedImageFilter.java 2014-11-28 19:28:22 UTC (rev 9713) @@ -140,14 +140,10 @@ } private void copyPixelToPixel(final int x, final int y, final int x2, final int y2, final double brightness, final int wd, final int ht, final int wd2, final int ht2, @NotNull final ColorModel model) { - if (x < 0 || y < 0 || x2 < 0 || y2 < 0) { + if (x < 0 || y < 0 || x2 < 0 || y2 < 0 || x >= wd || x2 >= wd2 || y >= ht || y2 >= ht2) { return; } - if (x >= wd || x2 >= wd2 || y >= ht || y2 >= ht2) { - return; - } - final int color = model.getRGB(pixels[y * wd + x]); final int a = (color >> 24) & 0xff; @@ -173,13 +169,8 @@ final int destH = maxDestY - minDestY; if (destH == 0) { - if (srcH == 0) { - copyPixelToPixel(srcX, minSrcY, destX, minDestY, brightness, wd, ht, wd2, ht2, model); - return; - } else { - copyPixelToPixel(srcX, (maxSrcY - minSrcY) / 2, destX, minDestY, brightness, wd, ht, wd2, ht2, model); - return; - } + copyPixelToPixel(srcX, srcH == 0 ? minSrcY : (maxSrcY - minSrcY) / 2, destX, minDestY, brightness, wd, ht, wd2, ht2, model); + return; } if (srcH == 0) { @@ -199,10 +190,8 @@ copyPixelToPixel(srcX, getY, destX, goY, brightness, wd, ht, wd2, ht2, model); } - if (extra) { - if (maxDestY + 1 < ht2) { - copyPixelToPixel(srcX, maxSrcY, destX, maxDestY + 1, brightness, wd, ht, wd2, ht2, model); - } + if (extra && maxDestY + 1 < ht2) { + copyPixelToPixel(srcX, maxSrcY, destX, maxDestY + 1, brightness, wd, ht, wd2, ht2, model); } } @@ -277,11 +266,7 @@ final int srcLen = stdTileHalfLen[dx]; - if (lnNum < 2) { - copyVerticalLine(dx, 11 + srcLen, 11 - srcLen, dx, dy, y2, wDark, flat, wd, ht, wd2, ht2, model); - } else { - copyVerticalLine(dx, 11 + srcLen, 11 - srcLen, dx, dy, y2, eDark, flat, wd, ht, wd2, ht2, model); - } + copyVerticalLine(dx, 11 + srcLen, 11 - srcLen, dx, dy, y2, lnNum < 2 ? wDark : eDark, flat, wd, ht, wd2, ht2, model); dx += destXInc; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-11-28 14:31:51
|
Revision: 9712 http://sourceforge.net/p/gridarta/code/9712 Author: akirschbaum Date: 2014-11-28 14:31:46 +0000 (Fri, 28 Nov 2014) Log Message: ----------- Add support for tile stretching. [Atrinik] Modified Paths: -------------- streams/tilestretching/src/atrinik/ChangeLog streams/tilestretching/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/model/gameobject/GameObject.java streams/tilestretching/src/atrinik/src/test/java/net/sf/gridarta/var/atrinik/gui/map/renderer/MapRendererTest.java streams/tilestretching/src/daimonin/src/main/java/net/sf/gridarta/var/daimonin/model/gameobject/GameObject.java streams/tilestretching/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractIsoMapRenderer.java streams/tilestretching/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/IsoMapRenderer.java streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/AbstractFaceProvider.java streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/ArchFaceProvider.java streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/CollectedFaceProvider.java streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/EmptyFaceProvider.java streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/FaceObjectProviders.java streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/FaceProvider.java streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/FilterFaceProvider.java streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/gameobject/DefaultIsoGameObject.java streams/tilestretching/src/model/src/test/java/net/sf/gridarta/model/gameobject/GameObjectFactoryTest.java streams/tilestretching/src/model/src/test/java/net/sf/gridarta/model/gameobject/TestGameObject.java Added Paths: ----------- streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/StretchedImageFilter.java Modified: streams/tilestretching/src/atrinik/ChangeLog =================================================================== --- streams/tilestretching/src/atrinik/ChangeLog 2014-11-28 13:48:04 UTC (rev 9711) +++ streams/tilestretching/src/atrinik/ChangeLog 2014-11-28 14:31:46 UTC (rev 9712) @@ -1,3 +1,7 @@ +2014-11-28 Alex Tokar + + * Add support for tile stretching. + 2014-11-16 Alex Tokar * Remove support for 'no_priest' map attribute; add support for Modified: streams/tilestretching/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/model/gameobject/GameObject.java =================================================================== --- streams/tilestretching/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/model/gameobject/GameObject.java 2014-11-28 13:48:04 UTC (rev 9711) +++ streams/tilestretching/src/atrinik/src/main/java/net/sf/gridarta/var/atrinik/model/gameobject/GameObject.java 2014-11-28 14:31:46 UTC (rev 9712) @@ -112,6 +112,14 @@ /** * {@inheritDoc} */ + @Override + public boolean isStretched() { + return getAttributeInt(LAYER) == 1 || getAttributeInt(LAYER) == 2; + } + + /** + * {@inheritDoc} + */ @NotNull @Override public GameObject clone() { Modified: streams/tilestretching/src/atrinik/src/test/java/net/sf/gridarta/var/atrinik/gui/map/renderer/MapRendererTest.java =================================================================== --- streams/tilestretching/src/atrinik/src/test/java/net/sf/gridarta/var/atrinik/gui/map/renderer/MapRendererTest.java 2014-11-28 13:48:04 UTC (rev 9711) +++ streams/tilestretching/src/atrinik/src/test/java/net/sf/gridarta/var/atrinik/gui/map/renderer/MapRendererTest.java 2014-11-28 14:31:46 UTC (rev 9712) @@ -131,6 +131,7 @@ mapModel.beginTransaction("TEST"); try { final TestGameObject gameObject = mapModelCreator.newGameObject("arch", "name"); + gameObject.setAttributeInt(DefaultIsoGameObject.LAYER, 3); gameObject.setAttributeInt(DefaultIsoGameObject.Z, 5); mapModel.addGameObjectToMap(gameObject, new Point(0, 0), mapModelCreator.getTopmostInsertionMode()); } finally { @@ -150,6 +151,7 @@ mapModel.beginTransaction("TEST"); try { final TestGameObject gameObject = mapModelCreator.newGameObject("arch", "name"); + gameObject.setAttributeInt(DefaultIsoGameObject.LAYER, 3); gameObject.setAttributeInt(DefaultIsoGameObject.Z, -5); mapModel.addGameObjectToMap(gameObject, new Point(0, 0), mapModelCreator.getTopmostInsertionMode()); } finally { @@ -245,6 +247,7 @@ mapModel.beginTransaction("TEST"); try { final TestGameObject gameObject = mapModelCreator.newGameObject("arch", "name"); + gameObject.setAttributeInt(DefaultIsoGameObject.LAYER, 3); gameObject.setAttributeInt(DefaultIsoGameObject.ALIGN, 5); gameObject.setAttributeInt(DefaultIsoGameObject.ROTATE, 20); gameObject.setAttributeInt(DefaultIsoGameObject.Z, 15); Modified: streams/tilestretching/src/daimonin/src/main/java/net/sf/gridarta/var/daimonin/model/gameobject/GameObject.java =================================================================== --- streams/tilestretching/src/daimonin/src/main/java/net/sf/gridarta/var/daimonin/model/gameobject/GameObject.java 2014-11-28 13:48:04 UTC (rev 9711) +++ streams/tilestretching/src/daimonin/src/main/java/net/sf/gridarta/var/daimonin/model/gameobject/GameObject.java 2014-11-28 14:31:46 UTC (rev 9712) @@ -114,6 +114,14 @@ /** * {@inheritDoc} */ + @Override + public boolean isStretched() { + return false; + } + + /** + * {@inheritDoc} + */ @NotNull @Override public GameObject clone() { Modified: streams/tilestretching/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractIsoMapRenderer.java =================================================================== --- streams/tilestretching/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractIsoMapRenderer.java 2014-11-28 13:48:04 UTC (rev 9711) +++ streams/tilestretching/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/AbstractIsoMapRenderer.java 2014-11-28 14:31:46 UTC (rev 9712) @@ -501,6 +501,7 @@ icon = unknownSquareIcon; } else { final boolean drawDouble = head.isDrawDouble(mapViewSettings.isDoubleFaces()); + final boolean isStretched = head.isStretched(); if (mapViewSettings.isAlphaType(head.getEditType())) { if (drawDouble) { icon = head.getTransparentDoubleImage(); @@ -508,7 +509,10 @@ icon = head.getTransparentImage(); } } else { - if (drawDouble) { + final long stretchFactor; + if (isStretched && (stretchFactor = head.getStretchFactor()) != 0) { + icon = head.getStretchedImage(stretchFactor); + } else if (drawDouble) { icon = head.getDoubleImage(); } else { icon = head.getNormalImage(); @@ -516,6 +520,7 @@ } } final int xOffset = head.getAttributeInt(DefaultIsoGameObject.ALIGN); + final int yOffset = head.getYOffset(); final int zoom = head.getAttributeInt(DefaultIsoGameObject.ZOOM); final double rotate = getRotate(head); final int alpha = head.getAttributeInt(DefaultIsoGameObject.ALPHA); @@ -544,7 +549,7 @@ final int multiPartNr = archetype.getMultiPartNr(); final int x = xStart - multiPositionData.getXOffset(headMultiShapeID, multiPartNr) + multiPositionData.getWidth(headMultiShapeID) / 2 - iconWidth / 2; final int y = yStart - multiPositionData.getYOffset(headMultiShapeID, multiPartNr) + isoMapSquareInfo.getYLen() - iconHeight; - paintScaledIcon(g, icon, x + xOffset, y, zoom, alpha, rotate, tmpIconWidth, tmpIconHeight, iconWidth, iconHeight); + paintScaledIcon(g, icon, x + xOffset, y - yOffset, zoom, alpha, rotate, tmpIconWidth, tmpIconHeight, iconWidth, iconHeight); } } else { final int x; @@ -554,15 +559,14 @@ x = xStart; } final int y = yStart + isoMapSquareInfo.getYLen() - iconHeight; - paintScaledIcon(g, icon, x + xOffset, y, zoom, alpha, rotate, tmpIconWidth, tmpIconHeight, iconWidth, iconHeight); + paintScaledIcon(g, icon, x + xOffset, y - yOffset, zoom, alpha, rotate, tmpIconWidth, tmpIconHeight, iconWidth, iconHeight); } // Paint first object (most likely a mob) in spawn points. if (!inSpawnPoint && isSpawnPoint(head)) { final G mob = head.getFirst(); if (mob != null) { - final int yOffset = mob.getAttributeInt(DefaultIsoGameObject.Z); - paintGameObject(g, xStart, yStart - yOffset, mob, true); + paintGameObject(g, xStart, yStart, mob, true); } } } Modified: streams/tilestretching/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/IsoMapRenderer.java =================================================================== --- streams/tilestretching/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/IsoMapRenderer.java 2014-11-28 13:48:04 UTC (rev 9711) +++ streams/tilestretching/src/gridarta/src/main/java/net/sf/gridarta/gui/map/renderer/IsoMapRenderer.java 2014-11-28 14:31:46 UTC (rev 9712) @@ -162,19 +162,11 @@ if (square.isEmpty()) { emptySquareIcon.paintIcon(this, g, x, y); } else { - boolean foundFloor = false; for (final G node : square) { filterControl.objectInSquare(filterState, node); if (filterControl.canShow(node)) { final G head = node.getHead(); - final int yOffset; - if (!foundFloor && head.getAttributeInt(DefaultIsoGameObject.LAYER) == 1) { - foundFloor = true; - yOffset = 0; - } else { - yOffset = head.getAttributeInt(DefaultIsoGameObject.Z); - } - paintGameObjectIfVisible(g, x, y - yOffset, node); + paintGameObjectIfVisible(g, x, y, node); } } } Modified: streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/AbstractFaceProvider.java =================================================================== --- streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/AbstractFaceProvider.java 2014-11-28 13:48:04 UTC (rev 9711) +++ streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/AbstractFaceProvider.java 2014-11-28 14:31:46 UTC (rev 9712) @@ -53,16 +53,17 @@ */ @Nullable @Override - public ImageIcon getImageIconForFacename(@NotNull final String faceName) { + public ImageIcon getImageIconForFacename(@NotNull final String faceName, final long stretch) { ImageIcon icon = null; - final SoftReference<ImageIcon> ref = cache.get(faceName); + final String realFaceName = String.format("%s-%d", faceName, stretch); + final SoftReference<ImageIcon> ref = cache.get(realFaceName); if (ref != null) { icon = ref.get(); } if (icon == null) { - icon = createImage(faceName); + icon = createImage(faceName, stretch); if (icon != null) { - cache.put(faceName, new SoftReference<ImageIcon>(icon)); + cache.put(realFaceName, new SoftReference<ImageIcon>(icon)); } } return icon; @@ -82,9 +83,10 @@ /** * Create an image not found in the cache. * @param faceName face name to get image for, excluding path and ending + * @param stretch stretch factor * @return icon for faceName */ @Nullable - protected abstract ImageIcon createImage(@NotNull String faceName); + protected abstract ImageIcon createImage(@NotNull String faceName, final long stretch); } Modified: streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/ArchFaceProvider.java =================================================================== --- streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/ArchFaceProvider.java 2014-11-28 13:48:04 UTC (rev 9711) +++ streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/ArchFaceProvider.java 2014-11-28 14:31:46 UTC (rev 9712) @@ -75,7 +75,7 @@ */ @Nullable @Override - protected ImageIcon createImage(@NotNull final String faceName) { + protected ImageIcon createImage(@NotNull final String faceName, final long stretch) { final String filename = files.get(faceName); if (filename == null) { return null; Modified: streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/CollectedFaceProvider.java =================================================================== --- streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/CollectedFaceProvider.java 2014-11-28 13:48:04 UTC (rev 9711) +++ streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/CollectedFaceProvider.java 2014-11-28 14:31:46 UTC (rev 9712) @@ -87,7 +87,7 @@ */ @Nullable @Override - protected ImageIcon createImage(@NotNull final String faceName) { + protected ImageIcon createImage(@NotNull final String faceName, final long stretch) { final Long position = positions.get(faceName); if (position == null) { return null; Modified: streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/EmptyFaceProvider.java =================================================================== --- streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/EmptyFaceProvider.java 2014-11-28 13:48:04 UTC (rev 9711) +++ streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/EmptyFaceProvider.java 2014-11-28 14:31:46 UTC (rev 9712) @@ -34,7 +34,7 @@ */ @Nullable @Override - public ImageIcon getImageIconForFacename(@NotNull final String faceName) { + public ImageIcon getImageIconForFacename(@NotNull final String faceName, final long stretch) { return null; } Modified: streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/FaceObjectProviders.java =================================================================== --- streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/FaceObjectProviders.java 2014-11-28 13:48:04 UTC (rev 9711) +++ streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/FaceObjectProviders.java 2014-11-28 14:31:46 UTC (rev 9712) @@ -151,6 +151,12 @@ private final FilterFaceProvider doubleAlphaFaceProvider; /** + * The face provider for stretched floor faces. + */ + @NotNull + private final FilterFaceProvider stretchedFaceProvider; + + /** * The {@link FaceObjects} instance for looking up face names. */ @NotNull @@ -180,6 +186,7 @@ this.resourceIcons = resourceIcons; doubleFaceProvider = new FilterFaceProvider(new DoubleImageFilter(doubleFaceOffset)); doubleAlphaFaceProvider = new FilterFaceProvider(new DoubleImageFilter(doubleFaceOffset)); + stretchedFaceProvider = new FilterFaceProvider(new StretchedImageFilter()); } /** @@ -206,7 +213,7 @@ if (normalFaceProvider != null) { normalFaceProvider.reload(); } - for (final FaceProvider faceProvider : new FaceProvider[] { GRAY, RED, GREEN, BLUE, ALPHA, GRID, doubleFaceProvider, doubleAlphaFaceProvider }) { + for (final FaceProvider faceProvider : new FaceProvider[] { GRAY, RED, GREEN, BLUE, ALPHA, GRID, doubleFaceProvider, doubleAlphaFaceProvider, stretchedFaceProvider }) { faceProvider.reload(); } @@ -230,6 +237,7 @@ GRID.setParent(normalFaceProvider); doubleFaceProvider.setParent(normalFaceProvider); doubleAlphaFaceProvider.setParent(normalFaceProvider); + stretchedFaceProvider.setParent(normalFaceProvider); } /** @@ -259,7 +267,7 @@ }); //noinspection ConstantConditions - return getFace(baseObject.getFaceObjName(), undefinedArchetype[0], normalFaceProvider, normalFaceProvider); + return getFace(baseObject.getFaceObjName(), undefinedArchetype[0], normalFaceProvider, normalFaceProvider, 0); } /** @@ -270,7 +278,7 @@ */ @NotNull public ImageIcon getTrans(@NotNull final GameObject<?, ?, ?> gameObject) { - return getFace(gameObject.getFaceObjName(), gameObject.hasUndefinedArchetype(), ALPHA, ALPHA); + return getFace(gameObject.getFaceObjName(), gameObject.hasUndefinedArchetype(), ALPHA, ALPHA, 0); } /** @@ -285,7 +293,7 @@ throw new IllegalStateException(); } //noinspection ConstantConditions - return getFace(gameObject.getFaceObjName(), gameObject.hasUndefinedArchetype(), normalFaceProvider, doubleFaceProvider); + return getFace(gameObject.getFaceObjName(), gameObject.hasUndefinedArchetype(), normalFaceProvider, doubleFaceProvider, 0); } /** @@ -296,20 +304,32 @@ */ @NotNull public ImageIcon getTransDouble(@NotNull final GameObject<?, ?, ?> gameObject) { - return getFace(gameObject.getFaceObjName(), gameObject.hasUndefinedArchetype(), ALPHA, doubleAlphaFaceProvider); + return getFace(gameObject.getFaceObjName(), gameObject.hasUndefinedArchetype(), ALPHA, doubleAlphaFaceProvider, 0); } /** + * Returns the stretched face for a {@link GameObject} as an {@link + * ImageIcon}. + * @param gameObject the game object + * @return the image icon + */ + @NotNull + public ImageIcon getStretched(@NotNull final GameObject<?, ?, ?> gameObject, final long stretch) { + return getFace(gameObject.getFaceObjName(), gameObject.hasUndefinedArchetype(), stretchedFaceProvider, ALPHA, stretch); + } + + /** * Returns the {@link ImageIcon} of a face with a certain face name. * @param faceName the face name of face * @param hasUndefinedArchetype if set, return the face for an game object * referencing an undefined archetype * @param singleFaceProvider the face provider to use for single faces * @param doubleFaceProvider the face provider to use for double faces + * @param stretch stretch factor * @return face for face {@code faceName} */ @NotNull - private ImageIcon getFace(@Nullable final String faceName, final boolean hasUndefinedArchetype, @NotNull final FaceProvider singleFaceProvider, @NotNull final FaceProvider doubleFaceProvider) { + private ImageIcon getFace(@Nullable final String faceName, final boolean hasUndefinedArchetype, @NotNull final FaceProvider singleFaceProvider, @NotNull final FaceProvider doubleFaceProvider, final long stretch) { if (hasUndefinedArchetype) { return resourceIcons.getResourceIcon(ResourceIcons.SQUARE_NO_ARCH); } @@ -323,10 +343,19 @@ return resourceIcons.getResourceIcon(ResourceIcons.SQUARE_NO_FACE); } - final FaceProvider faceProvider = faceObject.isDouble() ? doubleFaceProvider : singleFaceProvider; + final FaceProvider faceProvider; + + if (stretch != 0) { + faceProvider = stretchedFaceProvider; + } else if (faceObject.isDouble()) { + faceProvider = doubleFaceProvider; + } else { + faceProvider = singleFaceProvider; + } + final String alternativeFaceName = faceObject.getAlternativeFaceName(); final String effectiveFaceName = alternativeFaceName != null && singleFaceProvider == doubleFaceProvider ? alternativeFaceName : faceName; - final ImageIcon face = faceProvider.getImageIconForFacename(effectiveFaceName); + final ImageIcon face = faceProvider.getImageIconForFacename(effectiveFaceName, stretch); if (face == null) { return resourceIcons.getResourceIcon(ResourceIcons.SQUARE_UNKNOWN); } @@ -341,7 +370,7 @@ */ @Nullable public ImageIcon getImageIconForFacename(@NotNull final String faceObjName) { - return normalFaceProvider == null ? null : normalFaceProvider.getImageIconForFacename(faceObjName); + return normalFaceProvider == null ? null : normalFaceProvider.getImageIconForFacename(faceObjName, 0); } /** Modified: streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/FaceProvider.java =================================================================== --- streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/FaceProvider.java 2014-11-28 13:48:04 UTC (rev 9711) +++ streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/FaceProvider.java 2014-11-28 14:31:46 UTC (rev 9712) @@ -35,7 +35,7 @@ * @return icon for faceName */ @Nullable - ImageIcon getImageIconForFacename(@NotNull String faceName); + ImageIcon getImageIconForFacename(@NotNull String faceName, final long stretch); /** * Reload faces. This method does not really immediately reload all faces, Modified: streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/FilterFaceProvider.java =================================================================== --- streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/FilterFaceProvider.java 2014-11-28 13:48:04 UTC (rev 9711) +++ streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/FilterFaceProvider.java 2014-11-28 14:31:46 UTC (rev 9712) @@ -48,8 +48,8 @@ /** * Create a new instance. The parent is unset. The parent must be set with * {@link #setParent(FaceProvider)} before invoking {@link - * #getImageIconForFacename(String)} or {@link #createImage(String)} or - * getting a face resp. creating an image will throw an {@link + * #getImageIconForFacename(String, long)} or {@link #createImage(String, + * long)} or getting a face resp. creating an image will throw an {@link * IllegalStateException}. * @param filter ImageFilter to apply for creating the images */ @@ -80,15 +80,20 @@ */ @Nullable @Override - protected ImageIcon createImage(@NotNull final String faceName) { + protected ImageIcon createImage(@NotNull final String faceName, final long stretch) { if (parent == null) { throw new IllegalStateException("FilterFaceProvider in use but parent not set."); } - final ImageIcon imageIcon = parent.getImageIconForFacename(faceName); + final ImageIcon imageIcon = parent.getImageIconForFacename(faceName, stretch); if (imageIcon == null) { return null; } try { + if (stretch != 0) { + final StretchedImageFilter filter2 = (StretchedImageFilter) filter; + filter2.setStretchedFactor(stretch); + } + return new ImageIcon(Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(imageIcon.getImage().getSource(), filter))); } catch (final Exception ignored) { return null; Added: streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/StretchedImageFilter.java =================================================================== --- streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/StretchedImageFilter.java (rev 0) +++ streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/StretchedImageFilter.java 2014-11-28 14:31:46 UTC (rev 9712) @@ -0,0 +1,322 @@ +/* + * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games. + * Copyright (C) 2000-2010 The Gridarta Developers. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +package net.sf.gridarta.model.face; + +import java.awt.Point; +import java.awt.image.ColorModel; +import java.awt.image.ImageFilter; +import org.jetbrains.annotations.NotNull; + +/** + * An {@link ImageFilter} that produces stretched faces. + * @author Alex Tokar (based on C implementation by James Little) + */ +public class StretchedImageFilter extends ImageFilter { + + /** + * The default RGB color model. + */ + private static final ColorModel RGB_DEFAULT_COLOR_MODEL = ColorModel.getRGBdefault(); + + /** + * The stretch factor. + */ + private long stretchFactor; + + /** + * The image width. + */ + private int width; + + private int height; + + /** + * The destination image's pixels. + */ + @NotNull + private int[] raster; + + @NotNull + private int[] pixels; + + @NotNull + private final Point[] point = { new Point(), new Point(), new Point(), new Point() }; + + @NotNull + private final Point[] point2 = { new Point(), new Point(), new Point(), new Point() }; + + @NotNull + private final double[] slope = { 0.0, 0.0, 0.0, 0.0 }; + + @NotNull + private final int[] stdTileHalfLen = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0 }; + + /** + * Set the stretch factor for this instance. + * @param stretchFactor the stretch factor + */ + public void setStretchedFactor(final long stretchFactor) { + this.stretchFactor = stretchFactor; + } + + /** + * {@inheritDoc} + */ + @Override + public void setDimensions(final int width, final int height) { + this.width = width; + this.height = height; + final int newHeight = height + (int) ((stretchFactor >> 24) & 0xff); + pixels = new int[width * height]; + raster = new int[width * newHeight]; + super.setDimensions(width, newHeight); + } + + /** + * {@inheritDoc} + */ + @Override + public void setHints(final int hints) { + super.setHints(COMPLETESCANLINES | TOPDOWNLEFTRIGHT); + } + + /** + * {@inheritDoc} + */ + @Override + public void setPixels(final int x, final int y, final int w, final int h, @NotNull final ColorModel model, @NotNull final byte[] pixels, final int off, final int scansize) { + int srcOff = off; + int dstOff = y * width + x; + for (int yc = 0; yc < h; yc++) { + for (int xc = 0; xc < w; xc++) { + this.pixels[dstOff++] = model.getRGB(pixels[srcOff++] & 0xff); + } + srcOff += scansize - w; + dstOff += width - w; + } + } + + /** + * {@inheritDoc} + */ + @Override + public void setPixels(final int x, final int y, final int w, final int h, @NotNull final ColorModel model, @NotNull final int[] pixels, final int off, final int scansize) { + int srcOff = off; + int dstOff = y * width + x; + for (int yc = 0; yc < h; yc++) { + for (int xc = 0; xc < w; xc++) { + this.pixels[dstOff++] = model.getRGB(pixels[srcOff++]); + } + srcOff += scansize - w; + dstOff += width - w; + } + } + + private void determineLine(final int idx, final int sx, final int sy, final int ex, final int ey) { + point[idx].x = sx; + point[idx].y = sy; + point2[idx].x = ex; + point2[idx].y = ey; + final double xDiff = Math.abs(sx - ex); + final double yDiff = Math.abs(sy - ey); + slope[idx] = xDiff == 0 ? 0.0 : yDiff / xDiff; + } + + private void copyPixelToPixel(final int x, final int y, final int x2, final int y2, final double brightness, final int wd, final int ht, final int wd2, final int ht2, @NotNull final ColorModel model) { + if (x < 0 || y < 0 || x2 < 0 || y2 < 0) { + return; + } + + if (x >= wd || x2 >= wd2 || y >= ht || y2 >= ht2) { + return; + } + + final int color = model.getRGB(pixels[y * wd + x]); + + final int a = (color >> 24) & 0xff; + if (a == 0) { + return; + } + final int r1 = (color >> 16) & 0xff; + final int g1 = (color >> 8) & 0xff; + final int b1 = (color >> 0) & 0xff; + + final int r = Math.min(255, (int) (r1 * brightness)); + final int g = Math.min(255, (int) (g1 * brightness)); + final int b = Math.min(255, (int) (b1 * brightness)); + raster[y2 * wd2 + x2] = (a << 24) | (r << 16) | (g << 8) | (b << 0); + } + + private void copyVerticalLine(final int srcX, final int srcSy, final int srcEy, final int destX, final int destSy, final int destEy, final double brightness, final boolean extra, final int wd, final int ht, final int wd2, final int ht2, @NotNull final ColorModel model) { + final int minSrcY = Math.min(srcSy, srcEy); + final int maxSrcY = Math.max(srcSy, srcEy); + final int minDestY = Math.min(destSy, destEy); + final int maxDestY = Math.max(destSy, destEy); + final int srcH = maxSrcY - minSrcY; + final int destH = maxDestY - minDestY; + + if (destH == 0) { + if (srcH == 0) { + copyPixelToPixel(srcX, minSrcY, destX, minDestY, brightness, wd, ht, wd2, ht2, model); + return; + } else { + copyPixelToPixel(srcX, (maxSrcY - minSrcY) / 2, destX, minDestY, brightness, wd, ht, wd2, ht2, model); + return; + } + } + + if (srcH == 0) { + final int pixel = model.getRGB(pixels[minSrcY * wd + srcX]); + for (int y = minDestY; y <= maxDestY; y++) { + raster[y * wd2 + destX] = pixel; + } + return; + } + + /* The stretching */ + final double ratio = (double) srcH / (double) destH; + + for (int y = 0; y <= destH; y++) { + final int goY = minDestY + y; + final int getY = (int) (minSrcY + (y * ratio)); + copyPixelToPixel(srcX, getY, destX, goY, brightness, wd, ht, wd2, ht2, model); + } + + if (extra) { + if (maxDestY + 1 < ht2) { + copyPixelToPixel(srcX, maxSrcY, destX, maxDestY + 1, brightness, wd, ht, wd2, ht2, model); + } + } + } + + private void stretch(final int wd, final int ht, @NotNull final ColorModel model) { + final int n = (int) (stretchFactor >> 24) & 0xff; + final int e = (int) (stretchFactor >> 16) & 0xff; + final int w = (int) (stretchFactor >> 8) & 0xff; + final int s = (int) stretchFactor & 0xff; + + final int wd2 = wd; + final int ht2 = ht + n; + + final boolean flat = n != 0 || e != 0 || w != 0 || s != 0; + + double eDark = 1.0; + double wDark = 1.0; + if (w > e) { + wDark = 1.0 - ((w - e) / 25.0); + + if (n > 0 || s > 0) { + eDark = wDark; + } + } + + if (e > w) { + eDark = 1.0 + ((e - w) / 25.0); + + if (s > 0 || n > 0) { + wDark = eDark; + } + } + + determineLine(0, 2, 10 - w + n, 22, 0); + determineLine(1, 2, 12 - w + n, 22, 22 + n - s); + determineLine(2, 45, 10 - e + n, 25, 0); + determineLine(3, 45, 12 - e + n, 25, 22 + n - s); + + for (int lnNum = 0; lnNum < 4; lnNum += 2) { + final int destSx = point[lnNum].x; + final int destSy = point[lnNum].y; + final int destEx = point2[lnNum].x; + final int destEy = point2[lnNum].y; + final double destSlope = slope[lnNum]; + + final int destSy2 = point[lnNum + 1].y; + final int destEy2 = point2[lnNum + 1].y; + final double destSlope2 = slope[lnNum + 1]; + + final int destYInc = destSy > destEy ? -1 : 1; + final int destXInc = destSx > destEx ? -1 : 1; + final int destYInc2 = destSy2 > destEy2 ? -1 : 1; + + int dx = destSx; + int dy = destSy; + double kicker = 0.0; + int y2 = destSy2; + double kicker2 = 0.0; + int atLeastOne = 0; + + while ((destSlope != 0.0 && dx != destEx && dy != destEy) || (atLeastOne == 0 && destSlope == 0.0)) { + atLeastOne = 1; + + if (kicker >= 1.0) { + kicker -= 1.0; + dy += destYInc; + } + + if (kicker2 >= 1.0) { + kicker2 -= 1.0; + y2 += destYInc2; + } + + final int srcLen = stdTileHalfLen[dx]; + + if (lnNum < 2) { + copyVerticalLine(dx, 11 + srcLen, 11 - srcLen, dx, dy, y2, wDark, flat, wd, ht, wd2, ht2, model); + } else { + copyVerticalLine(dx, 11 + srcLen, 11 - srcLen, dx, dy, y2, eDark, flat, wd, ht, wd2, ht2, model); + } + + dx += destXInc; + + kicker += destSlope; + kicker2 += destSlope2; + } + } + + for (int dx = 22; dx < 22 + 2; dx++) { + copyVerticalLine(dx, 0, 23, dx, 0, 23 + n - s, wDark, flat, wd, ht, wd2, ht2, model); + } + + for (int dx = 24; dx < 24 + 2; dx++) { + copyVerticalLine(dx, 0, 23, dx, 0, 23 + n - s, eDark, flat, wd, ht, wd2, ht2, model); + } + + for (int dx = 0; dx < 2; dx++) { + copyPixelToPixel(dx, 11, dx, 11 + n - w, wDark, wd, ht, wd2, ht2, model); + } + + for (int dx = 46; dx < 48; dx++) { + copyPixelToPixel(dx, 11, dx, 11 + n - e, eDark, wd, ht, wd2, ht2, model); + } + } + + /** + * {@inheritDoc} + */ + @Override + public void imageComplete(final int status) { + if (status != IMAGEERROR && status != IMAGEABORTED) { + stretch(width, height, RGB_DEFAULT_COLOR_MODEL); + super.setPixels(0, 0, width, height + (int) ((stretchFactor >> 24) & 0xff), RGB_DEFAULT_COLOR_MODEL, raster, 0, width); + } + super.imageComplete(status); + } + +} Property changes on: streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/face/StretchedImageFilter.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/gameobject/DefaultIsoGameObject.java =================================================================== --- streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/gameobject/DefaultIsoGameObject.java 2014-11-28 13:48:04 UTC (rev 9711) +++ streams/tilestretching/src/model/src/main/java/net/sf/gridarta/model/gameobject/DefaultIsoGameObject.java 2014-11-28 14:31:46 UTC (rev 9712) @@ -19,12 +19,14 @@ package net.sf.gridarta.model.gameobject; +import java.awt.Point; import javax.swing.ImageIcon; import net.sf.gridarta.model.anim.AnimationObjects; import net.sf.gridarta.model.archetype.Archetype; import net.sf.gridarta.model.baseobject.BaseObject; import net.sf.gridarta.model.face.FaceObjectProviders; import net.sf.gridarta.model.maparchobject.MapArchObject; +import net.sf.gridarta.model.mapmodel.MapSquare; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -39,6 +41,10 @@ */ private static final long serialVersionUID = 1L; + private static final int MAX_STRETCH = 8; + + private static final int MAX_STRETCH_DIAGONAL = 12; + /** * The name of the "z" attribute. */ @@ -52,6 +58,12 @@ public static final String LAYER = "layer"; /** + * The name of the "sub_layer" attribute. + */ + @NotNull + public static final String SUB_LAYER = "sub_layer"; + + /** * The name of the "sys_object" attribute. */ @NotNull @@ -127,6 +139,16 @@ private ImageIcon transDoubleFace; /** + * The stretched floor face. + * @serial + */ + @Nullable + private ImageIcon stretchedFace; + + @NotNull + private final Point point = new Point(); + + /** * Creates a new instance. * @param archetype the base archetype * @param faceObjectProviders the face object providers for looking up @@ -154,6 +176,7 @@ transFace = null; doubleFace = null; transDoubleFace = null; + stretchedFace = null; super.setObjectFace(); } @@ -193,7 +216,149 @@ return transDoubleFace; } + public final int getYOffset() { + final int layer = getAttributeInt(LAYER); + + int height; + if (layer == 0 || layer == 6 || layer == 7 || layer == 3 || layer == 4) { + height = getTopYFloorOffset(); + } else { + height = getYFloorOffset(0, 0); + } + + if (layer > 1) { + height += getAttributeInt(Z); + } + + return height; + } + + public final int getTopYFloorOffset() { + int topHeight = 0; + + for (final G gameObject : getMapSquare().recursive()) { + if (gameObject.getAttributeInt(LAYER) == 1) { + final int height = gameObject.getAttributeInt(Z); + + if (height > topHeight) { + topHeight = height; + } + } + } + + return topHeight; + } + + private int getYFloorOffset(final int dx, final int dy) { + final MapSquare<G, A, R> mapSquare = getMapSquare(); + point.x = mapSquare.getMapX() + dx; + point.y = mapSquare.getMapY() + dy; + + try { + final MapSquare<G, A, R> mapSquare2 = mapSquare.getMapModel().getMapSquare(point); + + for (final G gameObject : mapSquare2.recursive()) { + if (gameObject.getAttributeInt(LAYER) == 1 && gameObject.getAttributeInt(SUB_LAYER) == getAttributeInt(SUB_LAYER)) { + return gameObject.getAttributeInt(Z); + } + } + } catch (final IndexOutOfBoundsException ignored) { + // skip points outside map bounds + } + + return 0; + } + + public final long getStretchFactor() { + int nwHeight = getYFloorOffset(-1, -1); + int nHeight = getYFloorOffset(0, -1); + int neHeight = getYFloorOffset(1, -1); + int swHeight = getYFloorOffset(-1, 1); + int sHeight = getYFloorOffset(0, 1); + int seHeight = getYFloorOffset(1, 1); + int wHeight = getYFloorOffset(-1, 0); + int eHeight = getYFloorOffset(1, 0); + final int myHeight = getYFloorOffset(0, 0); + + if (Math.abs(myHeight - eHeight) > MAX_STRETCH) { + eHeight = myHeight; + } + + if (Math.abs(myHeight - seHeight) > MAX_STRETCH_DIAGONAL) { + seHeight = myHeight; + } + + if (Math.abs(myHeight - sHeight) > MAX_STRETCH) { + sHeight = myHeight; + } + + if (Math.abs(myHeight - swHeight) > MAX_STRETCH_DIAGONAL) { + swHeight = myHeight; + } + + if (Math.abs(myHeight - wHeight) > MAX_STRETCH) { + wHeight = myHeight; + } + + if (Math.abs(myHeight - nwHeight) > MAX_STRETCH_DIAGONAL) { + nwHeight = myHeight; + } + + if (Math.abs(myHeight - nHeight) > MAX_STRETCH) { + nHeight = myHeight; + } + + if (Math.abs(myHeight - neHeight) > MAX_STRETCH_DIAGONAL) { + neHeight = myHeight; + } + + int top = Math.max(wHeight, nwHeight); + top = Math.max(top, nHeight); + top = Math.max(top, myHeight); + + int bottom = Math.max(sHeight, seHeight); + bottom = Math.max(bottom, eHeight); + bottom = Math.max(bottom, myHeight); + + int right = Math.max(nHeight, neHeight); + right = Math.max(right, eHeight); + right = Math.max(right, myHeight); + + int left = Math.max(wHeight, swHeight); + left = Math.max(left, sHeight); + left = Math.max(left, myHeight); + + int minHt = Math.min(top, bottom); + minHt = Math.min(minHt, left); + minHt = Math.min(minHt, right); + minHt = Math.min(minHt, myHeight); + + top -= minHt; + bottom -= minHt; + left -= minHt; + right -= minHt; + + top = Math.max(0, Math.min(255, top)); + bottom = Math.max(0, Math.min(255, bottom)); + left = Math.max(0, Math.min(255, left)); + right = Math.max(0, Math.min(255, right)); + + return bottom + (left << 8) + (right << 16) + (top << 24); + } + /** + * Returns a stretched variant of the face for this floor-type GameObject. + * @return the stretched face for this game object + */ + @NotNull + public ImageIcon getStretchedImage(final long stretchFactor) { + if (stretchedFace == null) { + stretchedFace = faceObjectProviders.getStretched(this, stretchFactor); + } + return stretchedFace; + } + + /** * Returns whether to draw this game object with double height. * @param drawDoubleFaces whether the "draw double faces" map view setting * is enabled @@ -202,6 +367,12 @@ public abstract boolean isDrawDouble(final boolean drawDoubleFaces); /** + * Returns whether to draw this game object with stretching transformation. + * @return whether to draw this game object with stretching transformation + */ + public abstract boolean isStretched(); + + /** * {@inheritDoc} */ @NotNull @@ -231,6 +402,7 @@ transFace = null; doubleFace = null; transDoubleFace = null; + stretchedFace = null; super.facesReloaded(); } Modified: streams/tilestretching/src/model/src/test/java/net/sf/gridarta/model/gameobject/GameObjectFactoryTest.java =================================================================== --- streams/tilestretching/src/model/src/test/java/net/sf/gridarta/model/gameobject/GameObjectFactoryTest.java 2014-11-28 13:48:04 UTC (rev 9711) +++ streams/tilestretching/src/model/src/test/java/net/sf/gridarta/model/gameobject/GameObjectFactoryTest.java 2014-11-28 14:31:46 UTC (rev 9712) @@ -97,7 +97,7 @@ final FaceProvider faceProvider = new FaceProvider() { @Override - public ImageIcon getImageIconForFacename(@NotNull final String faceName) { + public ImageIcon getImageIconForFacename(@NotNull final String faceName, final long stretch) { if (faceName.equals("face")) { return new ImageIcon(); } Modified: streams/tilestretching/src/model/src/test/java/net/sf/gridarta/model/gameobject/TestGameObject.java =================================================================== --- streams/tilestretching/src/model/src/test/java/net/sf/gridarta/model/gameobject/TestGameObject.java 2014-11-28 13:48:04 UTC (rev 9711) +++ streams/tilestretching/src/model/src/test/java/net/sf/gridarta/model/gameobject/TestGameObject.java 2014-11-28 14:31:46 UTC (rev 9712) @@ -68,6 +68,14 @@ * {@inheritDoc} */ @Override + public boolean isStretched() { + return false; + } + + /** + * {@inheritDoc} + */ + @Override public int getLightRadius() { return 0; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2014-11-28 13:48:14
|
Revision: 9711 http://sourceforge.net/p/gridarta/code/9711 Author: akirschbaum Date: 2014-11-28 13:48:04 +0000 (Fri, 28 Nov 2014) Log Message: ----------- Create branch. Added Paths: ----------- streams/tilestretching/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |