On 19.11.2012 11:36, Michael T. Pope wrote: > On Sun, 18 Nov 2012 02:32:10 PM Michael Vehrs wrote: > >> As it turns out, csDisposeSettlement doesn't produce ideal results, >> either, as you can easily check with the included patch. >> > Alas no. I am blocked by the crash below which is unrelated to the patch. > However I am not particularly surprised that csDisposeSettlement is > misbehaving. I will look into it. The crash occurs as follows: > 1. Start freecol, select map editor. > 2. Import a recent game > 3. Try to add a settlement to a free (non-owned) tile adjacent to the border > of a radius-1 Apache settlement >
I can't reproduce that. Can you provide the delinquent savegame? However, I noticed that I could not place a city next to the border of an Apache camp. There was no crash and no indication why it should not be possible, but it simply wasn't. That also needs to be investigated. > => > java.util.logging.LogManager$RootLogger log > WARNING: Uncaught exception from thread: Thread[AWT-EventQueue-0,6,main] > Mon Nov 19 09:07:37 CST 2012 > Thread ID: 15 > Stack trace: > java.lang.IllegalArgumentException: Trying to retrieve AbstractOption with ID > 'model.option.landPriceFactor' returned 'null'. > at > net.sf.freecol.common.model.Specification.getOption(Specification.java:658) > at > net.sf.freecol.common.model.Specification.getInteger(Specification.java:823) > at net.sf.freecol.common.model.Player.getLandPrice(Player.java:1581) > at > net.sf.freecol.common.model.Player.canClaimForSettlementReason(Player.java:1266) > at > net.sf.freecol.common.model.Player.canClaimForSettlement(Player.java:1247) > at > net.sf.freecol.common.model.Player.getClaimableTiles(Player.java:1397) > at > net.sf.freecol.common.model.Settlement.placeSettlement(Settlement.java:223) > at > net.sf.freecol.client.gui.panel.MapEditorTransformPanel$SettlementTransform.transform(MapEditorTransformPanel.java:391) > at > net.sf.freecol.client.control.MapEditorController.transform(MapEditorController.java:144) > at > net.sf.freecol.client.gui.CanvasMapEditorMouseListener.mouseReleased(CanvasMapEditorMouseListener.java:226) > at java.awt.Component.processMouseEvent(Component.java:6505) > at javax.swing.JComponent.processMouseEvent(JComponent.java:3312) > at java.awt.Component.processEvent(Component.java:6270) > at java.awt.Container.processEvent(Container.java:2229) > at java.awt.Component.dispatchEventImpl(Component.java:4861) > at java.awt.Container.dispatchEventImpl(Container.java:2287) > at java.awt.Component.dispatchEvent(Component.java:4687) > at > java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) > at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) > at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) > at java.awt.Container.dispatchEventImpl(Container.java:2273) > at java.awt.Window.dispatchEventImpl(Window.java:2713) > at java.awt.Component.dispatchEvent(Component.java:4687) > at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707) > at java.awt.EventQueue.access$000(EventQueue.java:101) > at java.awt.EventQueue$3.run(EventQueue.java:666) > at java.awt.EventQueue$3.run(EventQueue.java:664) > at java.security.AccessController.doPrivileged(Native Method) > at > java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) > at > java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) > at java.awt.EventQueue$4.run(EventQueue.java:680) > at java.awt.EventQueue$4.run(EventQueue.java:678) > at java.security.AccessController.doPrivileged(Native Method) > at > java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) > at java.awt.EventQueue.dispatchEvent(EventQueue.java:677) > at > java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) > at > java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) > at > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) > at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) > at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) > at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) > > >> As far as the >> map editor is concerned, I think placing two settlements with >> overlapping territories and then removing one of them, should restore >> the original territory of the remaining settlement. >> > Mostly agree. The map editor only deals with the tiles within the immediate > radius of each settlement. These certainly should recover cleanly. However > in general, settlements can acquire tiles beyond the immediate radius. These > are more problematic, and indeed are usually the ones where there might be > multiple claimants, and are thus responsible for the general hairiness of the > settlement disposal code. > > Hopefully I can fix csDisposeSettlement quick, and thus the patch should be > good. However if you want to do something simpler for the map editor that > just handles the radius-enclosed tiles, that would work too. > > Cheers, > Mike Pope > Regards Michael ------------------------------------------------------------------------------ Monitor your physical, virtual and cloud infrastructure from a single web console. Get in-depth insight into apps, servers, databases, vmware, SAP, cloud infrastructure, etc. Download 30-day Free Trial. Pricing starts from $795 for 25 servers or applications! http://p.sf.net/sfu/zoho_dev2dev_nov _______________________________________________ Freecol-developers mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/freecol-developers
