Author: cazfi
Date: Wed Dec  9 23:34:08 2015
New Revision: 30926

URL: http://svn.gna.org/viewcvs/freeciv?rev=30926&view=rev
Log:
Added authors property for scenarios

Requested by Sveinung Kvilhaugsvik <sveinung>

See patch #6450

Modified:
    trunk/client/gui-gtk-2.0/editprop.c
    trunk/client/gui-gtk-3.0/editprop.c
    trunk/client/packhand.c
    trunk/common/game.c
    trunk/common/packets.def
    trunk/fc_version
    trunk/server/edithand.c
    trunk/server/savegame.c
    trunk/server/savegame2.c
    trunk/server/savegame3.c

Modified: trunk/client/gui-gtk-2.0/editprop.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-2.0/editprop.c?rev=30926&r1=30925&r2=30926&view=diff
==============================================================================
--- trunk/client/gui-gtk-2.0/editprop.c (original)
+++ trunk/client/gui-gtk-2.0/editprop.c Wed Dec  9 23:34:08 2015
@@ -356,6 +356,7 @@
   OPID_GAME_YEAR,
   OPID_GAME_SCENARIO,
   OPID_GAME_SCENARIO_NAME,
+  OPID_GAME_SCENARIO_AUTHORS,
   OPID_GAME_SCENARIO_DESC,
   OPID_GAME_SCENARIO_RANDSTATE,
   OPID_GAME_SCENARIO_PLAYERS,
@@ -1791,6 +1792,9 @@
       case OPID_GAME_SCENARIO_NAME:
         pv->data.v_const_string = pgame->scenario.name;
         break;
+      case OPID_GAME_SCENARIO_AUTHORS:
+        pv->data.v_const_string = pgame->scenario.authors;
+        break;
       case OPID_GAME_SCENARIO_DESC:
         pv->data.v_const_string = pgame->scenario.description;
         break;
@@ -2300,6 +2304,7 @@
       packet->year = pgame->info.year;
       packet->scenario = pgame->scenario.is_scenario;
       sz_strlcpy(packet->scenario_name, pgame->scenario.name);
+      sz_strlcpy(packet->scenario_authors, pgame->scenario.authors);
       sz_strlcpy(packet->scenario_desc, pgame->scenario.description);
       packet->scenario_players = pgame->scenario.players;
       /* TODO: Set more packet fields. */
@@ -2535,6 +2540,9 @@
         return;
       case OPID_GAME_SCENARIO_NAME:
         sz_strlcpy(packet->scenario_name, pv->data.v_const_string);
+        return;
+      case OPID_GAME_SCENARIO_AUTHORS:
+        sz_strlcpy(packet->scenario_authors, pv->data.v_const_string);
         return;
       case OPID_GAME_SCENARIO_DESC:
         sz_strlcpy(packet->scenario_desc, pv->data.v_const_string);
@@ -2975,6 +2983,7 @@
   case OPID_CITY_BUILDINGS:
   case OPID_PLAYER_NATION:
   case OPID_PLAYER_INVENTIONS:
+  case OPID_GAME_SCENARIO_AUTHORS:
   case OPID_GAME_SCENARIO_DESC:
     ev = extviewer_new(op);
     objprop_set_extviewer(op, ev);
@@ -3185,6 +3194,7 @@
   case OPID_CITY_BUILDINGS:
   case OPID_PLAYER_NATION:
   case OPID_PLAYER_INVENTIONS:
+  case OPID_GAME_SCENARIO_AUTHORS:
   case OPID_GAME_SCENARIO_DESC:
     ev = objprop_get_extviewer(op);
     if (pv) {
@@ -3403,6 +3413,7 @@
   case OPID_STARTPOS_NATIONS:
   case OPID_CITY_BUILDINGS:
   case OPID_PLAYER_INVENTIONS:
+  case OPID_GAME_SCENARIO_AUTHORS:
   case OPID_GAME_SCENARIO_DESC:
     hbox = gtk_hbox_new(FALSE, 4);
     ev->panel_widget = hbox;
@@ -3490,6 +3501,7 @@
     store = gtk_list_store_new(4, G_TYPE_BOOLEAN, G_TYPE_INT,
                                GDK_TYPE_PIXBUF, G_TYPE_STRING);
     break;
+  case OPID_GAME_SCENARIO_AUTHORS:
   case OPID_GAME_SCENARIO_DESC:
     textbuf = gtk_text_buffer_new(NULL);
     break;
@@ -3614,6 +3626,7 @@
                FALSE, FALSE, NULL, NULL);
     break;
 
+  case OPID_GAME_SCENARIO_AUTHORS:
   case OPID_GAME_SCENARIO_DESC:
     g_signal_connect(textbuf, "changed",
                      G_CALLBACK(extviewer_textbuf_changed), ev);
@@ -3870,6 +3883,7 @@
     g_free(buf);
     break;
 
+  case OPID_GAME_SCENARIO_AUTHORS:
   case OPID_GAME_SCENARIO_DESC:
     disable_gobject_callback(G_OBJECT(ev->textbuf),
                              G_CALLBACK(extviewer_textbuf_changed));
@@ -3877,6 +3891,7 @@
       GtkTextIter start, end;
       char *oldtext;
       /* Don't re-set content if unchanged, to avoid moving cursor */
+
       gtk_text_buffer_get_bounds(textbuf, &start, &end);
       oldtext = gtk_text_buffer_get_text(textbuf, &start, &end, TRUE);
       if (strcmp(oldtext, pv->data.v_const_string) != 0) {
@@ -3935,6 +3950,7 @@
     gtk_list_store_clear(ev->store);
     gtk_image_set_from_pixbuf(GTK_IMAGE(ev->panel_image), NULL);
     break;
+  case OPID_GAME_SCENARIO_AUTHORS:
   case OPID_GAME_SCENARIO_DESC:
     disable_gobject_callback(G_OBJECT(ev->textbuf),
                              G_CALLBACK(extviewer_textbuf_changed));
@@ -4195,6 +4211,7 @@
   pv = &value;
 
   switch (propid) {
+  case OPID_GAME_SCENARIO_AUTHORS:
   case OPID_GAME_SCENARIO_DESC:
     buf = propval_as_string(pv);
     gtk_label_set_text(GTK_LABEL(ev->panel_label), buf);
@@ -4362,6 +4379,9 @@
             | OPF_HAS_WIDGET | OPF_EDITABLE, VALTYPE_BOOL);
     ADDPROP(OPID_GAME_SCENARIO_NAME, _("Scenario Name"), OPF_IN_LISTVIEW
             | OPF_HAS_WIDGET | OPF_EDITABLE, VALTYPE_STRING);
+    ADDPROP(OPID_GAME_SCENARIO_AUTHORS, _("Scenario Authors"),
+            OPF_IN_LISTVIEW | OPF_HAS_WIDGET | OPF_EDITABLE,
+            VALTYPE_STRING);
     ADDPROP(OPID_GAME_SCENARIO_DESC, _("Scenario Description"),
             OPF_IN_LISTVIEW | OPF_HAS_WIDGET | OPF_EDITABLE,
             VALTYPE_STRING);

Modified: trunk/client/gui-gtk-3.0/editprop.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-3.0/editprop.c?rev=30926&r1=30925&r2=30926&view=diff
==============================================================================
--- trunk/client/gui-gtk-3.0/editprop.c (original)
+++ trunk/client/gui-gtk-3.0/editprop.c Wed Dec  9 23:34:08 2015
@@ -356,6 +356,7 @@
   OPID_GAME_YEAR,
   OPID_GAME_SCENARIO,
   OPID_GAME_SCENARIO_NAME,
+  OPID_GAME_SCENARIO_AUTHORS,
   OPID_GAME_SCENARIO_DESC,
   OPID_GAME_SCENARIO_RANDSTATE,
   OPID_GAME_SCENARIO_PLAYERS,
@@ -1791,6 +1792,9 @@
       case OPID_GAME_SCENARIO_NAME:
         pv->data.v_const_string = pgame->scenario.name;
         break;
+      case OPID_GAME_SCENARIO_AUTHORS:
+        pv->data.v_const_string = pgame->scenario.authors;
+        break;
       case OPID_GAME_SCENARIO_DESC:
         pv->data.v_const_string = pgame->scenario.description;
         break;
@@ -2300,6 +2304,7 @@
       packet->year = pgame->info.year;
       packet->scenario = pgame->scenario.is_scenario;
       sz_strlcpy(packet->scenario_name, pgame->scenario.name);
+      sz_strlcpy(packet->scenario_authors, pgame->scenario.authors);
       sz_strlcpy(packet->scenario_desc, pgame->scenario.description);
       packet->scenario_players = pgame->scenario.players;
       /* TODO: Set more packet fields. */
@@ -2535,6 +2540,9 @@
         return;
       case OPID_GAME_SCENARIO_NAME:
         sz_strlcpy(packet->scenario_name, pv->data.v_const_string);
+        return;
+      case OPID_GAME_SCENARIO_AUTHORS:
+        sz_strlcpy(packet->scenario_authors, pv->data.v_const_string);
         return;
       case OPID_GAME_SCENARIO_DESC:
         sz_strlcpy(packet->scenario_desc, pv->data.v_const_string);
@@ -2987,6 +2995,7 @@
   case OPID_CITY_BUILDINGS:
   case OPID_PLAYER_NATION:
   case OPID_PLAYER_INVENTIONS:
+  case OPID_GAME_SCENARIO_AUTHORS:
   case OPID_GAME_SCENARIO_DESC:
     ev = extviewer_new(op);
     objprop_set_extviewer(op, ev);
@@ -3200,6 +3209,7 @@
   case OPID_CITY_BUILDINGS:
   case OPID_PLAYER_NATION:
   case OPID_PLAYER_INVENTIONS:
+  case OPID_GAME_SCENARIO_AUTHORS:
   case OPID_GAME_SCENARIO_DESC:
     ev = objprop_get_extviewer(op);
     if (pv) {
@@ -3418,6 +3428,7 @@
   case OPID_STARTPOS_NATIONS:
   case OPID_CITY_BUILDINGS:
   case OPID_PLAYER_INVENTIONS:
+  case OPID_GAME_SCENARIO_AUTHORS:
   case OPID_GAME_SCENARIO_DESC:
     hbox = gtk_grid_new();
     gtk_grid_set_column_spacing(GTK_GRID(hbox), 4);
@@ -3510,6 +3521,7 @@
     store = gtk_list_store_new(4, G_TYPE_BOOLEAN, G_TYPE_INT,
                                GDK_TYPE_PIXBUF, G_TYPE_STRING);
     break;
+  case OPID_GAME_SCENARIO_AUTHORS:
   case OPID_GAME_SCENARIO_DESC:
     textbuf = gtk_text_buffer_new(NULL);
     break;
@@ -3639,6 +3651,7 @@
                FALSE, FALSE, NULL, NULL);
     break;
 
+  case OPID_GAME_SCENARIO_AUTHORS:
   case OPID_GAME_SCENARIO_DESC:
     g_signal_connect(textbuf, "changed",
                      G_CALLBACK(extviewer_textbuf_changed), ev);
@@ -3895,12 +3908,14 @@
     g_free(buf);
     break;
 
+  case OPID_GAME_SCENARIO_AUTHORS:
   case OPID_GAME_SCENARIO_DESC:
     disable_gobject_callback(G_OBJECT(ev->textbuf),
                              G_CALLBACK(extviewer_textbuf_changed));
     {
       GtkTextIter start, end;
       char *oldtext;
+
       /* Don't re-set content if unchanged, to avoid moving cursor */
       gtk_text_buffer_get_bounds(textbuf, &start, &end);
       oldtext = gtk_text_buffer_get_text(textbuf, &start, &end, TRUE);
@@ -3960,6 +3975,7 @@
     gtk_list_store_clear(ev->store);
     gtk_image_set_from_pixbuf(GTK_IMAGE(ev->panel_image), NULL);
     break;
+  case OPID_GAME_SCENARIO_AUTHORS:
   case OPID_GAME_SCENARIO_DESC:
     disable_gobject_callback(G_OBJECT(ev->textbuf),
                              G_CALLBACK(extviewer_textbuf_changed));
@@ -4220,6 +4236,7 @@
   pv = &value;
 
   switch (propid) {
+  case OPID_GAME_SCENARIO_AUTHORS:
   case OPID_GAME_SCENARIO_DESC:
     buf = propval_as_string(pv);
     gtk_label_set_text(GTK_LABEL(ev->panel_label), buf);
@@ -4386,6 +4403,9 @@
             | OPF_HAS_WIDGET | OPF_EDITABLE, VALTYPE_BOOL);
     ADDPROP(OPID_GAME_SCENARIO_NAME, _("Scenario Name"), OPF_IN_LISTVIEW
             | OPF_HAS_WIDGET | OPF_EDITABLE, VALTYPE_STRING);
+    ADDPROP(OPID_GAME_SCENARIO_AUTHORS, _("Scenario Authors"),
+            OPF_IN_LISTVIEW | OPF_HAS_WIDGET | OPF_EDITABLE,
+            VALTYPE_STRING);
     ADDPROP(OPID_GAME_SCENARIO_DESC, _("Scenario Description"),
             OPF_IN_LISTVIEW | OPF_HAS_WIDGET | OPF_EDITABLE,
             VALTYPE_STRING);

Modified: trunk/client/packhand.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/packhand.c?rev=30926&r1=30925&r2=30926&view=diff
==============================================================================
--- trunk/client/packhand.c     (original)
+++ trunk/client/packhand.c     Wed Dec  9 23:34:08 2015
@@ -2922,6 +2922,7 @@
 {
   game.scenario.is_scenario = packet->is_scenario;
   sz_strlcpy(game.scenario.name, packet->name);
+  sz_strlcpy(game.scenario.authors, packet->authors);
   sz_strlcpy(game.scenario.description, packet->description);
   game.scenario.players = packet->players;
   game.scenario.startpos_nations = packet->startpos_nations;

Modified: trunk/common/game.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/game.c?rev=30926&r1=30925&r2=30926&view=diff
==============================================================================
--- trunk/common/game.c (original)
+++ trunk/common/game.c Wed Dec  9 23:34:08 2015
@@ -341,6 +341,7 @@
   game.scenario.description[0] = '\0';
   game.scenario.is_scenario = FALSE;
   game.scenario.name[0] = '\0';
+  game.scenario.authors[0] = '\0';
   game.scenario.players = TRUE;
   game.scenario.startpos_nations = FALSE;
   game.scenario.handmade = FALSE;

Modified: trunk/common/packets.def
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/packets.def?rev=30926&r1=30925&r2=30926&view=diff
==============================================================================
--- trunk/common/packets.def    (original)
+++ trunk/common/packets.def    Wed Dec  9 23:34:08 2015
@@ -1885,7 +1885,8 @@
 PACKET_SCENARIO_INFO = 180; sc, handle-via-packet, handle-per-conn
   BOOL   is_scenario;
   STRING name[256];
-  STRING description[MAX_LEN_PACKET];
+  STRING authors[MAX_LEN_PACKET / 5];
+  STRING description[MAX_LEN_PACKET / 5 * 3];
   BOOL   players;
   BOOL   startpos_nations;
   BOOL   save_random;
@@ -2141,7 +2142,8 @@
   YEAR year;
   BOOL scenario;
   STRING scenario_name[256];
-  STRING scenario_desc[MAX_LEN_PACKET];
+  STRING scenario_authors[MAX_LEN_PACKET / 5];
+  STRING scenario_desc[MAX_LEN_PACKET / 5 * 3];
   BOOL scenario_random;
   BOOL scenario_players;
   BOOL startpos_nations;

Modified: trunk/fc_version
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/fc_version?rev=30926&r1=30925&r2=30926&view=diff
==============================================================================
--- trunk/fc_version    (original)
+++ trunk/fc_version    Wed Dec  9 23:34:08 2015
@@ -54,7 +54,7 @@
 #   - Avoid adding a new mandatory capability to the development branch for
 #     as long as possible.  We want to maintain network compatibility with
 #     the stable branch for as long as possible.
-NETWORK_CAPSTRING_MANDATORY="+Freeciv.Devel-3.0-2015.Dec.09"
+NETWORK_CAPSTRING_MANDATORY="+Freeciv.Devel-3.0-2015.Dec.10"
 NETWORK_CAPSTRING_OPTIONAL=""
 
 FREECIV_DISTRIBUTOR=""

Modified: trunk/server/edithand.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/edithand.c?rev=30926&r1=30925&r2=30926&view=diff
==============================================================================
--- trunk/server/edithand.c     (original)
+++ trunk/server/edithand.c     Wed Dec  9 23:34:08 2015
@@ -1557,6 +1557,12 @@
     changed = TRUE;
   }
 
+  if (0 != strncmp(packet->scenario_authors, game.scenario.authors,
+                   MAX_LEN_PACKET)) {
+    sz_strlcpy(game.scenario.authors, packet->scenario_authors);
+    changed = TRUE;
+  }
+
   if (0 != strncmp(packet->scenario_desc, game.scenario.description,
                    MAX_LEN_PACKET)) {
     sz_strlcpy(game.scenario.description, packet->scenario_desc);

Modified: trunk/server/savegame.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/savegame.c?rev=30926&r1=30925&r2=30926&view=diff
==============================================================================
--- trunk/server/savegame.c     (original)
+++ trunk/server/savegame.c     Wed Dec  9 23:34:08 2015
@@ -3063,6 +3063,7 @@
   if (scen_text[0] != '\0') {
     game.scenario.is_scenario = TRUE;
     sz_strlcpy(game.scenario.name, scen_text);
+    game.scenario.authors[0] = '\0';
     scen_text = secfile_lookup_str_default(file, "",
                                            "scenario.description");
     if (scen_text[0] != '\0') {

Modified: trunk/server/savegame2.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/savegame2.c?rev=30926&r1=30925&r2=30926&view=diff
==============================================================================
--- trunk/server/savegame2.c    (original)
+++ trunk/server/savegame2.c    Wed Dec  9 23:34:08 2015
@@ -1743,6 +1743,14 @@
   }
 
   buf = secfile_lookup_str_default(loading->file, "",
+                                   "scenario.authors");
+  if (buf[0] != '\0') {
+    sz_strlcpy(game.scenario.authors, buf);
+  } else {
+    game.scenario.authors[0] = '\0';
+  }
+
+  buf = secfile_lookup_str_default(loading->file, "",
                                    "scenario.description");
   if (buf[0] != '\0') {
     sz_strlcpy(game.scenario.description, buf);

Modified: trunk/server/savegame3.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/savegame3.c?rev=30926&r1=30925&r2=30926&view=diff
==============================================================================
--- trunk/server/savegame3.c    (original)
+++ trunk/server/savegame3.c    Wed Dec  9 23:34:08 2015
@@ -2226,6 +2226,14 @@
   }
 
   buf = secfile_lookup_str_default(loading->file, "",
+                                   "scenario.authors");
+  if (buf[0] != '\0') {
+    sz_strlcpy(game.scenario.authors, buf);
+  } else {
+    game.scenario.authors[0] = '\0';
+  }
+
+  buf = secfile_lookup_str_default(loading->file, "",
                                    "scenario.description");
   if (buf[0] != '\0') {
     sz_strlcpy(game.scenario.description, buf);
@@ -2286,6 +2294,13 @@
   /* Name is mandatory to the level that is saved even if empty. */
   mod_entry = secfile_insert_str(saving->file, game.scenario.name, 
"scenario.name");
   entry_str_set_gt_marking(mod_entry, TRUE);
+
+  /* Authors list is saved only if it exist */
+  if (game.scenario.authors[0] != '\0') {
+    mod_entry = secfile_insert_str(saving->file, game.scenario.authors,
+                                   "scenario.authors");
+    entry_str_set_gt_marking(mod_entry, TRUE);
+  }
 
   /* Description is saved only if it exist */
   if (game.scenario.description[0] != '\0') {


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

Reply via email to