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