Author: cazfi
Date: Fri Sep 16 08:11:47 2016
New Revision: 33814

URL: http://svn.gna.org/viewcvs/freeciv?rev=33814&view=rev
Log:
Implemented requirement value editing for remaining requirement types.

See patch #7686

Modified:
    trunk/common/achievements.c
    trunk/common/achievements.h
    trunk/common/fc_types.h
    trunk/common/terrain.h
    trunk/tools/ruledit/tab_misc.cpp
    trunk/tools/ruledit/univ_value.c

Modified: trunk/common/achievements.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/achievements.c?rev=33814&r1=33813&r2=33814&view=diff
==============================================================================
--- trunk/common/achievements.c (original)
+++ trunk/common/achievements.c Fri Sep 16 08:11:47 2016
@@ -43,6 +43,7 @@
 
   for (i = 0; i < ARRAY_SIZE(achievements); i++) {
     achievements[i].id = i;
+    achievements[i].disabled = FALSE;
     achievements[i].first = NULL;
     achievements[i].value = 0;
     achievements[i].culture = 0;

Modified: trunk/common/achievements.h
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/achievements.h?rev=33814&r1=33813&r2=33814&view=diff
==============================================================================
--- trunk/common/achievements.h (original)
+++ trunk/common/achievements.h Fri Sep 16 08:11:47 2016
@@ -1,4 +1,4 @@
-/********************************************************************** 
+/***********************************************************************
  Freeciv - Copyright (C) 1996 - A Kjeldberg, L Gregersen, P Unold
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -26,6 +26,7 @@
 {
   int id;
   struct name_translation name;
+  bool disabled;
   enum achievement_type type;
   int value;
   bool unique;
@@ -70,6 +71,15 @@
   }                                                          \
 }
 
+#define achievements_active_iterate(_p)                      \
+  achievements_iterate(_p) {                                 \
+    if (!_p->disabled) {
+
+#define achievements_active_iterate_end                      \
+    }                                                        \
+  } achievements_iterate_end;
+
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: trunk/common/fc_types.h
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/fc_types.h?rev=33814&r1=33813&r2=33814&view=diff
==============================================================================
--- trunk/common/fc_types.h     (original)
+++ trunk/common/fc_types.h     Fri Sep 16 08:11:47 2016
@@ -324,6 +324,7 @@
 #define SPECENUM_VALUE2NAME N_("ISO")
 #define SPECENUM_VALUE3 TF_HEX
 #define SPECENUM_VALUE3NAME N_("Hex")
+#define TOPO_FLAG_BITS  4
 #include "specenum_gen.h"
 
 /* Used in the network protocol. */
@@ -336,6 +337,7 @@
 #define SPECENUM_VALUE2NAME "Improvement"
 #define SPECENUM_VALUE3 IG_SPECIAL
 #define SPECENUM_VALUE3NAME "Special"
+#define SPECENUM_COUNT  IG_COUNT
 #include "specenum_gen.h"
 
 /* Sometimes we don't know (or don't care) if some requirements for effect

Modified: trunk/common/terrain.h
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/terrain.h?rev=33814&r1=33813&r2=33814&view=diff
==============================================================================
--- trunk/common/terrain.h      (original)
+++ trunk/common/terrain.h      Fri Sep 16 08:11:47 2016
@@ -95,6 +95,7 @@
 /* Can build roads and/or railroads */
 #define SPECENUM_VALUE2 TA_CAN_ROAD
 #define SPECENUM_VALUE2NAME N_("CanRoad")
+#define SPECENUM_COUNT  TA_COUNT
 #include "specenum_gen.h"
 
 /* Used in the network protocol. */

Modified: trunk/tools/ruledit/tab_misc.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/tools/ruledit/tab_misc.cpp?rev=33814&r1=33813&r2=33814&view=diff
==============================================================================
--- trunk/tools/ruledit/tab_misc.cpp    (original)
+++ trunk/tools/ruledit/tab_misc.cpp    Fri Sep 16 08:11:47 2016
@@ -30,6 +30,7 @@
 #include "registry.h"
 
 // common
+#include "achievements.h"
 #include "game.h"
 #include "government.h"
 #include "specialist.h"
@@ -304,7 +305,12 @@
 
   // Third column
   row = 0;
-  stats->item(row++, 
7)->setText(QString::number(game.control.num_achievement_types));
+
+  count = 0;
+  achievements_active_iterate(pach) {
+    count++;
+  } achievements_active_iterate_end;
+  stats->item(row++, 7)->setText(QString::number(count));
 
   count = 0;
   base_count = 0;

Modified: trunk/tools/ruledit/univ_value.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/tools/ruledit/univ_value.c?rev=33814&r1=33813&r2=33814&view=diff
==============================================================================
--- trunk/tools/ruledit/univ_value.c    (original)
+++ trunk/tools/ruledit/univ_value.c    Fri Sep 16 08:11:47 2016
@@ -324,15 +324,54 @@
     }
     break;
   case VUT_TERRAINALTER:
+    for (i = 0; i < TA_COUNT; i++) {
+      cb(terrain_alteration_name(i), univ->value.terrainalter == i, data);
+    }
+    break;
   case VUT_CITYTILE:
+    for (i = 0; i < CITYT_LAST; i++) {
+      cb(citytile_type_name(i), univ->value.citytile == i, data);
+    }
+    break;
   case VUT_ACHIEVEMENT:
+    achievements_active_iterate(pach) {
+      cb(achievement_rule_name(pach), univ->value.achievement == pach, data);
+    } achievements_active_iterate_end;
+    break;
   case VUT_DIPLREL:
+    for (i = 0; i < DS_LAST; i++) {
+      cb(diplstate_type_name(i), univ->value.diplrel == i, data);
+    }
+    for (; i < DRO_LAST; i++) {
+      cb(diplrel_other_name(i), univ->value.diplrel == i, data);
+    }
+    break;
   case VUT_UNITSTATE:
+    for (i = 0; i < USP_COUNT; i++) {
+      cb(ustate_prop_name(i), univ->value.unit_state == i, data);
+    }
+    break;
   case VUT_NATIONGROUP:
+    nation_groups_iterate(pgroup) {
+      cb(nation_group_rule_name(pgroup), univ->value.nationgroup == pgroup, 
data);
+    } nation_groups_iterate_end;
+    break;
   case VUT_TOPO:
+    for (i = 0; i < TOPO_FLAG_BITS; i++) {
+      cb(topo_flag_name(1 << i), univ->value.topo_property == 1 << i, data);
+    }
+    break;
   case VUT_IMPR_GENUS:
+    for (i = 0; i < IG_COUNT; i++) {
+      cb(impr_genus_id_name(i), univ->value.impr_genus == i, data);
+    }
+    break;
   case VUT_ACTION:
-    /* Not yet implemented */
+    action_iterate(act) {
+      struct action *pact = action_by_number(act);
+
+      cb(action_rule_name(pact), univ->value.action == pact, data);
+    } action_iterate_end;
     break;
   case VUT_MINSIZE:
   case VUT_MINYEAR:


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to