From: <aki...@us...> - 2008-07-28 19:55:54
|
Revision: 4548 http://gridarta.svn.sourceforge.net/gridarta/?rev=4548&view=rev Author: akirschbaum Date: 2008-07-28 19:55:59 +0000 (Mon, 28 Jul 2008) Log Message: ----------- Unify code; improves CrossfireEditor's map rendering performance. Modified Paths: -------------- trunk/crossfire/src/cfeditor/CMainControl.java trunk/crossfire/src/cfeditor/CMainControlInstance.java trunk/crossfire/src/cfeditor/CrossfireObjectsFactory.java trunk/crossfire/src/cfeditor/gameobject/GameObject.java trunk/crossfire/src/cfeditor/gui/map/MapRenderer.java trunk/crossfire/src/cfeditor/gui/map/PickmapRenderer.java trunk/crossfire/src/cfeditor/gui/map/SimpleLevelRenderer.java trunk/daimonin/src/daieditor/CMainControl.java trunk/daimonin/src/daieditor/DaimoninObjectsFactory.java trunk/src/app/net/sf/gridarta/GridartaObjectsFactory.java trunk/src/app/net/sf/gridarta/map/DefaultMapControl.java trunk/src/test/net/sf/gridarta/map/DefaultMapModelTest.java Modified: trunk/crossfire/src/cfeditor/CMainControl.java =================================================================== --- trunk/crossfire/src/cfeditor/CMainControl.java 2008-07-28 19:27:52 UTC (rev 4547) +++ trunk/crossfire/src/cfeditor/CMainControl.java 2008-07-28 19:55:59 UTC (rev 4548) @@ -215,6 +215,7 @@ */ public CMainControl() { super(new CrossfireObjectsFactory(), "cfeditor"); + CMainControlInstance.instance = this; globalSettings.readGlobalSettings(); animationObjects = new cfeditor.gameobject.anim.AnimationObjects(); archetypeSet = new ArchetypeSet(this, getEditTypes(), animationObjects, faceObjects, globalSettings.getImageSet()); @@ -773,7 +774,7 @@ JOptionPane.showMessageDialog(mainView, "No map loaded! Please load a map!!", "Error", JOptionPane.ERROR_MESSAGE); return; } - new MapPreview(getGridartaObjectsFactory().newSimpleLevelRenderer(currentMap.getMapModel(), archetypeSet).getFullImage()); + new MapPreview(getGridartaObjectsFactory().newSimpleLevelRenderer(currentMap.getMapModel()).getFullImage()); } /** {@inheritDoc} */ Modified: trunk/crossfire/src/cfeditor/CMainControlInstance.java =================================================================== --- trunk/crossfire/src/cfeditor/CMainControlInstance.java 2008-07-28 19:27:52 UTC (rev 4547) +++ trunk/crossfire/src/cfeditor/CMainControlInstance.java 2008-07-28 19:55:59 UTC (rev 4548) @@ -28,7 +28,7 @@ /** * The singleton instance. */ - private static CMainControl instance = null; + static CMainControl instance = null; /** * Private constructor to prevent instantiation. Modified: trunk/crossfire/src/cfeditor/CrossfireObjectsFactory.java =================================================================== --- trunk/crossfire/src/cfeditor/CrossfireObjectsFactory.java 2008-07-28 19:27:52 UTC (rev 4547) +++ trunk/crossfire/src/cfeditor/CrossfireObjectsFactory.java 2008-07-28 19:55:59 UTC (rev 4548) @@ -39,7 +39,6 @@ import net.sf.gridarta.MapActions; import net.sf.gridarta.MapImageCache; import net.sf.gridarta.gameobject.ArchetypeParser; -import net.sf.gridarta.gameobject.ArchetypeSet; import net.sf.gridarta.gameobject.face.FaceObjects; import net.sf.gridarta.gameobject.match.GameObjectMatchersInstance; import net.sf.gridarta.gui.DefaultObjectChooser; @@ -152,8 +151,8 @@ /** {@inheritDoc} */ @NotNull - public LevelRenderer newSimpleLevelRenderer(@NotNull final MapModel<GameObject, MapArchObject, Archetype> mapModel, @NotNull final ArchetypeSet<GameObject, MapArchObject, Archetype> archetypeSet) { - return new SimpleLevelRenderer(mapModel, archetypeSet); + public LevelRenderer newSimpleLevelRenderer(@NotNull final MapModel<GameObject, MapArchObject, Archetype> mapModel) { + return new SimpleLevelRenderer(mapModel); } /** {@inheritDoc} */ Modified: trunk/crossfire/src/cfeditor/gameobject/GameObject.java =================================================================== --- trunk/crossfire/src/cfeditor/gameobject/GameObject.java 2008-07-28 19:27:52 UTC (rev 4547) +++ trunk/crossfire/src/cfeditor/gameobject/GameObject.java 2008-07-28 19:55:59 UTC (rev 4548) @@ -19,8 +19,10 @@ package cfeditor.gameobject; +import cfeditor.CMainControlInstance; import cfeditor.gameobject.scripts.ScriptArchData; import cfeditor.map.MapArchObject; +import javax.swing.ImageIcon; import javax.swing.JList; import net.sf.gridarta.gameobject.scripts.AbstractScriptArchEditor; import net.sf.gridarta.gui.GameObjectAttributesPanel; @@ -59,6 +61,9 @@ @NotNull private ScriptArchData scriptArchData = new ScriptArchData(this); + /** The normal face. */ + private ImageIcon normalFace; + /** {@inheritDoc} */ @Override public void propagateElevation(@NotNull final GameObject gameObject) { @@ -94,8 +99,20 @@ /** {@inheritDoc} */ public void setObjectFace() { + if (!isArchetype()) { + final ArchetypeSet archetypeSet = CMainControlInstance.getInstance().getArchetypeSet(); + normalFace = archetypeSet.getFace(this); + } } + /** + * Returns the normal face for this GameObject. + * @return The normal face for this GameObject. + */ + public ImageIcon getNormalImage() { + return normalFace; + } + // lore text @NotNull public String getLoreText() { @@ -155,6 +172,7 @@ clone.archType = archType; // type attribute of the arch clone.scriptArchData = new ScriptArchData(clone); + clone.normalFace = normalFace; clone.setMapX(posx); clone.setMapY(posy); @@ -270,7 +288,8 @@ && (gameObject.animText == null ? animText == null : gameObject.animText.equals(animText)) && gameObject.loreText.equals(loreText) // ignore "scriptArchData" - && gameObject.archType == archType; + && gameObject.archType == archType + && gameObject.normalFace == normalFace; } /** {@inheritDoc} */ Modified: trunk/crossfire/src/cfeditor/gui/map/MapRenderer.java =================================================================== --- trunk/crossfire/src/cfeditor/gui/map/MapRenderer.java 2008-07-28 19:27:52 UTC (rev 4547) +++ trunk/crossfire/src/cfeditor/gui/map/MapRenderer.java 2008-07-28 19:55:59 UTC (rev 4548) @@ -22,7 +22,6 @@ import cfeditor.CFilterControl; import cfeditor.CMainControl; import cfeditor.gameobject.Archetype; -import cfeditor.gameobject.ArchetypeSet; import cfeditor.gameobject.GameObject; import cfeditor.map.MapArchObject; import java.awt.Color; @@ -76,8 +75,6 @@ @NotNull private final EditTypes<GameObject, MapArchObject, Archetype, CMapViewBasic> editTypes; - private final ArchetypeSet archetypeSet; - /** * Create a new instance. * @param mainControl MainControl, used for getting icons and similar @@ -90,7 +87,6 @@ filter = mainControl.getFilterControl(); this.mainControl = mainControl; this.editTypes = editTypes; - archetypeSet = mainControl.getArchetypeSet(); addMouseMotionListener(mainControl.getMainView().getStatusBar()); init(); } @@ -210,7 +206,8 @@ if (!editTypes.isEditType(node)) { continue; } - final ImageIcon img = archetypeSet.getFace(node); + final ImageIcon img = node.getNormalImage(); + assert img != null; if (!node.isMulti() || (img.getIconWidth() == 32 && img.getIconHeight() == 32)) { offset.x = 0; offset.y = 0; Modified: trunk/crossfire/src/cfeditor/gui/map/PickmapRenderer.java =================================================================== --- trunk/crossfire/src/cfeditor/gui/map/PickmapRenderer.java 2008-07-28 19:27:52 UTC (rev 4547) +++ trunk/crossfire/src/cfeditor/gui/map/PickmapRenderer.java 2008-07-28 19:55:59 UTC (rev 4548) @@ -21,7 +21,6 @@ import cfeditor.CMainControl; import cfeditor.gameobject.Archetype; -import cfeditor.gameobject.ArchetypeSet; import cfeditor.gameobject.GameObject; import cfeditor.map.MapArchObject; import java.awt.Color; @@ -43,8 +42,6 @@ /** Serial Version UID. */ private static final long serialVersionUID = 1L; - private final ArchetypeSet archetypeSet; - /** * Create a new instance. * @param mainControl MainControl, used for getting icons and similar @@ -53,7 +50,6 @@ */ public PickmapRenderer(final CMainControl mainControl, final MapControl<GameObject, MapArchObject, Archetype, CMapViewBasic> mapControl, final MapGrid mapGrid) { super(mapControl, mapGrid, 0); - archetypeSet = mainControl.getArchetypeSet(); init(); } @@ -103,7 +99,7 @@ } for (final GameObject node : mapModel.getMapSquare(point)) { - final ImageIcon img = archetypeSet.getFace(node); + final ImageIcon img = node.getNormalImage(); final int x, y; if (!node.isMulti() || (img.getIconWidth() == 32 && img.getIconHeight() == 32)) { x = 0; Modified: trunk/crossfire/src/cfeditor/gui/map/SimpleLevelRenderer.java =================================================================== --- trunk/crossfire/src/cfeditor/gui/map/SimpleLevelRenderer.java 2008-07-28 19:27:52 UTC (rev 4547) +++ trunk/crossfire/src/cfeditor/gui/map/SimpleLevelRenderer.java 2008-07-28 19:55:59 UTC (rev 4548) @@ -30,7 +30,6 @@ import java.util.Map; import javax.swing.ImageIcon; import net.sf.gridarta.Size2D; -import net.sf.gridarta.gameobject.ArchetypeSet; import net.sf.gridarta.gui.SystemIcons; import net.sf.gridarta.gui.map.AbstractLevelRenderer; import net.sf.gridarta.map.MapModel; @@ -52,21 +51,15 @@ @NotNull private final MapModel<GameObject, MapArchObject, Archetype> mapModel; - /** The archetype set to use. */ - @NotNull - private final ArchetypeSet<GameObject, MapArchObject, Archetype> archetypeSet; - /** Temporary variable. */ private final Point offset = new Point(); /** * Create a SimpleLevelRenderer. * @param mapModel the map model to render - * @param archetypeSet the archetype set to use */ - public SimpleLevelRenderer(@NotNull final MapModel<GameObject, MapArchObject, Archetype> mapModel, @NotNull final ArchetypeSet<GameObject, MapArchObject, Archetype> archetypeSet) { + public SimpleLevelRenderer(@NotNull final MapModel<GameObject, MapArchObject, Archetype> mapModel) { this.mapModel = mapModel; - this.archetypeSet = archetypeSet; } /** {@inheritDoc} */ @@ -117,7 +110,7 @@ } for (final GameObject node : mapModel.getMapSquare(point)) { - final ImageIcon img = archetypeSet.getFace(node); + final ImageIcon img = node.getNormalImage(); if (!node.isMulti() || (img.getIconWidth() == 32 && img.getIconHeight() == 32)) { offset.x = 0; offset.y = 0; Modified: trunk/daimonin/src/daieditor/CMainControl.java =================================================================== --- trunk/daimonin/src/daieditor/CMainControl.java 2008-07-28 19:27:52 UTC (rev 4547) +++ trunk/daimonin/src/daieditor/CMainControl.java 2008-07-28 19:55:59 UTC (rev 4548) @@ -955,7 +955,7 @@ JOptionPane.showMessageDialog(mainView, "No map loaded! Please load a map!!", "Error", JOptionPane.ERROR_MESSAGE); return; } - new MapPreview(getGridartaObjectsFactory().newSimpleLevelRenderer(currentMap.getMapModel(), archetypeSet).getFullImage()); + new MapPreview(getGridartaObjectsFactory().newSimpleLevelRenderer(currentMap.getMapModel()).getFullImage()); } /** {@inheritDoc} */ Modified: trunk/daimonin/src/daieditor/DaimoninObjectsFactory.java =================================================================== --- trunk/daimonin/src/daieditor/DaimoninObjectsFactory.java 2008-07-28 19:27:52 UTC (rev 4547) +++ trunk/daimonin/src/daieditor/DaimoninObjectsFactory.java 2008-07-28 19:55:59 UTC (rev 4548) @@ -39,7 +39,6 @@ import net.sf.gridarta.MapActions; import net.sf.gridarta.MapImageCache; import net.sf.gridarta.gameobject.ArchetypeParser; -import net.sf.gridarta.gameobject.ArchetypeSet; import net.sf.gridarta.gameobject.face.FaceObjects; import net.sf.gridarta.gameobject.match.GameObjectMatchersInstance; import net.sf.gridarta.gui.DefaultObjectChooser; @@ -157,7 +156,7 @@ /** {@inheritDoc} */ @NotNull - public LevelRenderer newSimpleLevelRenderer(@NotNull final MapModel<GameObject, MapArchObject, Archetype> mapModel, @NotNull final ArchetypeSet<GameObject, MapArchObject, Archetype> archetypeSet) { + public LevelRenderer newSimpleLevelRenderer(@NotNull final MapModel<GameObject, MapArchObject, Archetype> mapModel) { return new SimpleLevelRenderer(mapModel); } Modified: trunk/src/app/net/sf/gridarta/GridartaObjectsFactory.java =================================================================== --- trunk/src/app/net/sf/gridarta/GridartaObjectsFactory.java 2008-07-28 19:27:52 UTC (rev 4547) +++ trunk/src/app/net/sf/gridarta/GridartaObjectsFactory.java 2008-07-28 19:55:59 UTC (rev 4548) @@ -115,11 +115,10 @@ /** * Create a new level renderer instance. * @param mapModel the map model to render - * @param archetypeSet the archetype set * @return the new level renderer */ @NotNull - LevelRenderer newSimpleLevelRenderer(@NotNull MapModel<G, A, R> mapModel, @NotNull ArchetypeSet<G, A, R> archetypeSet); + LevelRenderer newSimpleLevelRenderer(@NotNull MapModel<G, A, R> mapModel); /** * Creates a new map view instance for a map control. Modified: trunk/src/app/net/sf/gridarta/map/DefaultMapControl.java =================================================================== --- trunk/src/app/net/sf/gridarta/map/DefaultMapControl.java 2008-07-28 19:27:52 UTC (rev 4547) +++ trunk/src/app/net/sf/gridarta/map/DefaultMapControl.java 2008-07-28 19:55:59 UTC (rev 4548) @@ -388,7 +388,7 @@ final LevelRenderer tmpLevelRenderer = levelRendererReference == null ? null : levelRendererReference.get(); final LevelRenderer levelRenderer; if (tmpLevelRenderer == null) { - levelRenderer = gridartaObjectsFactory.newSimpleLevelRenderer(mapModel, mainControl.getArchetypeSet()); + levelRenderer = gridartaObjectsFactory.newSimpleLevelRenderer(mapModel); levelRendererReference = new SoftReference<LevelRenderer>(levelRenderer); } else { levelRenderer = tmpLevelRenderer; Modified: trunk/src/test/net/sf/gridarta/map/DefaultMapModelTest.java =================================================================== --- trunk/src/test/net/sf/gridarta/map/DefaultMapModelTest.java 2008-07-28 19:27:52 UTC (rev 4547) +++ trunk/src/test/net/sf/gridarta/map/DefaultMapModelTest.java 2008-07-28 19:55:59 UTC (rev 4548) @@ -921,7 +921,7 @@ /** {@inheritDoc} */ @NotNull - public LevelRenderer newSimpleLevelRenderer(@NotNull final MapModel<TestGameObject, TestMapArchObject, TestArchetype> testGameObjectTestMapArchObjectTestArchetypeMapModel, @NotNull final ArchetypeSet<TestGameObject, TestMapArchObject, TestArchetype> testGameObjectTestMapArchObjectTestArchetypeArchetypeSet) { + public LevelRenderer newSimpleLevelRenderer(@NotNull final MapModel<TestGameObject, TestMapArchObject, TestArchetype> testGameObjectTestMapArchObjectTestArchetypeMapModel) { throw new AssertionError(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |