<URL: http://bugs.freeciv.org/Ticket/Display.html?id=40279 >

 Current military base code requires exactly two bases defined. Civ1
ruleset should have no airbase. Currently used attempt to disable
airbase from civ1 rules does not work.

 Attached patch adds 'disabled' field to military base definitions.
Disabled bases cannot be built.


 - ML

diff -Nurd -X.diff_ignore freeciv/common/base.c freeciv/common/base.c
--- freeciv/common/base.c       2007-11-27 21:57:32.000000000 +0200
+++ freeciv/common/base.c       2008-06-15 15:13:25.000000000 +0300
@@ -108,6 +108,11 @@
     return FALSE;
   }
 
+  if (pbase->disabled) {
+    /* Base type not in game */
+    return FALSE;
+  }
+
   return are_reqs_active(unit_owner(punit), NULL, NULL, ptile,
                          unit_type(punit), NULL, NULL, &pbase->reqs,
                          RPT_CERTAIN);
diff -Nurd -X.diff_ignore freeciv/common/base.h freeciv/common/base.h
--- freeciv/common/base.h       2007-08-06 16:41:57.000000000 +0300
+++ freeciv/common/base.h       2008-06-15 15:06:52.000000000 +0300
@@ -47,6 +47,7 @@
 
 struct base_type {
   Base_type_id item_number;
+  bool disabled;
   struct name_translation name;
   char graphic_str[MAX_LEN_NAME];
   char graphic_alt[MAX_LEN_NAME];
diff -Nurd -X.diff_ignore freeciv/data/civ1/terrain.ruleset 
freeciv/data/civ1/terrain.ruleset
--- freeciv/data/civ1/terrain.ruleset   2008-06-14 18:24:47.000000000 +0300
+++ freeciv/data/civ1/terrain.ruleset   2008-06-15 15:10:32.000000000 +0300
@@ -1729,6 +1729,9 @@
 ; [fortress] and [airbase].
 ;
 ; name                    = Name of the base type.
+; disabled                = Not really in game. This field will be removed
+;                           in future versions when number of
+;                           bases defined is adjustable.
 ; graphic                 = tag specifing preferred graphic
 ; graphic_alt             = tag for alternate garphic if preferred graphic is 
not 
 ;                           present. Can use eg "-" for no alternate graphic.
@@ -1764,12 +1767,15 @@
 
 [airbase]
 name         = _("Airbase")
+disabled     = 1
 graphic      = "base.airbase"
 graphic_alt  = "-"
 activity_gfx = "unit.airbase"
 reqs         =
     { "type", "name", "range"
-      "Tech", "Never", "Player"
+      "Tech", "Radio", "Player"
+      "TerrainClass", "Land", "Local"
+      "UnitFlag", "Airbase", "Local"
     }
 gui_type     = "Airbase"
 build_time   = 3
diff -Nurd -X.diff_ignore freeciv/data/civ2/terrain.ruleset 
freeciv/data/civ2/terrain.ruleset
--- freeciv/data/civ2/terrain.ruleset   2008-06-14 18:24:47.000000000 +0300
+++ freeciv/data/civ2/terrain.ruleset   2008-06-15 15:11:09.000000000 +0300
@@ -1766,6 +1766,9 @@
 ; [fortress] and [airbase].
 ;
 ; name                    = Name of the base type.
+; disabled                = Not really in game. This field will be removed
+;                           in future versions when number of
+;                           bases defined is adjustable.
 ; graphic                 = tag specifing preferred graphic
 ; graphic_alt             = tag for alternate garphic if preferred graphic is 
not 
 ;                           present. Can use eg "-" for no alternate graphic.
diff -Nurd -X.diff_ignore freeciv/data/default/terrain.ruleset 
freeciv/data/default/terrain.ruleset
--- freeciv/data/default/terrain.ruleset        2008-06-14 18:24:47.000000000 
+0300
+++ freeciv/data/default/terrain.ruleset        2008-06-15 15:10:41.000000000 
+0300
@@ -1883,6 +1883,9 @@
 ; [fortress] and [airbase].
 ;
 ; name                    = Name of the base type.
+; disabled                = Not really in game. This field will be removed
+;                           in future versions when number of
+;                           bases defined is adjustable.
 ; graphic                 = tag specifing preferred graphic
 ; graphic_alt             = tag for alternate garphic if preferred graphic is 
not 
 ;                           present. Can use eg "-" for no alternate graphic.
diff -Nurd -X.diff_ignore freeciv/server/ruleset.c freeciv/server/ruleset.c
--- freeciv/server/ruleset.c    2008-05-06 03:59:25.000000000 +0300
+++ freeciv/server/ruleset.c    2008-06-15 15:11:47.000000000 +0300
@@ -1954,6 +1954,9 @@
       section = "unknown";
     }
 
+    pbase->disabled = secfile_lookup_bool_default(file, FALSE,
+                                                  "%s.disabled", section);
+
     sz_strlcpy(pbase->graphic_str,
                secfile_lookup_str_default(file, "-", "%s.graphic", section));
     sz_strlcpy(pbase->graphic_alt,
_______________________________________________
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev

Reply via email to