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
=>
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
signature.asc
Description: This is a digitally signed message part.
------------------------------------------------------------------------------ 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
