URL:
<http://gna.org/patch/?3323>
Summary: Allow requirement range "within city workable
radius" for tile-based requirements?
Project: Freeciv
Submitted by: jtn
Submitted on: Sat Jun 16 14:02:30 2012
Category: None
Priority: 3 - Low
Status: Need Info
Privacy: Public
Assigned to: None
Originator Email:
Open/Closed: Open
Discussion Lock: Any
Planned Release:
_______________________________________________________
Details:
It might be nice if tile-based prerequisites (terrain, specials, bases etc)
could be required to be somewhere in a range of a city's workable radius,
rather than just on or adjacent to the city centre.
However, the implications aren't trivial, so this ticket may end up closed
without a fix.
An example given freeciv-dev
<http://mail.gna.org/public/freeciv-dev/2012-06/msg00052.html> was a "gold
mine" city improvement which could only be built in a city with gold nearby
(would also need patch #3322).
Answering the question "is a tile with properties X in workable range of this
city" isn't trivially cheap (requires iterating over city map), but is it
prohibitively expensive?
I suspect it's manageable unless some AI is going to call it in some inner
loop.
Answering the inverse question "which cities can work this tile" is likely to
be prohibitively expensive, so we'd better avoid that.
(As it happens, in the current implementation, it would actually be much
cheaper to answer the question "which city _is_ working this tile". Perhaps
"worked by city" would be a useful alternative range? )
It would seem reasonable to use the range "City" for this. In contexts where a
non-NULL city is provided to is_req_active(), the "Tile" range already means
the tile the city is on, and I can't think of another sensible meaning for
"City" for tile-based requirements.
(Except, perhaps, "city is _working_ this kind of tile".)
A quick survey of situations where the "City" range is meaningful (I may have
missed some):
* Improvement build requirements: straightforward at build time.
** In some cases (but not others), improvements are sold if the requirement
goes away (e.g., harbours need nearby ocean). The current mechanism for that
(city_landlocked_sell_coastal_improvements()) already isn't very general and
wouldn't be easy to extend to city-radius requirements.
*** However, moving to the alternative strategy suggested in comments, of
checking every improvement's requirements once per turn, would work.
*** But, examples of reqs whose disappearance don't cause buildings to be sold
include tech and other buildings. We probably don't want to change that. So
there's inconsistency here already.
** It would be pretty annoying to have a gold mine sold due to a temporary
city radius fluctuation due to plague or whatever. But that's probably up to
ruleset designers.
*** If we used a tile-worked requirement, we certainly wouldn't want to sell
as soon as a city stopped working a tile.
* Specialist requirements: probably sensible.
** May need to re-assess specialists whenever city radius or nearby terrain
changes, expensive...
* Disaster: straightforward, because disasters don't persist.
_______________________________________________________
Reply to this item at:
<http://gna.org/patch/?3323>
_______________________________________________
Message sent via/by Gna!
http://gna.org/
_______________________________________________
Freeciv-dev mailing list
[email protected]
https://mail.gna.org/listinfo/freeciv-dev