Index: common/capstr.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/capstr.c,v retrieving revision 1.43 diff -u -r1.43 capstr.c --- capstr.c 2000/02/19 05:03:17 1.43 +++ capstr.c 2000/02/29 17:43:08 @@ -70,7 +70,7 @@ * are not directly related to the capability strings discussed here.) */ -#define CAPABILITY "+1.10" +#define CAPABILITY "+1.10 flags" /* "+1.10" is protocol for 1.10.0 stable release */ Index: common/nation.h =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/nation.h,v retrieving revision 1.4 diff -u -r1.4 nation.h --- nation.h 1999/10/01 15:09:52 1.4 +++ nation.h 2000/02/29 17:43:08 @@ -31,12 +31,14 @@ char name_plural[MAX_LEN_NAME]; char flag_graphic_str[MAX_LEN_NAME]; char flag_graphic_alt[MAX_LEN_NAME]; + char flag_graphic_navy[MAX_LEN_NAME]; + char flag_graphic_air[MAX_LEN_NAME]; int leader_count; char *leader_name[MAX_NUM_LEADERS]; int leader_is_male[MAX_NUM_LEADERS]; int city_style; char **default_city_names; - struct Sprite *flag_sprite; + struct Sprite *flag_sprite, *navy_sprite, *air_sprite; /* untranslated copies: */ char name_orig[MAX_LEN_NAME]; Index: common/packets.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/packets.c,v retrieving revision 1.89 diff -u -r1.89 packets.c --- packets.c 2000/02/28 20:35:02 1.89 +++ packets.c 2000/02/29 17:43:08 @@ -2846,6 +2846,12 @@ cptr=put_string(cptr, packet->name_plural); cptr=put_string(cptr, packet->graphic_str); cptr=put_string(cptr, packet->graphic_alt); + + if (has_capability("flags", pc->capability)) { + cptr=put_string(cptr, packet->graphic_navy); + cptr=put_string(cptr, packet->graphic_air); + } + cptr=put_uint8(cptr, packet->leader_count); for( i=0; ileader_count; i++ ) { cptr=put_string(cptr, packet->leader_name[i]); @@ -2877,6 +2883,13 @@ iget_string(&iter, packet->name_plural, sizeof(packet->name_plural)); iget_string(&iter, packet->graphic_str, sizeof(packet->graphic_str)); iget_string(&iter, packet->graphic_alt, sizeof(packet->graphic_alt)); + if (has_capability("flags", pc->capability)) { + iget_string(&iter, packet->graphic_navy, sizeof(packet->graphic_navy)); + iget_string(&iter, packet->graphic_air, sizeof(packet->graphic_air)); + } else { + strcpy(packet->graphic_navy, "-"); + strcpy(packet->graphic_air, "-"); + } iget_uint8(&iter, &packet->leader_count); for( i=0; ileader_count; i++ ) { iget_string(&iter, packet->leader_name[i], sizeof(packet->leader_name[i])); Index: common/packets.h =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/packets.h,v retrieving revision 1.60 diff -u -r1.60 packets.h --- packets.h 2000/01/19 16:33:21 1.60 +++ packets.h 2000/02/29 17:43:08 @@ -668,6 +668,8 @@ char name_plural[MAX_LEN_NAME]; char graphic_str[MAX_LEN_NAME]; char graphic_alt[MAX_LEN_NAME]; + char graphic_navy[MAX_LEN_NAME]; + char graphic_air[MAX_LEN_NAME]; int leader_count; char leader_name[MAX_NUM_LEADERS][MAX_LEN_NAME]; Index: client/options.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/options.c,v retrieving revision 1.24 diff -u -r1.24 options.c --- options.c 2000/02/01 20:51:26 1.24 +++ options.c 2000/02/29 17:43:08 @@ -36,6 +36,7 @@ int sound_bell_at_new_turn; int smooth_move_units=1; int do_combat_animation=1; +int show_navy_flags=0; int ai_popup_windows=0; int ai_manual_turn_done=1; int auto_center_on_unit=1; @@ -50,6 +51,7 @@ client_option options[] = { GEN_OPTION(use_solid_color_behind_units, N_("Solid unit background color")), + GEN_OPTION(show_navy_flags, N_("Show naval/airforce flags ")), GEN_OPTION(sound_bell_at_new_turn, N_("Sound bell at new turn ")), GEN_OPTION(smooth_move_units, N_("Smooth unit moves ")), GEN_OPTION(do_combat_animation, N_("Show combat animation ")), Index: client/options.h =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/options.h,v retrieving revision 1.4 diff -u -r1.4 options.h --- options.h 2000/02/01 20:51:26 1.4 +++ options.h 2000/02/29 17:43:08 @@ -14,6 +14,7 @@ #define FC__OPTIONS_H extern int use_solid_color_behind_units; +extern int show_navy_flags; extern int sound_bell_at_new_turn; extern int smooth_move_units; extern int do_combat_animation; Index: client/packhand.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/packhand.c,v retrieving revision 1.112 diff -u -r1.112 packhand.c --- packhand.c 2000/02/28 20:52:24 1.112 +++ packhand.c 2000/02/29 17:43:09 @@ -1385,6 +1385,8 @@ sz_strlcpy(pl->name_plural, p->name_plural); sz_strlcpy(pl->flag_graphic_str, p->graphic_str); sz_strlcpy(pl->flag_graphic_alt, p->graphic_alt); + sz_strlcpy(pl->flag_graphic_navy, p->graphic_navy); + sz_strlcpy(pl->flag_graphic_air, p->graphic_air); pl->leader_count = p->leader_count; for( i=0; ileader_count; i++) { pl->leader_name[i] = mystrdup(p->leader_name[i]); Index: client/tilespec.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/tilespec.c,v retrieving revision 1.24 diff -u -r1.24 tilespec.c --- tilespec.c 2000/01/23 02:58:54 1.24 +++ tilespec.c 2000/02/29 17:43:09 @@ -719,6 +719,26 @@ this->flag_graphic_alt, 1, "nation", this->name); + if (strcmp(this->flag_graphic_navy, "-")) { + this->navy_sprite = lookup_sprite_tag_alt(this->flag_graphic_navy, + this->flag_graphic_str, + 1, "nation", this->name); + } + + if (strcmp(this->flag_graphic_navy, "-")) { + this->air_sprite = lookup_sprite_tag_alt(this->flag_graphic_air, + this->flag_graphic_str, + 1, "nation", this->name); + } + + if (!this->navy_sprite) { + this->navy_sprite = this->flag_sprite; + } + + if (!this->air_sprite) { + this->air_sprite = this->flag_sprite; + } + /* should probably do something if NULL, eg generic default? */ } @@ -735,6 +755,14 @@ ***********************************************************************/ static struct Sprite *get_unit_nation_flag_sprite(struct unit *punit) { + if (show_navy_flags) { + if (is_sailing_unit(punit)) + return get_nation_by_plr(&game.players[punit->owner])->navy_sprite; + if (is_air_unit(punit)) + return get_nation_by_plr(&game.players[punit->owner])->air_sprite; + if (is_heli_unit(punit)) + return get_nation_by_plr(&game.players[punit->owner])->air_sprite; + } return get_nation_by_plr(&game.players[punit->owner])->flag_sprite; } Index: data/default/nations.ruleset =================================================================== RCS file: /home/freeciv/CVS/freeciv/data/default/nations.ruleset,v retrieving revision 1.37 diff -u -r1.37 nations.ruleset --- nations.ruleset 2000/02/27 15:27:17 1.37 +++ nations.ruleset 2000/02/29 17:43:09 @@ -25,6 +25,8 @@ ; flag = string to look for in client tilespec files for ; preferred flag icon ; flag_alt = alternate flag icon string, or "-" +; flag_navy = flag for navy (optional; falls back to flag/flag_alt) +; flag_air = flag for airforce (optional; falls back to flag/flag_alt) ; ; Next are some hints for AI, as defined in struct player_race ; Ask the guy who designed this struct for more explanation :-) Index: server/plrhand.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/plrhand.c,v retrieving revision 1.116 diff -u -r1.116 plrhand.c --- plrhand.c 2000/02/28 20:12:22 1.116 +++ plrhand.c 2000/02/29 17:43:10 @@ -1938,7 +1938,7 @@ for (j = 0; j < MAX_NUM_WORKLISTS; j++) copy_worklist(&info.worklists[j], &game.players[i].worklists[j]); - + send_packet_player_info(game.players[o].conn, &info); } } Index: server/ruleset.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/ruleset.c,v retrieving revision 1.48 diff -u -r1.48 ruleset.c --- ruleset.c 2000/01/02 11:32:16 1.48 +++ ruleset.c 2000/02/29 17:43:10 @@ -1401,6 +1401,10 @@ secfile_lookup_str(&file, "%s.flag", sec[i])); sz_strlcpy(pl->flag_graphic_alt, secfile_lookup_str(&file, "%s.flag_alt", sec[i])); + sz_strlcpy(pl->flag_graphic_navy, + secfile_lookup_str_default(&file, "-", "%s.flag_navy", sec[i])); + sz_strlcpy(pl->flag_graphic_air, + secfile_lookup_str_default(&file, "-", "%s.flag_air", sec[i])); /* Ruler titles */ @@ -1877,6 +1881,8 @@ sz_strlcpy(packet.name_plural, n->name_plural_orig); sz_strlcpy(packet.graphic_str, n->flag_graphic_str); sz_strlcpy(packet.graphic_alt, n->flag_graphic_alt); + sz_strlcpy(packet.graphic_navy, n->flag_graphic_navy); + sz_strlcpy(packet.graphic_air, n->flag_graphic_air); packet.leader_count = n->leader_count; for(i=0; i < n->leader_count; i++) { sz_strlcpy(packet.leader_name[i], n->leader_name[i]);