DELTA 77 39494 2861
SVN  º.¿‚Cš …8 €F G €j I‘ €\ G €< I‘ €ƒ G § I‘ €v G ¦ I‘ €W G ° I‘ €q G ½ I‘ € G ‰ I‘ €µ  G ‰ I‘ €ƒ* G ‰ I‘ €? G ‰ I‘ · G ‰ I‘ €„" G ‰ I‘ €g G ‰ I‘ €’L G ‰ I‘ €H G €G I‘ €‚$ G € I‘ €Q G ˆ I‘ €` G ˆ I‘ € G ˆ I‘ €ƒo G €, I‘ €‚u G €g I‘ €7 G €G I‘ €‰z G €, I‘ € G €\ I‘ €? G €V I‘ €4 G €3 I‘ €* G €[ I‘ €p G º I‘ ·
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#ifdef WIN32_NATIVE
#include <windows.h>	/* LoadLibrary() */
#endif

#ifdef SDL
#include "SDL.h"
#endif

#include <assert.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#include "capstr.h"
#include "dataio.h"
#include "diptreaty.h"
#include "fciconv.h"
#include "fcintl.h"
#include "game.h"
#include "idex.h"
#include "log.h"
#include "map.h"
#include "mem.h"
#include "netintf.h"
#include "packets.h"
#include "rand.h"
#include "support.h"
#include "timing.h"
#include "version.h"

#include "agents.h"
#include "attribute.h"
#include "audio.h"
#include "chatline_g.h"
#include "citydlg_g.h"
#include "cityrepdata.h"
#include "climisc.h"
#include "clinet.h"
#include "cma_core.h"		/* kludge */
#include "connectdlg_common.h"  /* client_kill_server() */
#include "connectdlg_g.h"
#include "control.h" 
#include "dialogs_g.h"
#include "diplodlg_g.h"
#include "ggzclient.h"
#include "gui_main_g.h"
#include "helpdata.h"		/* boot_help_texts() */
#include "mapctrl_g.h"
#include "mapview_g.h"
#include "menu_g.h"
#include "messagewin_g.h"
#include "options.h"
#include "packhand.h"
#include "pages_g.h"
#include "plrdlg_g.h"
#include "repodlgs_g.h"
#include "tilespec.h"
#include "themes_common.h"

#include "civclient.h"

char *logfile = NULL;
char *scriptfile = NULL;
static char tileset_name[512] = "\0";
char sound_plugin_name[512] = "\0";
char sound_set_name[512] = "\0";
char server_host[512] = "\0";
char user_name[512] = "\0";
char password[MAX_LEN_PASSWORD] = "\0";
char metaserver[512] = "\0";
int  server_port = -1;
bool auto_connect = FALSE; /* TRUE = skip "Connect to Freeciv Server" dialog */
bool in_ggz = FALSE;

struct civclient client;

static enum client_states civclient_state = C_S_INITIAL;

/* TRUE if an end turn request is blocked by busy agents */
bool waiting_for_end_turn = FALSE;

/* 
 * TRUE for the time between sending PACKET_TURN_DONE and receiving
 * PACKET_NEW_YEAR. 
 */
bool turn_done_sent = FALSE;

/*
 * TRUE between receiving PACKET_END_TURN and PACKET_BEGIN_TURN
 */
static bool server_busy = FALSE;

****
  Convert a text string from the internal to the data encoding, when it
  is written to the network.
*/
static char *put_conv(const char *src, size_t *length)
{
  char *out = internal_to_data_string_malloc(src);

  if (out) {
    *length = strlen(out);
    return out;
  } else {
    *length = 0;
    return NULL;
  }
}

****
  Convert a text string from the data to the internal encoding when it is
  first read from the network.  Returns FALSE if the destination isn't
  large enough or the source was bad.
*/
static bool get_conv(char *dst, size_t ndst,
		     const char *src, size_t nsrc)
{
  char *out = data_to_internal_string_malloc(src);
  bool ret = TRUE;
  size_t len;

  if (!out) {
    dst[0] = '\0';
    return FALSE;
  }

  len = strlen(out);
  if (ndst > 0 && len >= ndst) {
    ret = FALSE;
    len = ndst - 1;
  }

  memcpy(dst, out, len);
  dst[len] = '\0';
  free(out);

  return ret;
}

****
  Set up charsets for the client.
*/
static void charsets_init(void)
{
  dio_set_put_conv_callback(put_conv);
  dio_set_get_conv_callback(get_conv);
}

****
 This is called at program exit.
*/
static void at_exit(void)
{
  client_kill_server(TRUE);
  my_shutdown_network();
}

****
  Called only by set_client_state() below.
*/
static void client_game_init(void)
{
  game_init();
  attribute_init();
  agents_init();
  control_init();
}

****
  Called by set_client_state() and client_exit() below.
*/
static void client_game_free(void)
{
  control_done();
  free_help_texts();
  attribute_free();
  agents_free();
  game_free();
}

****
...
*/
int main(int argc, char *argv[])
{
  int i, loglevel;
  int ui_options = 0;
  bool ui_separator = FALSE;
  char *option=NULL;
  bool user_tileset = FALSE;

  /* Load win32 post-crash debugger */
#ifdef WIN32_NATIVE
# ifndef NDEBUG
  if (LoadLibrary("exchndl.dll") == NULL) {
#  ifdef DEBUG
    fprintf(stderr, "exchndl.dll could not be loaded, no crash debugger\n");
#  endif
  }
# endif
#endif

  i_am_client(); /* Tell to libcivcommon that we are client */

  init_nls();
  audio_init();
  init_character_encodings(gui_character_encoding, gui_use_transliteration);

  /* default argument values are set in options.c */
  loglevel=LOG_NORMAL;

  i = 1;

  while (i < argc) {
    if (ui_separator) {
      argv[1 + ui_options] = argv[i];
      ui_options++;
    } else if (is_option("--help", argv[i])) {
      fc_fprintf(stderr, _("Usage: %s [option ...]\n"
			   "Valid options are:\n"), argv[0]);
      fc_fprintf(stderr, _("  -a, --autoconnect\tSkip connect dialog\n"));
#ifdef DEBUG
      fc_fprintf(stderr, _("  -d, --debug NUM\tSet debug log level (0 to 4,"
			   " or 4:file1,min,max:...)\n"));
#else
      fc_fprintf(stderr,
		 _("  -d, --debug NUM\tSet debug log level (0 to 3)\n"));
#endif
      fc_fprintf(stderr,
		 _("  -h, --help\t\tPrint a summary of the options\n"));
      fc_fprintf(stderr, _("  -l, --log FILE\tUse FILE as logfile "
			   "(spawned server also uses this)\n"));
      fc_fprintf(stderr, _("  -m, --meta HOST\t"
			   "Connect to the metaserver at HOST\n"));
      fc_fprintf(stderr, _("  -n, --name NAME\tUse NAME as name\n"));
      fc_fprintf(stderr,
		 _("  -p, --port PORT\tConnect to server port PORT (usually with -a)\n"));
      fc_fprintf(stderr,
		 _("  -P, --Plugin PLUGIN\tUse PLUGIN for sound output %s\n"),
		 audio_get_all_plugin_names());
      fc_fprintf(stderr, _("  -r, --read FILE\tRead startup script FILE "
			   "(for spawned server only)\n"));
      fc_fprintf(stderr,
		 _("  -s, --server HOST\tConnect to the server at HOST (usually with -a)\n"));
      fc_fprintf(stderr,
		 _("  -S, --Sound FILE\tRead sound tags from FILE\n"));
      fc_fprintf(stderr, _("  -t, --tiles FILE\t"
			   "Use data file FILE.tilespec for tiles\n"));
      fc_fprintf(stderr, _("  -v, --version\t\tPrint the version number\n"));
      fc_fprintf(stderr, _("      --\t\t"
			   "Pass any following options to the UI.\n"
			   "\t\t\tTry \"%s -- --help\" for more.\n"), argv[0]);
      exit(EXIT_SUCCESS);
    } else if (is_option("--version",argv[i])) {
      fc_fprintf(stderr, "%s %s\n", freeciv_name_version(), client_string);
      exit(EXIT_SUCCESS);
    } else if ((option = get_option_malloc("--log", argv, &i, argc))) {
      logfile = option; /* never free()d */
    } else  if ((option = get_option_malloc("--read", argv, &i, argc))) {
      scriptfile = option; /* never free()d */
    } else if ((option = get_option_malloc("--name", argv, &i, argc))) {
      sz_strlcpy(user_name, option);
      free(option);
    } else if ((option = get_option_malloc("--meta", argv, &i, argc))) {
      sz_strlcpy(metaserver, option);
      free(option);
    } else if ((option = get_option_malloc("--Sound", argv, &i, argc))) {
      sz_strlcpy(sound_set_name, option);
      free(option);
    } else if ((option = get_option_malloc("--Plugin", argv, &i, argc))) {
      sz_strlcpy(sound_plugin_name, option);
      free(option);
    } else if ((option = get_option_malloc("--port",argv,&i,argc))) {
      if (sscanf(option, "%d", &server_port) != 1) {
	fc_fprintf(stderr,
		   _("Invalid port \"%s\" specified with --port option.\n"),
		   option);
	fc_fprintf(stderr, _("Try using --help.\n"));
        exit(EXIT_FAILURE);
      }
      free(option);
    } else if ((option = get_option_malloc("--server", argv, &i, argc))) {
      sz_strlcpy(server_host, option);
      free(option);
    } else if (is_option("--autoconnect", argv[i])) {
      auto_connect = TRUE;
    } else if ((option = get_option_malloc("--debug", argv, &i, argc))) {
      loglevel = log_parse_level_str(option);
      if (loglevel == -1) {
	fc_fprintf(stderr,
		   _("Invalid debug level \"%s\" specified with --debug "
		     "option.\n"), option);
	fc_fprintf(stderr, _("Try using --help.\n"));
        exit(EXIT_FAILURE);
      }
      free(option);
    } else if ((option = get_option_malloc("--tiles", argv, &i, argc))) {
      sz_strlcpy(tileset_name, option);
      free(option);
      user_tileset = TRUE;
    } else if (is_option("--", argv[i])) {
      ui_separator = TRUE;
    } else {
      fc_fprintf(stderr, _("Unrecognized option: \"%s\"\n"), argv[i]);
      exit(EXIT_FAILURE);
    }
    i++;
  } /* of while */

  /* Remove all options except those intended for the UI. */
  argv[1 + ui_options] = NULL;
  argc = 1 + ui_options;

  /* disallow running as root -- too dangerous */
  dont_run_as_root(argv[0], "freeciv_client");

  log_init(logfile, loglevel, NULL);

  /* after log_init: */

  (void)user_username(default_user_name, MAX_LEN_NAME);
  if (!is_valid_username(default_user_name)) {
    char buf[sizeof(default_user_name)];

    my_snprintf(buf, sizeof(buf), "_%s", default_user_name);
    if (is_valid_username(buf)) {
      sz_strlcpy(default_user_name, buf);
    } else {
      my_snprintf(default_user_name, sizeof(default_user_name),
		  "player%d", myrand(10000));
    }
  }

  /* initialization */

  game.all_connections = conn_list_new();
  game.est_connections = conn_list_new();

  ui_init();
  charsets_init();
  my_init_network();

  /* register exit handler */ 
  atexit(at_exit);

  chatline_common_init();
  message_options_init();
  init_player_dlg_common();
  init_themes();
  settable_options_init();

  load_general_options();

  if (tileset_name[0] == '\0') {
    sz_strlcpy(tileset_name, default_tileset_name);
  }
  if (sound_set_name[0] == '\0') 
    sz_strlcpy(sound_set_name, default_sound_set_name); 
  if (sound_plugin_name[0] == '\0')
    sz_strlcpy(sound_plugin_name, default_sound_plugin_name); 
  if (server_host[0] == '\0')
    sz_strlcpy(server_host, default_server_host); 
  if (user_name[0] == '\0')
    sz_strlcpy(user_name, default_user_name); 
  if (metaserver[0] == '\0')
    sz_strlcpy(metaserver, default_metaserver); 
  if (server_port == -1) server_port = default_server_port;

  /* This seed is not saved anywhere; randoms in the client should
     have cosmetic effects only (eg city name suggestions).  --dwp */
  mysrand(time(NULL));
  helpdata_init();
  boot_help_texts(NULL);

  tilespec_try_read(tileset_name, user_tileset);

  audio_real_init(sound_set_name, sound_plugin_name);
  audio_play_music("music_start", NULL);

  ggz_initialize();

  /* run gui-specific client */
  ui_main(argc, argv);

  /* termination */
  client_exit();
  
  /* not reached */
  return EXIT_SUCCESS;
}

****
...
*/
void client_exit(void)
{
  attribute_flush();
  client_remove_all_cli_conn();

  if (save_options_on_exit) {
    save_options();
  }
  
  tileset_free(tileset);
  
  ui_exit();
  
  chatline_common_done();
  message_options_free();
  client_game_free();

  helpdata_done(); /* client_exit() unlinks help text list */
  conn_list_free(game.all_connections);
  conn_list_free(game.est_connections);
  exit(EXIT_SUCCESS);
}


****
...
*/
void client_packet_input(void *packet, int type)
{
  if (!client_handle_packet(type, packet)) {
    freelog(LOG_ERROR, "Received unknown packet (type %d) from server!",
	    type);
  }
}

****
...
*/
void user_ended_turn(void)
{
  send_turn_done();
}

****
...
*/
void send_turn_done(void)
{
  freelog(LOG_DEBUG, "send_turn_done() turn_done_button_state=%d",
	  get_turn_done_button_state());

  if (!get_turn_done_button_state()) {
    /*
     * The turn done button is disabled but the user may have press
     * the return key.
     */

    if (agents_busy()) {
      waiting_for_end_turn = TRUE;
    }

    return;
  }

  waiting_for_end_turn = FALSE;
  turn_done_sent = TRUE;

  attribute_flush();

  dsend_packet_player_phase_done(&aconnection, game.info.turn);

  update_turn_done_button_state();
}

****
...
*/
void send_report_request(enum report_type type)
{
  dsend_packet_report_req(&aconnection, type);
}

****
...
*/
void set_client_state(enum client_states newstate)
{
  bool connect_error = (C_S_PREPARING == civclient_state)
      && (C_S_PREPARING == newstate);
  enum client_states oldstate = civclient_state;

  if (C_S_OVER == newstate) {
    /*
     * Extra kludge for end-game handling of the CMA.
     */
    if (client.playing) {
      city_list_iterate(client.playing->cities, pcity) {
	if (cma_is_city_under_agent(pcity, NULL)) {
	  cma_release_city(pcity);
	}
      } city_list_iterate_end;
    }
    popdown_all_city_dialogs();
    popdown_all_game_dialogs();
    set_unit_focus(NULL);
  }

  if (civclient_state != newstate) {

    /* If changing from pre-game state to _either_ select race
       or running state, then we have finished getting ruleset data.
    */
    if (C_S_PREPARING == civclient_state
	&& C_S_RUNNING == newstate) {
      audio_stop();		/* stop intro sound loop */
    }
      
    civclient_state = newstate;

    switch (civclient_state) {
    case C_S_RUNNING:
      init_city_report_game_data();
      load_ruleset_specific_options();
      create_event(NULL, E_GAME_START, _("Game started."));
      precalc_tech_data();
      if (client.playing) {
	player_research_update(client.playing);
      }
      role_unit_precalcs();
      boot_help_texts(client.playing);	/* reboot with player */
      can_slide = FALSE;
      update_unit_focus();
      can_slide = TRUE;
      set_client_page(PAGE_GAME);
      break;
    case C_S_PREPARING:
      popdown_all_city_dialogs();
      close_all_diplomacy_dialogs();
      popdown_all_game_dialogs();
      clear_notify_window();
      if (C_S_INITIAL != oldstate) {
	client_game_free();
      }
      client_game_init();
      set_unit_focus(NULL);
      if (!aconnection.established && !with_ggz) {
	set_client_page(in_ggz ? PAGE_GGZ : PAGE_MAIN);
      } else {
	set_client_page(PAGE_START);
      }
      break;
    default:
      break;
    };
    update_menus();
  }
  if (!aconnection.established && C_S_PREPARING == civclient_state) {
    gui_server_connect();
    if (auto_connect) {
      if (connect_error) {
	freelog(LOG_FATAL,
		_("There was an error while auto connecting; aborting."));
	exit(EXIT_FAILURE);
      } else {
	start_autoconnecting_to_server();
	auto_connect = FALSE;	/* don't try this again */
      }
    } 
  }
  update_turn_done_button_state();
  update_conn_list_dialog();
}


****
...
*/
enum client_states client_state(void)
{
  return civclient_state;
}

****
  Remove pconn from all connection lists in client, then free it.
*/
void client_remove_cli_conn(struct connection *pconn)
{
  if (pconn->player) {
    conn_list_unlink(pconn->player->connections, pconn);
  }
  conn_list_unlink(game.all_connections, pconn);
  conn_list_unlink(game.est_connections, pconn);
  assert(pconn != &aconnection);
  free(pconn);
}

****
  Remove (and free) all connections from all connection lists in client.
  Assumes game.all_connections is properly maintained with all connections.
*/
void client_remove_all_cli_conn(void)
{
  while (conn_list_size(game.all_connections) > 0) {
    struct connection *pconn = conn_list_get(game.all_connections, 0);
    client_remove_cli_conn(pconn);
  }
}

****
..
*/
void send_attribute_block_request()
{
  send_packet_player_attribute_block(&aconnection);
}

****
..
*/
void wait_till_request_got_processed(int request_id)
{
  input_from_server_till_request_got_processed(aconnection.sock,
					       request_id);
}

****
..
*/
bool client_is_observer(void)
{
  return aconnection.established && aconnection.observer;
}

/* Seconds_to_turndone is the number of seconds the server has told us
 * are left.  The timer tells exactly how much time has passed since the
 * server gave us that data. */
static double seconds_to_turndone = 0.0;
static struct timer *turndone_timer;

/* This value shows what value the timeout label is currently showing for
 * the seconds-to-turndone. */
static int seconds_shown_to_turndone;

****
  Reset the number of seconds to turndone from an "authentic" source.

  The seconds are taken as a double even though most callers will just
  know an integer value.
*/
void set_seconds_to_turndone(double seconds)
{
  if (game.info.timeout > 0) {
    seconds_to_turndone = seconds;
    turndone_timer = renew_timer_start(turndone_timer, TIMER_USER,
				       TIMER_ACTIVE);

    /* Maybe we should do an update_timeout_label here, but it doesn't
     * seem to be necessary. */
    seconds_shown_to_turndone = ceil(seconds) + 0.1;
  }
}

****
  Return the number of seconds until turn-done.  Don't call this unless
  game.info.timeout != 0.
*/
int get_seconds_to_turndone(void)
{
  if (game.info.timeout > 0) {
    return seconds_shown_to_turndone;
  } else {
    /* This shouldn't happen. */
    return FC_INFINITY;
  }
}

****
  This function should be called at least once per second.  It does various
  updates (idle animations and timeout updates).  It returns the number of
  seconds until it should be called again.
*/
double real_timer_callback(void)
{
  double time_until_next_call = 1.0;

  {
    double autoconnect_time = try_to_autoconnect();
    time_until_next_call = MIN(time_until_next_call, autoconnect_time);
  }

  if (C_S_RUNNING != client_state()) {
    return time_until_next_call;
  }

  {
    double blink_time = blink_turn_done_button();

    time_until_next_call = MIN(time_until_next_call, blink_time);
  }

  if (get_num_units_in_focus() > 0) {
    double blink_time = blink_active_unit();

    time_until_next_call = MIN(time_until_next_call, blink_time);
  }

  /* It is possible to have game.info.timeout > 0 but !turndone_timer, in the
   * first moments after the timeout is set. */
  if (game.info.timeout > 0 && turndone_timer) {
    double seconds = seconds_to_turndone - read_timer_seconds(turndone_timer);
    int iseconds = ceil(seconds) + 0.1; /* Turn should end right on 0. */

    if (iseconds < seconds_shown_to_turndone) {
      seconds_shown_to_turndone = iseconds;
      update_timeout_label();
    }

    time_until_next_call = MIN(time_until_next_call,
			       seconds - floor(seconds) + 0.001);
  }

  /* Make sure we wait at least 50 ms, otherwise we may not give any other
   * code time to run. */
  return MAX(time_until_next_call, 0.05);
}

****
  Returns TRUE if the client can issue orders (such as giving unit
  commands).  This function should be called each time before allowing the
  user to give an order.
*/
bool can_client_issue_orders(void)
{
  return (client.playing
	  && !client_is_observer()
	  && C_S_RUNNING == client_state());
}

****
  Returns TRUE iff the client can do diplomatic meetings with another 
  given player.
*/
bool can_meet_with_player(const struct player *pplayer)
{
  return (can_client_issue_orders()
	  /* && client.playing (above) */
	  && could_meet_with_player(client.playing, pplayer));
}

****
  Returns TRUE iff the client can get intelligence from another 
  given player.
*/
bool can_intel_with_player(const struct player *pplayer)
{
  return (client_is_observer()
	  || (client.playing
	      && could_intel_with_player(client.playing, pplayer)));
}

****
  Return TRUE if the client can change the view; i.e. if the mapview is
  active.  This function should be called each time before allowing the
  user to do mapview actions.
*/
bool can_client_change_view(void)
{
  return ((client.playing || client_is_observer())
	  && (C_S_RUNNING == client_state()
	      || C_S_OVER == client_state()));
}

****
  Sets if server is considered busy. Currently it is considered busy
  between turns.
*/
void set_server_busy(bool busy)
{
  if (busy != server_busy) {
    /* server_busy value will change */
    server_busy = busy;

    /* This may mean that we have to change from or to wait cursor */
    control_mouse_cursor(NULL);
  }
}

****
  Returns if server is considered busy at the moment
*/
bool is_server_busy(void)
{
  return server_busy;
}
ENDREP
DELTA 14208 0 356
SVN  È=È_%T †]  7†oˆ 5ˆŸ £f‰\Ÿ ….­RŽ •.³ivclientclient.playing;
  struct playerclient.playing;
  struct playerclient.playingENDREP
DELTA 3745 57771 104
SVN  f­O­O€­O/**********************************************************************
 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
   the Free Software Foundation; either version 2, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
***********************************************************************/

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <windowsx.h>

#include "fcintl.h"
#include "game.h"
#include "map.h"
#include "packets.h"
#include "player.h"
#include "support.h"
#include "unit.h"
#include "unitlist.h"

#include "clinet.h"
#include "civclient.h"
#include "control.h"
#include "dialogs.h"
#include "goto.h"
#include "gui_main.h"
#include "gui_stuff.h"
#include "mapview.h"


#include "gotodlg.h"

#define ID_GOTO 100
#define ID_AIRLIFT 101
#define ID_LIST 102
#define ID_ALL 103

static HWND goto_dialog;
static HWND goto_list;

static struct tile *original_tile;

static void update_goto_dialog(HWND list);
static struct city *get_selected_city(void);
static int show_all_cities;

/****************************************************************

*****************************************************************/
static LONG CALLBACK goto_dialog_proc(HWND dlg,UINT message,
				      WPARAM wParam,LPARAM lParam)
{
  struct city *pdestcity;
  switch(message)
    {
    case WM_CREATE:
    case WM_GETMINMAXINFO:
    case WM_SIZE:
      break;
    case WM_DESTROY:
      goto_dialog=NULL;
      break;
    case WM_CLOSE:
      center_tile_mapcanvas(original_tile); 
      DestroyWindow(dlg);
      break;
    case WM_COMMAND:
      switch(LOWORD(wParam))
	{
	case ID_LIST:
	  if (NULL != (pdestcity=get_selected_city())) {
	    struct unit *punit = head_of_units_in_focus();
	    center_tile_mapcanvas(pdestcity->tile);
	    if(punit && unit_can_airlift_to(punit, pdestcity)) {
	      EnableWindow(GetDlgItem(dlg,ID_AIRLIFT),TRUE);
	    } else {
	      EnableWindow(GetDlgItem(dlg,ID_AIRLIFT),FALSE);
	    }
	    break;
	  }
	  break;
	case ID_ALL:
	  show_all_cities=show_all_cities?0:1;
	  update_goto_dialog(GetDlgItem(dlg,ID_LIST));
	  break;
	case ID_GOTO:
	  {
	    pdestcity=get_selected_city();
	    if (pdestcity) {
	      unit_list_iterate(get_units_in_focus(), punit) {
      		send_goto_tile(punit, pdestcity->tile);
      	} unit_list_iterate_end;
		    DestroyWindow(dlg);
	    }
	  }
	  break;
	case ID_AIRLIFT:
	  {
	    pdestcity=get_selected_city();
	    if (pdestcity) {
	      unit_list_iterate(get_units_in_focus(), punit) {
          request_unit_airlift(punit, pdestcity);
      	} unit_list_iterate_end;
        DestroyWindow(dlg);
	    }

	  }
	  break;
	case IDCANCEL:
	  center_tile_mapcanvas(original_tile);
	  DestroyWindow(dlg);
	  break;
	  
	}
      break;
    default:
      return DefWindowProc(dlg,message,wParam,lParam);
    }
  return 0;
}
/****************************************************************
...
*****************************************************************/
void
popup_goto_dialog(void)
{
  struct fcwin_box *hbox;
  struct fcwin_box *vbox;
  if (goto_dialog)
    return;
  if (!can_client_change_view()) {
    return;
  }
  if (get_num_units_in_focus()==0) {
    return;
  }

  original_tile = get_center_tile_mapcanvas();

  goto_dialog=fcwin_create_layouted_window(goto_dialog_proc,
					   _("Goto/Airlift Unit"),
					   WS_OVERLAPPEDWINDOW,
					   CW_USEDEFAULT,CW_USEDEFAULT,
					   root_window,NULL,
					   REAL_CHILD,
					   NULL);
  vbox=fcwin_vbox_new(goto_dialog,FALSE);
  hbox=fcwin_hbox_new(goto_dialog,TRUE);
  fcwin_box_add_static(vbox,_("Goto/Airlift Unit"),
		       0,SS_LEFT,FALSE,FALSE,5);
  goto_list=fcwin_box_add_list(vbox,10,ID_LIST,
			       WS_VSCROLL | LBS_STANDARD,TRUE,TRUE,5);
  fcwin_box_add_button(hbox,_("Goto"),ID_GOTO,0,TRUE,TRUE,15);

  fcwin_box_add_button(hbox,_("Airlift"),ID_AIRLIFT,0,TRUE,TRUE,15);
  EnableWindow(GetDlgItem(goto_dialog,ID_AIRLIFT),FALSE);
  fcwin_box_add_button(hbox,_("All Cities"),ID_ALL,
		       0,TRUE,TRUE,15);
  fcwin_box_add_button(hbox,_("Cancel"),IDCANCEL,0,TRUE,TRUE,15);
  fcwin_box_add_box(vbox,hbox,FALSE,FALSE,5);
  fcwin_set_box(goto_dialog,vbox);
  update_goto_dialog(goto_list);
  ShowWindow(goto_dialog,SW_SHOWNORMAL);
}

/**************************************************************************
...
**************************************************************************/
static void update_goto_dialog(HWND list)
{
  int    j;
  char   name[MAX_LEN_NAME+3];

  ListBox_ResetContent(list);
  Button_SetState(GetDlgItem(goto_dialog,ID_ALL),show_all_cities);

  players_iterate(pplayer) {
    if (!show_all_cities && pplayer != client.playing) {
      continue;
    }
    city_list_iterate(pplayer->cities, pcity) {
      sz_strlcpy(name, city_name(pcity));
      /* FIXME: should use unit_can_airlift_to(). */
      if (pcity->airlift) {
        sz_strlcat(name, "(A)");
      }
      j=ListBox_AddString(list,name);
      ListBox_SetItemData(list,j,pcity->id);
    } city_list_iterate_end;
  } players_iterate_end;
}

/**************************************************************************
...
**************************************************************************/
static struct city *get_selected_city(void)
{
  int selection;  
  if ((selection=ListBox_GetCurSel(goto_list))==LB_ERR)
    return 0;
  return game_find_city_by_number(ListBox_GetItemData(goto_list,selection));

}
ENDREP
DELTA 13027 199 6243
SVN  ƒõgƒí{ƒv±: ˆ6 €F ‚/ˆe ‰‹‰ ›x”5£ †{°L€…9 ‚O¼5€O ¿K½ .Á¨ †Â?¬ ‰0Èn® oÒ€‚L …Ó8€ DØ4ˆ _Ùy€H ƒÚr€e -Þ4 šá €‚; ÖýN€w ‡Ô3€‚ ÞiŽ ‚gßyŽ  âo Bƒé@ FŽ ’ S×0 ƒAå{ +éH« ë€! ƒuìn‰ …ðr€{ i÷l‰ ˆ~øU‰ Š'‚b€J ƒ?‚Œb A  b‚c« "‚ú@ „W‚ N™ ‹‚¥9€ „‚±s€ƒ_ *‚å~ j‚ºa Cƒé? FŽ  :‚¼Z $ƒé@ N‚¿@€s i‚Ý4 FŽ €T i‚Ý4 FŽ º iÙ| FŽ €T i‚Ý4 FŽ  _‚Éw€‚Y *‚å~ U‚Î6€r i‚Ý4 FŽ €K D‚Ý4€C i‚Ý4 FŽ ™ Ù` FŽ €( „U‚Ú# T‚Þz€K ƒz‚á ‚‚å€‚C ˆn‚ég „-‚òh€  ƒ•@ µU‚ùL ›eƒ¯,€^ ˆyƒÍ™ ŸUƒÖityrep.h"
#include "civclient.h"
#include "climap.h"
#include "climiscuniversalcity_owner(pcity) == client.playingtotal, item, targets_used;
  struct universal targets[MAX_NUM_PRODUCTION_TARGETS];
  struct item items[MAX_NUM_PRODUCTION_TARGETS];
  char buf[100];
  bool changed;

  /* Test if the list improvements of pcity has changed */
  changed = false;
  improvement_iterate(pimprove) {
    int index = improvement_index(pimprove);
    bool has_building = city_has_building(pdialog->pcity, pimprove);
    bool had_building =
      pdialog->last_improvlist_seen[index];

    if ((has_building && !had_building)
        || (!has_building && had_building)) {
      changed = true;
      pdialog->last_improvlist_seen[index] = has_building;
    }
  } improvement_iterate_end;

  if (!changed) {
    return;
  }universal target = items[item].item;

    assert(VUT_IMPROVEMENT == target.kindcity_improvement_upkeep(pdialog->pcity, target.value.buildingimprovement_index(target.value.building)city_owner(pdialog->pcity) != client.playing  int free_upkeep[O_COUNT];
  int free_unhappyfree_unhappy = get_city_bonus(pdialog->pcity, EFT_MAKE_CONTENT_MIL);

  output_type_iterate(o) {
    free_upkeep[o] = get_city_output_bonus(pdialog->pcity, get_output_type(o),
                                           EFT_UNIT_UPKEEP_FREE_PER_CITY);
  } output_type_iterate_end;

  if  (city_owner(pdialog->pcity) != client.playingint upkeep_cost[O_COUNT];
    int happy_cost = city_unit_unhappiness(punit, &free_unhappy);
        
    city_unit_upkeep(punit, upkeep_cost, free_upkeep);
                                   pdialog->supported_y, upkeep_cost, happy_coststruct city *pcity=pdialog->pcity;    
  const char *descr = city_production_name_translation(pcity);enum citizen_category citizens[MAX_CITY_SIZE];
  int i;
  RECT rc;
  struct city *pcity=pdialog->pcity;
  int num_citizens = get_city_citizen_types(pcity, FEELING_FINAL, citizens);
  HDC hdcsrc = CreateCompatibleDC(NULL);
  HBITMAP oldbit = SelectObject(hdcsrc,pdialog->citizen_bmp);

  for (i = 0; i < num_citizens

  improvement_iterate(pimprove) {
    pdialog->last_improvlist_seen[improvement_index(pimprove)] = 0;
  } improvementstatic void buy_callback(struct city_dialog *pdialog)
{
  char buf[512];
  struct city *pcity = pdialog->pcity;
  const char *name = city_production_name_translation(pcity);
  int value = city_production_buy_gold_cost(pcity);
 
  if (value <= client.playing->economic.goldclient.playingclient.playing/
static void sellimprovement_by_number(pdialog->id_selected)city_improvement_name_translation(pdialog->pcity, improvement_by_number(pdialog->id_selected)),
	      impr_sell_gold(improvement_by_number(pdialog->id_selected)universalVUT_UTYPE == target.kind) {
		popup_help_dialog_typed(utype_name_translation(target.value.utype),
					HELP_UNIT);
	      } else if (is_great_wonder(target.value.building)) {
		popup_help_dialog_typed(improvement_name_translation(target.value.building.buildinguniversalan_city_build_now(pdialog->pcity, items[item].item)) {
	  struct universal
  city_worklist_commit(pdialog->pcity, pwlcity_name(pdialog->pcity)game_find_city_by_number(pdialog->pcity->trade[i]))) {
        sz_strlcpy(cityname, city_name(pcity));
      } else {
        sz_strlcpy(citynamestatic void supported_units_activate_close_callback(HWND w, void * data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  destroy_message_dialog(w);

  if (NULL != punit) {
    struct city *pcity =
      player_find_city_by_id(client.playing, punit->homecity);

    set_unit_focus(punit);
    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if (NULL != pdialog) {
        CityDlgClose(pdialog);
      } =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    request_unit_disband(punit/
static void present_units_homecity_callback(HWND w, void * data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    request_unit_change_homecity(punit/
static void present_units_cancel_callback(HWND w, void */              
static void present_units_activate_callback(HWND w, void * data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    set_unit_focus(punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  destroy_message_dialog(w);

  if (NULL != punit) {
    struct city *pcity = tile_city(punit->tile);

    set_unit_focus(punit);
    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if (NULL != pdialog) {
        CityDlgClose(pdialog);
      } =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    request_unit_sentry(punit/
static void present_units_fortify_callback(HWND w, void * data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    request_unit_fortify(punitstatic void unitupgrade_callback_yes(HWND w, void * data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    request_unit_upgrade(punit/
static void unitupgrade/
static void upgrade_callback(HWND w, void * data)
{
  char buf[512];
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t) data);

  if (NULL == city *pcity;
  struct unit *punit =
    player_find_unit_by_id(client.playing, pdialog->support_unit_ids[n]);

  if (NULL != punit
      && (pcity = game_find_city_by_number(punit->homecity))) {
    HWNDstatic void city_dlg_click_present(struct city_dialog *pdialog, int n)
{
  struct city *pcity;
  struct unit *punit =
    player_find_unit_by_id(client.playing, pdialog->present_unit_ids[n]);

  if (NULL != punit
      && (pcity=tile_city(punit->tile))
      && (pdialog=get_city_dialog(pcity))) { /* ??? */
     HWND wd = 

     if (NULL == can_upgrade_unittype(client.playing,unit_type(punit))) {
       message_dialog_button_set_sensitive(wd,6, FALSE);
     }
   }city_name(pcity)void refresh_unit_city_dialogs(struct unit *punit)
{
  struct city_dialog *pdialog;
  struct city *pcity_pre = tile_city(punit->tile);
  struct city *pcity_sup =
    player_find_city_by_id(client.playing, punit->homecity);city_name(pdialog->pcity)ENDREP
DELTA 14371 6682 636
SVN  ‚ŠS‚‹>‹F 1 €c ˆ.Ž ‚T—H€C 8šaŽ ‹«(Ž ŒT¶F€‚ „.Å0© Ê€ …WØ-µ `Þ;€
 ^à(¯ Lá7Ž »$âŽ ‚!EŽ †7ŸuŽ R¦;Ž …§Ž b¬:˜ F¸w¬ „p¯(Ž o´'€m „c¶Ž KºwŽ ŠX»QŽ ƒaÆ8Ž pÆ8 ˆXË¡ ¦NÔ€T Žü:/* ensure our pointer is valid */
  client.playing = valid_player_by_number(game.info.player_idx);
client.playingclient.playing) {
    pcity = player_find_city_by_id(client.playingclient.playingclient.playinglient.playing && can_client_change_view()) {
    int index = 0;

    if (A_UNSET != get_player_research(client.playing)->researching) {
      index = (NUM_TILES_PROGRESS
	       * get_player_research(client.playing)->bulbs_researched)
	/ (total_bulbs_required(client.playinglient.playing && can_client_change_view()lient.playing && can_client_change_view()
      && government_count() > 0) {
    struct government *gov = government_of_player(client.playingclient.playing && (pcity = find_palace(client.playingclient.playing && city_list_size(client.playing->cities) > 0) {
    /* Just focus on any city. */
    pcity = city_list_get(client.playingclient.playing && unit_list_size(client.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playing, pimproveif (can_player_build_unit_now(client.playingclient.playingclient.playing, pimprove);
    bool can_eventually_build =
	can_player_build_improvement_later(client.playingclient.playingclient.playingclient.playingclient.playingclient.playing || !client.playingclient.playing->economic.luxury;
  sci_end = lux_end + client.playing->economic.science;
  tax_end = 100;

  lux = client.playing->economic.luxury;
  sci = client.playing->economic.science;
  tax = client.playingENDREP
DELTA 14149 1571 179
SVN  •]•e …s ‹ Šl† „krfc_types.h"player *playing;ENDREP
DELTA 14259 4180 474
SVN  ­R­YD †]  k†o‹ ‡N¹ ˆK¥ivclient.h" (TECH_KNOWN == player_invention_state(client.playing, i)ENDREP
DELTA 10041 548 468
SVN  Ë	Ë(!} Š   ‚Š LŒ5· ŽCœ>“ ƒI«“ œ'®bivclient.h"
#include "climisc.h" (game.info.spacerace
     && pplayer == client.playinglayer_name(pplayer)layer_name(pplayer)ENDREP
DELTA 14109 0 5234
SVN  ÚÚUz…< ‡!  ]‡3€D }¥V© Q§pŽ Ž\©P© t¸R© œ¹l€X ÉdÖ8€B £~ `€X  ­~’ pº<¸ P­~” NŽ  ‚VÊ9µ kÒ5  NŽ œ 1º<‘ FÃ~ uÑ* ‡ZÒ5client.playing) {
      switch (pplayer_get_diplstate(client.playingplayer_by_number(plrno) != client.playingclient.playingplayer_by_number(g_value_get_int(&value))player_by_number(g_value_get_int(&value))/* TRANS: Nations report title */
  gui_dialog_set_title(players_dialog_shell, _("Nationclient.playing) {
    switch (pplayer_get_diplstate(client.playingplayer_by_number(plrno))) {
      popup_intel_dialog(player_by_number(plrno));
    }
  }void players_sship    popup_spaceship_dialog(player_by_number(plrno));
  }  AI toggle callback
                player_name(player_by_number(plrno)) AI skill level setting callbackstatic void players_ai_skill    char buf[512]name(player_by_number(plrno))ENDREP
DELTA 10385 174 225
SVN  ÍÌw6‚K †>  †aŒ †Y‡fŽ ²)ŽN‰ ‚)À}‰ ‚(Ã,‰ ‚ÅZ€
 ‚9Èn€| QÌ4#include "fcintlcivclient.h"client.playing_("Lock")_("Lock")_("Lock")
    my_snprintf(buf, sizeof(buf), _("%s max rate: %d%%"),
		government_name_for_player(client.playing),
		get_player_bonus(client.playingclient.playing->economic.tax, 0,
		      client.playing->economic.luxury, 0,
		      client.playing->economic.science, 0 );
ENDREP
DELTA 10411 46473 11413
SVN  ‚‡äIƒtä; †
 ¾ ‚	†]€Z A €& AŒ ‚ Z‰@© ?‹#„ ‚SŒe‘ ƒ1*€\ ŒV“O€ ‹| €‚ F°z€ƒV Q°0€D x²Q J³N ‚µ ·>€ƒz IºR€‚= 
¿€‹ „]Á€@ …HÆRš Ì‚ G ¬ JŒ €| E÷± JŒ € G÷ Vv AŒ €ƒ@ U“­ W”1€ H»@… AŒ ² H»@… AŒ €z J÷{… AŒ €‚ A  -Ý€ƒ áD€e ‚`ã2€ƒ, Sèt€ I»@˜ AŒ €ƒ A  ƒ~žg“ ‚;¢z‚ A ¯ AŒ € {ªc€< aÜ@­ AŒ €†j A €N AŒ €! R¨@€‡ ƒ¬› ‚Z¯n F²B ´¿ }¶@‚ „T¸=‹ AŒ €s l¾f€: UÃ8 ƒ*Ä€P ‚ZÈ› Ë* `Í#€C 5Ð)” ]Ñ[€ƒ ]Ú< Ü ‚‚… G €` JŒ €Qring.h>

#include "events.h"
#include "fcintl.h"
#include "iozdialogs_g.h"
#include "mapview_common.h"
#include "options.h"
#include "overview_common.h"
#include "plrdlg_common.h"
#include "repodlgs_common.h"
#include "servers.h"
#include "themes_common.h"
#include "tilespec.h"


 The "options" file handles actual "options", and also view options,
 message options, dialog/report settings, cma settings, server settings,
 and global worklists.
/
_URL;
char default_theme_name[512] = "\0"FALSgoto_into_unknownstatic void reqtree_show_icons_callback(struct client_option *option);

const char *client_option_class_names[COC_MAX] = {
  N_("Graphics"),
  N_("Overview"),
  N_("Sound"),
  N_("Interface"),
  N_("Network"),
  N_("Fontheme_name, N_("Theme"),
		 N_("By changing this option you change the active theme."),
		 COC_GRAPHICS,
		 get_themes_list, theme_reread_callbackDisabling this option will turn off combat animation "
		     "between units on the mapview."),
		  COC_GRAPHICS),
  GEN_BOOL_OPTION_CB(draw_full_citybar, N_("Draw the citybar"),
		     N_("Setting this option will display a 'citybar' "
			"containing useful information beneath each city. "
			"Disabling this option will display only the city's "
			"name and optionally, productio_CB(reqtree_show_icons,
                     N_("Show icons in the technology tree"),
                     N_("Setting this option will display icons "
		        "on the technology tree diagram. Turning "
		        "this option off makes the technology tree "
		        "more compact."),
		     COC_GRAPHICS, reqtree_show_icons_callback),
  GEN_BOOL_OPTION_CB(draw_unit_shields, N_("Draw shield graphics for units"),
		     N_("Setting this option will draw a shield icoDisable this option if you do not want to "
		     "press the Turn Dgoto_into_unknown, N_("Allow goto into the unknown"),
		  N_("Setting this option will make the game consider "
		     "moving into unknown tiles.  If not, then goto routes "
		     "will detour around or be blocked by unknown tiles."),
		  COC_INTERFACE),
  GEN_BOOL_OPTION(center_when_popup_city, N_("Center map when Popup city"),
		  N_("Setting this option makes the mapview center on a "
		     "city when its city dialog is popped up."),
		  COC_INTERFACE),
  GEN_BOOL_OPTION(concise_city_production,N_("End Turn when done moving"),
		  N_("Setting this option makes your turn end automatically "
		     "when all your units are done moving."),
		  COC_INTERFACE),
  GEN_BOOL_OPTION(ask_city_name, N_("Prompt for city names"),
		  N_("Disabling this option will make the names of newly "
		     "founded cities chosenSetting this option will pop up a newly-founded "
		     "city's city dialog automatically."),
		  COC_INTERFACE),

  GEN_BOOL_OPTION(overview.layers[OLAYER_BACKGROUND],
		  N_("Background layer"),
		  N_("The background layer of the overview shows just "
		     "ocean and land."), COC_OVERVIEW),
  GEN_BOOL_OPTION_CB(overview.layers[OLAYER_RELIEF],
		     N_("Terrain relief map layer"),
		     N_("The relief layer shows all terrains on the map."),
		     COC_OVERVIEW, overview_redraw_callback),
  GEN_BOOL_OPTION_CB(overview.layers[OLAYER_BORDERS],
		     N_("Borders layer"),
		     N_("The borders layer of the overview shows which tiles "
			"are owned by each player."),
		     COC_OVERVIEW, overview_redraw_callback),
  GEN_BOOL_OPTION_CB(overview.layers[OLAYER_UNITS],
		     N_("Units layer"),
		     N_("Enabling this will draw units on the overview."),
		     COC_OVERVIEW, overview_redraw_callback),
  GEN_BOOL_OPTION_CB(overview.layers[OLAYER_CITIES],
		     N_("Cities layer"),
		     N_("Enabling this will draw cities on the overview."),
		     COC_OVERVIEW, overview_redraw_callback),
  GEN_BOOL_OPTION_CB(overview.fog,
		     N_("Overview fog of war"),
		     N_("Enabling this will show fog of war on the "
		        "overview."),
		     COC_OVERVIEW, overview_redraw_callback)
};
#undef GEN_INT_OPTION
#undef GEN_BOOL_OPTION
#undef GEN_STR_OPTION

static client_option *fc_options = NULL;
static int num_options = 0bool player_dlg_show_dead_players = TRUE;
bool reqtree_show_icon(player_dlg_show_dead_play

****
  Return the first item of fc_options.
/
struct client_option *client_option_array_first(void)
{
  if (num_options > 0) {
    return fc_options;
  }
  return NULL;**********
  Return the last item of fc_options.
/
const struct client_option *client_option_array_last(void)
{
  if (num_options > 0) {
    return &fc_options[num_options - 1];
  }
  return NULL;/
void message_options_init(void)
{
  int none[] = {
    E_IMP_BUY, E_IMP_SOLD, E_UNIT_BUY,
    E_UNIT_LOST_ATT, E_UNIT_WIN_ATT, E_GAME_START,
    E_NATION_SELECTED, E_CITY_BUILD, E_NEXT_YEAR,
    E_CITY_PRODUCTION_CHANGED,
    E_CITY_MAY_SOON_GROW, E_WORKLIST, E_AI_DEBUG
  };
  int out_only[] = {
    E_CHAT_MSG, E_CHAT_ERROR, E_CONNECTION, E_LOG_ERROR, E_SETTING
  };
  int all[] = {
    E_LOG_FATAL, E_TUTORIAL
  };
  int i;

  for (i = 0; i < none); i++) {
    messages_where[none[i]] = 0MW_OUTPUT;
  }
  for (i = 0; i < ARRAY_SIZE(all); i++) {
    messages_where[all[i]] = MW_MESSAGES | MW_POPUP;
  }

  events_init(... 
/
void message_options_free(void)
{
  events_free(... 
/
static void message_options_load(struct section_file *file, const char *prefix)
{
  int i;

  for (i = 0; i < E_LAST; i++) {
    messages_where[i] =
      secfile_lookup_int_default(file, messages_where[i],
				 "%s.message_where_%02d", prefix, i);... 
/
static void message_options_save(struct section_file *file, const char *prefix)
{
  int i;

  for (i = 0; i < E_LAST; i++) {
    secfile_insert_int_comment(file, messages_where[i],
			       get_event_message_text(i),
			       "%s.message_where_%02d", prefix, i);
  }
}


)
{
  struct cm_parameter parameter;
  const char *name =
    secfile_lookup_str_default(file, "preset",
                               "cma.preset%d.name", i);

  output_type_iterate(o) {
    parameter.minimal_surplus[o] =
        secfile_lookup_int_default(file, 0, "cma.preset%d.minsurp%d", i, o);
    parameter.factor[o] =
        secfile_lookup_int_default(file, 0, "cma.preset%d.factor%d", i, o);
  parameter.happy_factor =
      secfile_lookup_int_default(file, 0, "cma.preset%d.happyfactor", iint i)
{
  const struct cm_parameter *const pparam = cmafec_preset_get_parameter(i);
  char *name = cmafec_preset_get_descr(i);

  secfile_insert_str(file, name, "cma.preset%d.name", i);

  output_type_iterate(o) {
    secfile_insert_int(file, pparam->minimal_surplus[o],
                       "cma.preset%d.minsurp%d", i, o);
    secfile_insert_int(file, pparam->factor[o],
                       "cma.preset%d.factor%d", i, o                      "cma.preset%d.reqhappy", i);
  secfile_insert_int(file, pparam->happy_factor,
                     "cma.preset%d.happyfactor", iInsert all cma presets.
/
static void save_cma_presets(struct section_file *file)
{
  int i;

  secfile_insert_int_comment(file, cmafec_preset_num(),
                             _("If you add a preset by hand,"
                               " also update \"number_of_presets\""),
                             "cma.number_of_presets");
  for (i = 0; i < cmafec_preset_num(); i++) {
    save_cma_preset(file, i);
  }
}


freelog(LOG_ERROR, 


 Load settable per connection/server options.
/
void load_settable_options(bool send_it)
{
  char buffer[MAX_LEN_MSG];
  struct section_file sf;
  char *name;
  char *desired_string;
  int i = 0
    return;

  for (; i < num_settable_options; i++) {
    struct options_settable *o = &settable_options[i];
    bool changed = FALSE;

    my_snprintf(buffer, sizeof(buffer), "/set %s ", o->name);

    switch (o->stype) {
    case SSET_BOOL:
      o->desired_val = secfile_lookup_bool_default(&sf, o->default_val,
                                                   "server.%s", o->name);
      changed = (o->desired_val != o->default_val
              && o->desired_val != o->val);
      if (changed) {
        sz_strlcat(buffer, o->desired_val ? "1" : "0");
      }
      break;
    case SSET_INT:
      o->desired_val = secfile_lookup_int_default(&sf, o->default_val,
                                                  "server.%s", o->name);
      changed = (o->desired_val != o->default_val
              && o->desired_val != o->val);
      if (changed) {
        cat_snprintf(buffer, sizeof(buffer), "%d", o->desired_val);
      }
      break;
    case SSET_STRING:
      desired_string = secfile_lookup_str_default(&sf, o->default_strval,
                                                  "server.%s", o->name);
      if (NULL != desired_string) {
        if (NULL != o->desired_strval) {
          free(o->desired_strval);
        }
        o->desired_strval = mystrdup(desired_string);
        changed = (0 != strcmp(desired_string, o->default_strval)
                && 0 != strcmp(desired_string, o->strval));
        if (changed) {
          sz_strlcat(buffer, desired_string);
        }
      }
      break;
    default:
      freelog(LOG_ERROR,
              "load_settable_options() bad type %d.",
              o->stype);
      break;
    };

    if (changed && send_it) {
      send_chat(buffer);
    }
  }
Save settable per connection/server options.
/
static void save_settable_options(struct section_file *sf)
{
  int i = 0;

  for (; i < num_settable_options; i++) {
    struct options_settable *o = &settable_options[i];

    switch (o->stype) {
    case SSET_BOOL:
      if (o->desired_val != o->default_val) {
        secfile_insert_bool(sf, o->desired_val, "server.%s", o->name);
      }
      break;
    case SSET_INT:
      if (o->desired_val != o->default_val) {
        secfile_insert_int(sf, o->desired_val, "server.%s",  o->name);
      }
      break;
    case SSET_STRING:
      if (NULL != o->desired_strval
       && 0 != strcmp(o->desired_strval, o->default_strval)) {
        secfile_insert_str(sf, o->desired_strval, "server.%s", o->name);
      }
      break;
    default:
      freelog(LOG_ERROR,
              "save_settable_options() bad type %d.",
              o->stype);
      break;
    };
  }
}



 Load from the rc file any options that are not ruleset specific.
 It is called after ui_init(), yet before ui_main().
 Unfortunately, this means that some clients cannot display.
 Instead, use freelog().
/
void load_general_options(void)
{
  struct section_file sf;
  int i, num;
  view_option *v;
  char *name;
  const char * const prefix = "client";

  assert(fc_fc_options = fc_calloc(num_options, sizeof(*fc_options));
  memcpy(fc_options, common_options, sizeof(common_options));
  memcpy(fc_options + ARRAY_SIZE(common_options), gui_options,
	 num_gui_options * sizeof(*fc_options));

  name = option_file_name();
  if (!name) {
    /* FIXME: need better messages */
    freelog(LOG_ERROR, _("Save failed, cannot find a filename."));
    return;
  }
  if (!section_file_load(&sf, name)) {
    /* try to create the rc file */
    section_file_init(&sf);
    secfile_insert_str(&sf, VERSION_STRING, "client.version");

    create_default_cma_presets();
    save_cma_presets(&sf);

    /* FIXME: need better messages */
    if (!section_file_save(&sf, name, 0, FZ_PLAIN)) {
      freelog(LOG_ERROR, _("Save failed, cannot write to file %s"), name);
    } else {
      freelog(LOG_NORMAL, _("Saved settings to file %s"), name);
    }
    section_file_free(&sf);
    return;client_options_iterate(o) {case COT_FONT client_options_iterate_end;

  message_options_load(&sf, prefix);
  
  /* Players dialog */  _S_RUNNING
/
void load_ruleset_specific_options(void)
{
  struct section_file sf;
  int i;
  char *name = option_file_name();
if (client.playing) {
    /* load global worklists */
    for (i = 0; i < MAX_NUM_WORKLISTS; i++) {
      worklist_load(&sf, &client.worklists[i],
		    "worklists.worklist%d", i);
    }0output_buffer[256];
  int i;
  view_option *v;
  char *name = option_file_name()client_options_iterate(o) {case COT_FONT client_options_iterate_end;

  for (v = view_options; v->name; v++) {
    secfile_insert_bool(&sf, *(v->p_value), "client.%s", v->name);
  }

  message_options_save(&sf, "client");

  for (i = 0/* Players dialog */server settings */
  save_cma_presets(&sf);
  save_settable_options(&sf);

  /* insert global worklists */
  if (client.playing) {
    for(i = 0; i < MAX_NUM_WORKLISTS; i++){
      if (client.worklists[i].is_valid) {
	worklist_save(&sf, &client.worklists[i], client.worklists[i].length,
		      "worklists.worklist%d", i);
      }
    }
  }

  /* save to disk */
  if (!section_file_save(&sf, name, 0, FZ_PLAIN
******
   Callback when the reqtree  show icons option is changed.
   The tree is recalculated.
**/
static void reqtree_show_icons_callback(struct client_option *option)
{
  /* This will close research dialog, when it's open again the techtree will
   * be recalculated */
  popdown_all_game_dialogs();
}
ENDREP
DELTA 13297 12056 4006
SVN  ¿Z¾^. …Y  ‚† „*ˆB€. …*1 «u“eLEN_GAME_IDENTIFIER 33
#define MAX_GRANARY_INIS 24
#define MAX_LEN_STARTUNIT (20+1)

/* symbol to flag missing numbers for better debugging */
#define IDENTITY_NUMBER_ZERO (0ENDREP
DELTA 14172 3481 40
SVN  ‘]‘k3ƒ ¡q €@ ¢-€_ ¤  ¥ SÄ|‚ F¡  l§7€9 \ªgŽ æ«R = 0;

  for (; d < (client.playing->economic.luxury)/10; d++) {}

  for (; d < (client.playing->economic.science + client.playing->economic.luxury)/10; d++) {
  }

  for (; d < 10; d++) {

client.playing)),
		textyear( game.info.year ),
		client.playing->economic.gold,
		client.playing->economic.tax,
		client.playing->economic.luxury,
		client.playing->economic.science );client.playingENDREP
DELTA 14259 0 1128
SVN  ‚¢‚¢qR‚ ˆX  2ˆj‹ ±,ŠŽ †9»KŽ éÂ  Ž2«)  lâl ‰[»WŽ ƒ_ÅA¦ ‰[É6¸ “Ó6¥ —!æa§ £sþivclient.h"client.playingclient.playingclient.playing, pitem->text, impclient.playing, pitem->text, impclient.playingclient.playing, pitem->text, punittypeadvance(buf, sizeof(buf), client.playing, pitem->text, iclient.playing, pitem->text, pterrainclient.playing, pitem->text, pgovernmenENDREP
DELTA 14208 7541 624
SVN  ƒ–sƒ–N:‚G †T  Z†fŸ Òj–P± Ÿ)él¡ žW‚‰JŽ +‚¨0Ž ¸J‚©j€| ‘I‚ã0¾ ¡1‚õBclient.playing;
  struct playerpPlayer0 == client.playing && DS_ALLIANCE != type (pclause->from != client.playingclient.playingclient.playingclient.playing, pPlayer)->type;

  if (!can_meet_with_player(pPlayer)) {
    if (DS_WAR == type || pPlayer == client.playing
      shared = gives_shared_vision(client.playing, pPlayer);
ENDREP
DELTA 14208 8192 71
SVN  Ø×p- ¹ €j –lºµ G  ‚(ÑzŽ ƒ]Ô1 (pPlayer != client.playing
      && DS_NO_CONTACT == pplayer_get_diplstate(client.playing, pPlayer)->typeclient.playing)));
  popup_goto_airlift_dialog();
}

client.playingENDREP
DELTA 14208 8661 30701
SVN  …….‚9 úN €u ‚Gû<€v X”~” fü6 ÄC‚€M˜ Ê3‚Å=¢ ñ
„client.playing) {
    dsend_packet_player_ready(&aconnection, player_number(client.playing),
			      !client.playingclient.playing);
  } else if (game.info.is_new_game) {
    send_chat("/take -");
    popup_races_dialog(client.playingCalled when "observeplayer != client.playingset_player_count(packet->nplayers)ENDREP
DELTA 14208 8292 343
SVN  †  †  `ƒY ¬  Ž ¶¬Ž ¢6â4Ž »)„y‘ ã À8¦ x‚£Ž ‚¥Ž ŠI‚¦&½ Z‚±-¦ ÚN‚Â.€= ƒtƒž;Ž  7ƒ¢>Ž 
ƒÃŽ ‚ÏcƒÐ’client.playingclient.playingclient.playingclient.playing) {value <= client.playing->economic.goldclient.playingclient.playingvalue <= city_can_buy(pCity) && client.playing->economic.goldvalue <= client.playing->economic.goldstruct city **array;
    int i, dir, non_open_size;
    int size = city_list_size(client.playing->cities);
  
    assert(size >= 1);
    assert(city_owner(pCityDlg->pCity) == client.playingclient.playingclient.playingclient.playing999) {
        my_†  ¥4¥8p ¼:Ž ³"¼[Ž …QðŽ „õlŽ ‰>úŽ „ƒNŽ „9‡tŽ ƒsŒ<Ž ”v>client.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingENDREP
DELTA 12411 7708 4298
SVN  ë4í|6š? …s €o z†S ¦‡c€c ƒ0®6 ²+” ³O ^´yŸ µR€; v·0¤ ƒL¹@€B ‚
½` HÀ€ƒ! 'Ä&€Y ZË0• <Ä&€F SË0€‚+ 	Í/… ]Î8€U ‚Ðn€f DÓ€‚d [Ög€‚ |ÙZ€F ÛT€‚` ?à€n zâT† Dä`‡ ‚æe± 9é{"SDL.h"

/* utility */
#include "fcintl.h"

/* common */
#include "government.h"

/* client */
#include "civclin = 0, count = 0, col;
  struct city *pCapital;
  SDL_Rect area;
  struct player_research* research_skeleton(NULL, pStr
    area = pWindow->area;
    WF_WIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);
    pBuf->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));
    area.w = MAX(area.w, pBuf->size.w + adj_size(10)nation_of_player(p));
    pText1 = zthe %s Spaceship"), 
                nation_adjective_for_player(pnation_adjective_for_player(parea.w = MAX(area.w, pText1->w + adj_size(20));
    area.h += pText1->h + adj_size(20);
      
    /* ---------- */
    
    pCapital = find_palace(p);
    research = get_player_research(p);
    change_ptsize16(pStr, adj_font(10));
    pStr->style &= ~TTF_STYLE_BOLD;

    /* FIXME: these should use common gui code, and avoid duplication! */
    switch (research->researching) {
    case A_UNKNOWN:
    case A_UNSET:unknown"),
        ruler_title_translation(p),
        player_name(p),
        government_name_for_player(p),
        /* TRANS: "unknown" location */
        (!pCapital) ? _("(unknown)") : city_name(pCapital),
         break;
    default:ruler_title_translation(p),
        player_name(p),
        government_name_for_player(p),
        /* TRANS: "unknown" location */
        (!pCapital) ? _("(unknown)") : city_name(pCapital),
       ,
        advance_name_researching(p),
        research->bulbs_researched, total_bulbs_required(p));
      break;
    };
    
    copy_chars_to_string16(pStr, cBuf);
    pInfo = create_text_surf_from_str16(pStr);
    area.w = MAX(area.w, pLogo->w + adj_size(10) + pInfo->w + adj_size(20));
    area.area.advance_index_iterate(A_FIRST, i) {
      if (TECH_KNOWN == player_invention_state(p, i)
       && player_invention_is_ready(client.playing, i)
       && TECH_KNOWN != player_invention_state(client.playing, i)) {

                           advance_name_translation(advance_by_number(i)),
                            advance_index_iterate_end;
    
    pdialog->pdialog->pBeginWidgetList = pBuf;
    
    if (n > 0) {
      pdialog->pdialog->pEndActiveWidgetList = pLast->prev;
      pdialog->pdialog->pBeginActiveWidgetList = pdialog->pdialog->pBeginWidgetList;
      if(n > 2 * col) {
        pdialog->pdialog->pActiveWidgetList = pdialog->pdialog->pEndActiveWidgetListarea.h += (2 * pBuf->size.h + adj_size(10));
      } else {
        count = 0;
        if(n > col) {
          area.h += pBuf->size.h;
        }
        area.h += (adj_size(10) + pBuf->size.h);
      }
      
      area.w = MAX(area.w, col * pBuf->size.w + count
    resize_window(pWindow, NULL, NULL,
                  (pWindow->size.w - pWindow->area.w) + area.w,
                  (pWindow->size.h - pWindow->area.h) + area.h);
    
    area = pWindow->areapWindow->size.w) / 2),
      (pdialog->pos_y) ? (pdialog->pos_y) : ((Main.screen->h - pWindow->size.h) / 2));
    
    /* exit button */
    pBuf = pWindow->prev; 
    pBuf->size.x = area.x + area.w - pBuf->size.w - 1;
    pBuf->size.y = pWindow->size.y + adj_size(2);
    
    dst.x = area.x + (area.w - pText1->w) / 2;
    dst.y = area.y + adj_size(8area.x + (area.w - (pBuf->size.w + adj_size(10) + pInfo->w)) / 2;
    pBuf->size.x = dst.x;
    pBuf->size.y =area.xarea.x,area.x + area.w, dst.y,
          area.h - (dst.yENDREP
DELTA 14415 13290 229
SVN  ‚›i‚›wY ãa œ ‚Kãv½ ´ræwlayer_name_by_number(int i)
layer_name_by_number, game.info.nplayers,
			 MAX_LEN_NAME-1,ENDREP
DELTA 14067 0 208
SVN  ‚“:‚“R‡v †: €O  Q‡Ž »q§dŽ uãdŽ áqåhš  È€‚S xËi€D „0Í&° †nÑ`€N |Ù`€‚@ ?ÝŽ ¥Mímovernment.h"
#include "improvement.h"
#include "tech.h"

#include "civclient.h"client.playingclient.playingclient.playingclient.playing);

    if (TECH_KNOWN == player_invention_state(client.playing, node->tech)) {
      return COLOR_REQTREE_KNOWN;
    }

    if (is_tech_a_req_for_goal(client.playing, node->tech,
                               research->tech_goal)
	|| node->tech == research->tech_goal) {
      if (TECH_REACHABLE == player_invention_state(client.playing, node->tech)TECH_REACHABLE == player_invention_state(client.playing, node->tech) *research = get_player_research(client.playing)if (!research) {
    /* Global observer case */
    return REQTREE_KNOWN_EDGE;client.playing, dest_node->tech,
                             research->tech_goal)
      || dest_node->tech == research->tech_goal) {
    return REQTREE_GOAL_EDGE;
  }

  if (TECH_KNOWN == player_invention_state(client.playing, node->tech)) {
    if (TECH_KNOWN == player_invention_state(client.playing, dest_node->tech)client.playingENDREP
DELTA 13038 1297272 759
SVN  ß$ßPxŠJ ‡1  †/‡Cž ‡'Ž€ I¬@ B”@€ J¬> y˜!ž B”@» ™K¹ ,š[€9 ~R€w ‚ŸN€[ T¤5€F ¥W€$ …u¨ £ d®2¿ ‚=°4Ž –[³ €~ sÊ£ ƒlÛ8player_by_number(player_index)struct player *pplayer = player_by_number(player_index);

  if (can_intel_with_player(pplayer)) {
    popup_intel_dialog(pplayer);
  } */
static void players_sship(int player_index)
{
  struct player *pplayer = player_by_number(player_index);

  popup_spaceship_dialog(pplayer
  FIXME: use plrdlg_common.c
*/
static void build_row(const char **row, int player_index  struct player *pplayer = player_by_number(player_index)player_name(pplayer));
    row[0] = namebuf;


    /* the nation */
    row[1] = nation_adjective_for_player(pplayer);
  }

  /* text for name, plus AI marker */
  aibuf[0] = (pplayer->pplayer == client.playing) {
    strcpy(dsbuf, "-");
  } else {
    pds = pplayer_get_diplstate(client.playing, pplayersz_strlcpy(statebuf, plrdlg_col_state(pplayer));

  /* text for idleness */
  if (pplayer->
		    "(idle %d turns)",
		    pplayer->nturns_idle - 1),
		pplayer->client.playing, pplayer);
  row[4] = dsbuf;
  row[5] = get_vision_status(client.playing, pplayer);
  row[6] = statebuf;
  row[7] = (char *) player_addr_hack(pplayer = player_by_number(player_index);
(client.playing,
                                player_by_numbclient.playing
  players_dialog=fcwin_create_layouted_window(players_proc,
					      /* TRANS: Nations report title */
					      _("Nation
    for (i = 0; i < player_count()ENDREP
DELTA 13133 146012 158
SVN  Â"Â+d ‡N   ‚#‡B™ RŠ˜ •Fš“ ’>¯divclient.h"
#include "climisc.h"ext.h"
#include "tilespecplayer == client.playinglayer_name(pplayer)ENDREP
DELTA 14376 34494 412
SVN  ‚´g‚´‰c ÌY Ž Ìhš vÌi Ï vÐº yÓ>€~ zÓ>€ zÓ>€d ×NŽ =ä{€ UçX€‚+ ¦ë^Ž ‘}€q ƒ”€F ‰—cŽ ‰¡Ž Dª5Ž ¯¬µ ’sÛ`Ž Æîbclient.playingclient.playing));
  } else
  pBuf = get_research_widget();

  if (!client.playing) {                                    "None", 0, 0);
  } else if (A_UNSET != get_player_research(client.playing)->researching) {	advance_name_researching(client.playing),
		get_player_research(client.playing)->bulbs_researched,
		total_bulbs_required(client.playing));
  } else {	advance_name_researching(client.playing),
		get_player_research(client.playing)->bulbs_researched,
client.playingclient.playing),
                population_to_text(civ_population(client.playing)),
                textyear(game.info.year),
                client.playingclient.playing),
                population_to_text(civ_population(client.playing)),
                textyear(game.info.year),
                client.playing->economic.gold,
                client.playing->economic.tax,
                client.playing->economic.luxury,
                client.playingclient.playingDS_CEASEFIRE == client.playing->diplstates[player_index(tile_owner(pTile))].type){
		  int turns = client.playing	client.playing->diplstates[player_index(tile_owner(pTile))].type],
		client.playingclient.playingclient.playing
          if (unit_owner(aunit) == client.playing) {client.playingENDREP
DELTA 13948 27602 883
SVN  ýü{  3 µ l jŽ M¥: V¢2µ l¤?Ž ×G¥:client.playing || city_owner(pcity) == client.playingclient.playingclient.playing || unit_owner(punit) == client.playingclient.playingENDREP
DELTA 14141 531 29766
SVN  …½V…½HH† †T ‡ Ï†Iµ ŠwÖµ Œhá2Ž †<î)· ŠTõŽ ‰:€Ž ‰JŽ _˜w€I ¤7©"€P Œ3Î,Ž ˜TÚn£ ófŽ ƒõŽ ´ù£ £B‚­S£ ŠƒÑ9Ž ƒÛ[Ž ]ƒÜzŽ ‚\ƒíf£ Žoƒðf£ ‚sƒÿy£ ™l„ƒ¢ r„”q „¢ Š_„Ÿ#Ž Ý „ª© L…’= Š…ˆŽ «3…’#game.h"client.playing && unit_owner(punit) != client.playingclient.playing && unit_owner(punit) != client.playingclient.playingclient.playing
      || !is_player_phase(client.playingclient.playingclient.playingclient.playingclient.playing
      && client.playing->is_alive
      && !client.playingclient.playing
	    || (client.playing == unit_owner(punit)
		&& !client.playingclient.playingunit_owner(punit) == client.playingclient.playingclient.playingunit_owner(punit) == client.playingunit_owner(punit) == client.playingclient.playingclient.playingclient.playingunit_owner(punit) == client.playingunit_owner(punit) == client.playingunit_owner(punit) != client.playingclient.playing)) {
    send_patrolclient.playingclient.playing && can_client_issue_ordersclient.playingENDREP
DELTA 14208 64041 82
SVN  ÃmÃkA ¾L €A G  „¿Vclient.playing) {
    popup_races_dialog(client.playing);
  }
}

ENDREP
DELTA 14337 11862 1134
SVN  ƒÌXƒÏPŠ) Šj ˆ ŸŠZ˜ Aœ €{ 1ªz† ©I¬9— Aœ ­ ’%ÖbŠ 	õ{ »0ê"” 5¥O€M ƒm§<† ƒ}«7† ƒ"¯B† …q²r˜ Bœ € &º† ƒ;»<˜ Aœ €{ ¡SÀ¨ Á{â¬ Aœ €m ‚c‚¥€B ‚¨O€i T‚ªh€g ,‚­;† ƒJ‚®u† Š‚²M€H Šx‚½“ P‚Çv€B ‚s‚Ép™ ÿe‚Ìscivclien
  pplayer may be NULL.
/
static void insert_requirement(char *buf, size_t bufsz,
			      struct player *pplayer,
			      struct requirement *reqpplaye  pplayer may be NULL.
/
void boot_help_texts(struct player *pplayerpplayer, ipplayer may be NULL. struct player *pplayer,
			const char *user_text, struct impr_type *pimprovepplayepplayepplaye
  pplayer may be NULL.
**********/
static int techs_with_flag_string(char *buf, size_t bufsz,
				  struct player *pplayer,
				  enum tech_flag_id flagpplaye
  pplayer may be NULL.
/
char *helptext_unit(char *buf, size_t bufsz, struct player *pplayer,
		    const char *user_text, struct unit_type *utypebuf2, sizeof(buf2), pplayer, TF_FARMLANDadvance/technology.

  pplayer may be NULL.
/
void helptext_advance(char *buf, size_t bufsz, struct player *pplayer,
		      const char *user_text, int ipplayer, i) != TECH_KNOWN) {
    if (player_invention_state(pplayepplayer, i),
		   base_total_bulbs_required(pplayer, i));
    } else if (player_invention_is_ready(pplayepplayer, i),
		   num_unknown_techs_for_goal(pplayer, i) - 1,
		   total_bulbs_required_for_goal(pplayepplayepplayeplayer *pplayer,
		      const char *user_text, struct terrain *pterrainpplayer may be NULLplayer *pplayer,
			 const char *user_text, struct government *govbuf, bufsz, pplayer, preqENDREP
DELTA 14081 0 2363
SVN  ƒ—Eƒ—?1R ‡ Ž „‡Ž „w‹+Ž ²(1‡ Ç}Â_€i ‡/‚‹G¸ „‚“0client.playingclient.playingclient.playingInspectlient.playing && city_dialog_shell && !is_report_dialogs_frozen()) {
    city_list_iterate(client.playingclient.playing) {
      city_list_iterate(client.playingENDREP
DELTA 14269 889 1281
SVN  Ÿv¦WDŽ{ ¡  !£€†P ƒV¥3€‚ xªL€g ¬+­' ¥Ùv ƒRÿ€` Mƒ€c ‰y… €t qgame_remove_unit()"
	    " at (%d,%d) unit %d, %s %s home (%d,%d) city %d, %s %s",
	    TILE_XY(punit->tile),
	    punit->id, 
	    nation_rule_name(nation_of_unit(punit)),
	    unit_rule_name(punit),
	    TILE_XY(pcity->tile),
	    punit->homecity,
	    nation_rule_name(nation_of_city(pcity)),
	    city_name(pcity));
  } else if (IDENTITY_NUMBER_ZERO == punit->homecity) {
    freelog(LOG_DEBUG, "game_remove_unit()"
	    " at (%d,%d) unit %d, %s %s home %d",
	    TILE_XY(punit->tile),
	    punit->id, 
	    nation_rule_name(nation_of_unit(punit)),
	    unit_rule_name(punit),
	    punit->homecity);
  } else {
    freelog(LOG_ERROR, "game_remove_unit()"
	    " at (%d,%d) unit %d, %s %s home %d invalid",
	    TILE_XY(punit->tile),
	    punit->id, 
	    nation_rule_name(nation_of_unit(punit)),
	    unit_rule_name(punit),
	    punit->homecitystruct tile *pcenter = city_tile(pcity);
  struct player *powner = city_owner(pcity);

  freelog(LOG_DEBUG, "game_remove_city()"
          " at (%d,%d) city %d, %s %s",
	  TILE_XY(pcenter),
	  pcity->id,
	  nation_rule_name(nation_of_player(powner)),
	  city_name(pcity/* always unlink before clearing data */
  city_list_unlink(powner->cities, pcity);

  city_tile_iterate(pcenter, ptile) {
    if (tile_worked(ptile) == pcity) {
      tile_set_worked(ptile, NULL);
    }
  } city_tile_iterate_end;
if (0 != unit_list_size(pplayer->units)) {
    freelog(LOG_ERROR, "game_remove_player() failed to remove %d %s units",
            unit_list_size(pplayer->units),
            nation_rule_name(nation_of_player(pplayer)));
  }if (0 != city_list_size(pplayer->cities)) {
    freelog(LOG_ERROR, "game_remove_player() failed to remove %d %s cities",
            city_list_size(pplayer->cities),
            nation_rule_name(nation_of_player(pplayer)));
  }/* has no effect in server, but adjusts in client */
  if(game.info.player_idx > plrno) {
    game.info.player_idx--ENDREP
DELTA 12859 11899 10894
SVN  ‚ÃB‚ÈD‚@Œ4  œ ˜  ˆ]¨(‡ 1±‰ ‚x²D `µ@Ž †_¶/§ †"½6˜ ŒÃgŒ †0ÏsŽ ‚tÖ2 ƒWÙT› Ý8£ „`ìm£ ‚"ñl€‚ „óBŠ •9÷B€e j‹{ˆ ˜CŒi– d¥:¥ …K§+ ‚8¬}€d †°€p o·9 ‚X¹(‚ ˆ'¼‰ ƒÄ4€u lÈ;® ÉR® …Ë
‰ ‚ÐŒ NÆ~° ‡Ó7› fÚhŒ &Á ŠQÜ{ ç{‡ ƒ4õ ˆøMŒ ‚‚€{ z‚ƒ!Œ ˆ*‚…, ‚'‚g¡ T‚…= … ‚‘¥ ˆA‚–O€e ’‚Ÿw› %‚²› p‚³R#define SELECT_UNIT_ALL    3Goto _LInspect _client.playing0 > client.playing->revolution_finishesgame_find_unit_by_number_translationclient.playingunit_name_translation(punitunit_owner(punit) == client.playingunit_owner(punit) == client.playingcase SELECT_UNIT_ALL:
    {
      unit_list_iterate(ptile->units, punit) {
        if (unit_owner(punit) == client.playing) {
          if (punit->activity == ACTIVITY_IDLE &&
              !punit->ai.control) {
            /* Give focus to it */
            add_unit_focus(punitselect_allselect_all_cmd =
    gtk_dialog_add_button(GTK_DIALOG(shell),
      _("Select _all"), SELECT_UNIT_ALLlect_allnation_number(pnation)nation_adjective_translation(pnation)Nation _Groupnation_group_count(); i++) {
    struct nation_group* group = (i == 0 ? NULL: nation_group_by_numberC_S_RUNNING == client_state()) {
    title = _("Edit Nation");
  } else if (pplayer && pplayer == client.playing_59TRUE, TRU(GTK_TABLE(table), label, 0, 1, 0, 2, 0, 0, 0, 0);
  gtk_table_attach(GTK_TABLE(table), combo, 1, 3, 0, 1, 0, 0, 0, 0(GTK_TABLE(table), cmd, 1, 2, 1, 2, 0, 0, 0, 0(GTK_TABLE(table), cmd, 2, 3, 1, 2, 0, 0, 0, 0AUTOMATICCity _Styles(GTK_TABLE(table), label, 0, 1, 2, 3, 0, 0, 0, 0city_style_name_translation_DescriptionC_S_RUNNING == client_state()nation_nation_by_numbernation_groupnation_by_numbernation_groupnation_by_numbernation_group_count(); i++) {
    city_style_of_nation(nation_by_numbernation_by_number(selected_nation), name)) {
    selected_sex = get_nation_leader_sex(nation_by_numberplayer_number(races_player)player_number(races_player)ENDREP
DELTA 14371 25756 1148
SVN  ôvõn,ƒE ¦ €f ‚%§'€' ¡[ªIŽ Š8Ì3Ž ŒÖzŽ ‡:ãŽ Š"êT  /* FIXME: use output_type_iterate! */

  stats_before[0] = city_tile_output(NULL, ptile, FALSE, O_FOOD);
  stats_before[1] = city_tile_output(NULL, ptile, FALSE, O_SHIELD);
  stats_before[2] = city_tile_output(NULL, ptile, FALSEcity_tile_output(NULL, ptile, FALSE, O_FOOD);
  stats_after[1] = city_tile_output(NULL, ptile, FALSE, O_SHIELD);
  stats_after[2] = city_tile_output(NULL, ptile, FALSEclient.playingclient.playingclient.playingclient.playingENDREP
DELTA 13038 756812 9722
SVN  ŠTŒKT…I ‡5  ‹‡G¿ ¼4“€ C×@† AŽ@ ‚@Ñr¶ Ôj M«@ ‚=Ö<¯ BÙn N×@€{ C×@† AŽ@ ‚$èj€ ìUclient.playing) {
    maxrate = get_player_bonus(client.playingclient.playing->economic.tax, 0,
		   client.playing->economic.luxury, 0,
		   client.playing->economic.science, 0);
  return shell;
}

... 
client.playing),
      get_player_bonus(client.playingprocessing(void)
{
  const char *dp;
  bool b;
}in, gint rid)
{
  switch (rid) {
  case GTK_RESPONSE_ACCEPT:
    option_command_processing();
    save_options();
    break;
  case GTK_RESPONSE_APPLY:
    option_command_processing();
    break;
  default:
    break;
  };
  gtk_widget_destroy(win);
}
... 
 GTK_RESPONSE_CANCEL,
	GTK_STOCK_APPLY, GTK_RESPONSE_APPLY,
	GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
	NULL);
  setup_dialog(option_dialog_shell, toplevelENDREP
DELTA 14229 31895 157
SVN  D‘U„L ‡~ – ‚Xˆ€„6 ‚3Žstruct player *pplayer struct player *pplayer,
			const char *user_text, struct impr_type *pimprove);
char *helptext_unit(char *buf, size_t bufsz, struct player *pplayer,
		    const char *user_text, struct unit_type *utype);
void helptext_advance(char *buf, size_t bufsz, struct player *pplayer,
		      const char *user_text, int i);
void helptext_terrain(char *buf, size_t bufsz, struct player *pplayer,
		      const char *user_text, struct terrain *pterrain);
void helptext_government(char *buf, size_t bufsz, struct player *pplayer,
			 const char *user_text, struct government *govENDREP
DELTA 14163 4676 3021
SVN  ææUK ‡Z  †‡yŽ ŽŽ …4Ž W”DŽ …$–*Ž ›]Ž +Ž ¶`ž<Ž Õ+Ž ŠaÖ=Ž ‚Zá-Ž ‚iäclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingENDREP
DELTA 14272 776 5303
SVN  »+ºn() †A  ¢`†S€e Rû Ûªl› Œ0†0› “Ž §”client.playing
	  || (pPlayer != client.playing
	   && player_has_embassy(client.playing, pPlayer))); (pPlayer != client.playing (pPlayer != client.playingclient.playingENDREP
DELTA 14386 2478 82
SVN  Ô6Óz	  ‘#  ÂW‘_ENDREP
DELTA 14415 31875 746
SVN  ›› ©C Ž ×©RŽ š$€sclient.playingclient.playingENDREP
DELTA 14208 68913 75
SVN  ¾B¾-
 —U ˜ ¦@˜player == client.playingENDREP
DELTA 14120 38706 87
SVN  çHçG ‹. Ž Ü‹=client.playingENDREP
DELTA 14208 69016 228
SVN  ÁÁl‚Z { ƒ …0{² 9•^Ž ‚B—&Ž cz• Hø  S‹? «n
Ž ®ÉŽ ƒ/÷€Y ƒrû#Ž ‚yÿ$ƒ †‚˜ c‹* W‰3º L‹EŽ ‚K Ž ±z
  punit->bribe_cost <= client.playing->economic.goldclient.playingclient.playingbribe_response), NULLclient.playingclient.playing (game_find_unit_by_number(diplomat_id)
   && game_find_city_by_number(diplomat_target_idclient.playing
  INCITE_IMPOSSIBLE_COST =pcity->incite_revolt_cost <= client.playing->economic.goldclient.playingclient.playingENDREP
DELTA 14208 70311 251
SVN  ‚õO‚õN,‰ ‹ ‹ £l‹Ž ŠE¯ €[ ‚rº"€X ƒ½n€! “,Â» ƒUÕ}€
 UÚ_¯ „ød€X ƒ!ý]Ž €V zÂ4 ƒƒl¼ ~; SÖ{ ƒˆx€
 ¤{Ž º1²"Ž Š!ìbŽ u÷¹ ŠPùBŽ „p‚„!Ž ‚&‚‰ Ž „‚‹UŽ „j‚hŽ àn‚”aivclient.h"client.playingclient.playing) {
    struct player_research *research = get_player_research(client.playingclient.playing),
		  research->bulbs_researched,
		  total_bulbs_required(client.playingclient.playing,
					     research->tech_goal));
    }

    advance_index_iterate(A_FIRST, i) {
      if (TECH_KNOWN == player_invention_state(client.playing, i)TECH_REACHABLE == player_invention_state(client.playing, i)client.playing, i)
	  && TECH_KNOWN != player_invention_state(client.playing, i)
	  && (11 > num_unknown_techs_for_goal(client.playing, i) *research = get_player_research(client.playingclient.playing),
		  research->bulbs_researched,
		  total_bulbs_required(client.playingclient.playing (TECH_KNOWN == player_invention_state(client.playing, i)) {
	tech_list_names_ptrs[j]= (TECH_REACHABLE == player_invention_state(client.playing, iclient.playing, i)
	  && TECH_KNOWN != player_invention_state(client.playing, i)
	  && (11 > num_unknown_techs_for_goal(client.playing, i)client.playingclient.playingclient.playingclient.playing, punittype1, punittype2),
		client.playingclient.playingclient.playingclient.playingclient.playingclient.playingENDREP
DELTA 12988 2390245 2310
SVN  ‚˜s‚˜y‚/ †'  ]†@ W‡/€m ˆHž ž5Š'‰ ¶V¨k‘ Žß[‘ †î‰ “aô:¬ ‚JˆO‰ „
‹(‰ …0A‘ L•‰ ]¨k ÙL¦C„ T‚? …f‚€fƒ ƒO‚†NŽ „@‚Š,ƒ Š‚Žn
#include "chatline.h"
#include "citydlg.h"
#include "cityrepdata.h"
#include "civclient.h"
#include "climisctext.h"

#include "cityrep.h"
universalan_city_build_nowan_city_build_nowuniversalcontinent(pcity->tile)
              == tileuniversaluniversalan_city_build_nowuniversal128]128client.playing128ENDREP
DELTA 14222 11794 3809
SVN  ‚‡g‚‡T †t  ­4‡Ž Ó´Iclient.playingENDREP
DELTA 11057 293 94
SVN  •U•y0 …f  …~…x€0 G  ˆ7client.playing) {
    if (client_is_observer()) {
      return TILE_KNOWN;
    } else {
      return TILE_UNKNOWN;
    }
  }
  return tile_get_known(ptile, client.playing);
}

ENDREP
DELTA 14172 27569 4095
SVN  çæUˆQ ˆ  §&ˆž EÑ  ƒW°¾ ³J„ ´Q n·{€‚ E» Ž ƒg»T€O ‰	À€‚, ˆ:Ëg€b „xÔZ€ 1Ã: Š]Û~€i
  FIXME: use plrdlg_common.c
state */
      sz_strlcpy(statebuf, plrdlg_col_state(pplayer))
			layer_name(pplayer));
      else
        my_snprintf(namebuf, sizeof(namebuf), "%-16s",player_name(pplayer));
      namebuf[16] = '\0';

      /* text for diplstate type and turns -- not applicable if this is me */
      if (!client.playing || pplayer == client.playingclient.playingclient.playing, pplayer),
	      dsbuf,
	      get_vision_status(client.playingclient.playing && pplayer->is_alive) {
      XtSetSensitive(players_war_command,
		     client.playing != pplayer
		     && !pplayers_at_war(client.playing, pplayer));
    }

    if (client.playing) {
      XtSetSensitive(players_vision_command,
		     gives_shared_vision(client.playing, pplayer));
    struct player *pplayer = player_by_number(player_index);

    if (can_meet_with_player(pplayer    struct player *pplayer = player_by_number(player_index);

    if (can_intel_with_player(pplayer)) {
      popup_intel_dialog(pplayer);
    }    struct player *pplayer = player_by_number(player_index);

    popup_spaceship_dialog(pplayer);
  }
}
ENDREP
DELTA 14172 31693 11589
SVN  ƒ½7ƒ½=/† Æ ‡ ÓÆŽ G™8€  ’›}€a l®} †H¯tº 1¶< e¸3 N¹#Ž Ž× ª »[å=Ž ƒ]‚¡'­ Mù> ‡;‚¦ „1‚­?´ ‚²"Ž ƒ.‚³EŽ ›Z‚·Ž ˆF‚Òkƒ ƒ‚Û1€ ‚ßJº ‚áŽ ƒ‚â$Ž ˆ‚åF }‚íV Îc‚îTnation_client.playing = player_find_unit_by_id(client.playing,
							  unit_select_ids[id]);
	      if (punit && unit_owner(punit) == client.playing = player_find_city_by_id(client.playing, punit->homecity);

      unit_select_ids[i]=punit->id;
city_name(pcity) = player_find_city_by_id(client.playing, punit->homecity)city_name(pcity)client.playingcity_name(phomecity), city_name(pdestcity)client.playing (game_find_unit_by_number(diplomat_id)
   && (punit->bribe_cost <= client.playing->economic.goldclient.playingclient.playingclient.playing
  INCITE_IMPOSSIBLE_COST == pcity->incite_revolt_cost) {
    my_snprintf(buf, sizeof(buf), _("You can't incite a revolt in %s."),
		city_name(pcity)pcity->incite_revolt_cost <= client.playing->economic.goldclient.playingclient.playingcity_name(pcity)ENDREP
DELTA 14415 56485 5450
SVN  †  †  * ‰T ž ƒK‰d †’7IŒ		/* game.control.styles_countepeat) {
   †  ƒ¿1ƒ¿!q Í€q ñÎclient.playing || powner == client.playing)
		 && (!client.playing
		     || player_in_city_radius(client.playingENDREP
DELTA 12957 1396 18578
SVN  ‚†‚†q@ƒ[ Œr  ³I!€$ †1À| RË‚ Tº ¬jÈzŒ ’|õW€
 ðe‰P— ‡wúZ€k ‚B‚ƒKThis client has no special command line options\n\n"));

  /* TRANS: No full stop after the URL, could cause confusion. */
  fc_fprintf(stderr, _("Report bugs at %s_S_PREPARING);
  return (True..init(tilesetgame_find_unit_by_number(unit_ids[i]);
  if(punit) { /* should always be true at this point */
    if (unit_owner(punit) == client.playinghead_of_units_in_focus(client.playing && can_client_issue_orders()) {
    struct unit *punit;

    punit = head_of_units_in_focus(ENDREP
DELTA 13526 10965 1381
SVN  »)»C —l ˜ ˆ˜« šT UPlayer == client.playingThe %s Spaceship"),
				    nation_adjectivENDREP
DELTA 14415 65566 343
SVN  ··BA §r Ž Z¨Ž §,©jŽ ‰jÑ%Ž FÛŽ ‡|ÜsŽ ä~Ž ˆ
æ¬ ­îTŽ ƒ›}¥ —kŸ%client.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playing =
      can_upgrade_unittype(client.playingclient.playingclient.playing
	    && client.playingENDREP
DELTA 14376 46265 599
SVN  ç2ç8
 Õ] ” ‘GÕkNULL, NULL, pimproveENDREP
DELTA 13297 302669 3972
SVN  „Þ^„á`‚Pž Ûl ½ ˆÜ*€L ”Må€A ƒúC výS€‚X ‚6‚n€‚Z <‚n ‚—€‚^ #‚¿6 	‚›X€ƒ (‚© … `‚£z€y >‚l t‚£f€z >‚l t‚§ €z >‚l v‚ª€ >‚l ‚f‚­@€‚ Y‚²) ‹‚³· ‡‚¾Z™ †U‚Æ™ ‚K‚Ìl š‚ÏB€I ƒW‚êvŒ †‚îX€‚S …v‚÷‰ ‚©  ˆ{‚þ!¿ Cƒ‡]¿ ƒ—a™ ƒƒ¥¡ ‚¿< •hƒ©@€" ‚
ƒÀJŽ ‚sƒÂc€[ 2‚l ‚OƒÈV€l ÚƒÌ• \„Íz d„Ë> `„Öt …L„¨J ‡„®! ‚_„µ3 ¦K„¸
  if (!client.playing || city_owner(pcity) == client.playing = player_find_city_by_id(client.playing, punit->homecity);
  pcity_pre=tileenum citizen_category c = CITIZEN_SPECIALIST + DEFAULT_SPECIALISTcity_name(pcity) =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  if (NULL != punit) {
    struct city *pcity = tile_city(punit->tile);

    set_unit_focus(punit);
    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if (NULL != pdialog) {
	city_dialog_update_present_units(pdialog, 0);
      }
    } =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  if (NULL != punit) {
    struct city *pcity = tile_city(punit->tile);

    set_unit_focus(punit);
    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if (NULL != pdialog) {
	city_dialog_update_supported_units(pdialog, 0);
      }
    } =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  destroy_message_dialog(w);

  if (NULL != punit) {
    struct city *pcity = tile_city(punit->tile);

    set_unit_focus(punit);
    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if (NULL != pdialog) {
	close_city_dialog(pdialog);
      } =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  destroy_message_dialog(w);

  if (NULL != punit) {
    struct city *pcity =
      player_find_city_by_id(client.playing, punit->homecity);

    set_unit_focus(punit);
    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if (NULL != pdialog) {
	close_city_dialog(pdialog);
      }
    }
  }sentr =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  if (NULL != punit) {
    request_unit_sentry(punit =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  if (NULL != punit) {
    request_unit_fortify(punit =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  if (NULL != punit) {
    request_unit_disband(punit =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  if (NULL != punit) {
    request_unit_change_homecity(punitWidget wd;
  struct city_dialog *pdialog;
  struct city *pcity;
  XEvent *e = (XEvent*)call_data;
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)client_data);
  
  if ((NULL != punit
       || (can_conn_edit(&aconnection) && !client.playingclient.playing
	|| (can_upgrade_unittype(client.playingcity_name(pdialog->pcity)city_name(pdialog->pcity)city_name(pcity)enum citizen_category citizens[MAX_CITY_SIZE];
  int i;
  struct city *pcity=pdialog->pcity;
  int num_citizens = get_city_citizen_types(pcity, FEELING_FINAL, citizens);

  for (i = 0; i < num_citizensnum_citizensWidget wd;
  XEvent *e = (XEvent*)call_data;
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  if (NULL != punit) {
    struct city *pcity = game_find_city_by_number(punit->homecity);

    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if ( NULL != pdialog)    }
  }client.playing && (city_owner(pdialog->pcity) != client.playingclient.playing && (city_owner(pdialog->pcity) != client.playingcity_name(pdialog->pcity)city_name(pdialog->pcity), NULL);value <= client.playing->economic.gold) {
    my_snprintf(buf, sizeof(buf),
		_("Buy %s for %d gold?\nTreasury contains %d gold."), 
		name, value, client.playingclient.playing =
    player_find_unit_by_id(client.playing, (size_t)client_data);

  /* Is it right place for breaking? -ev */
  if (!can_client_issue_orders()) {
    return;
  }

  if (NULL != punit) {
    request_unit_upgrade(punitchar buf[512];
  struct unit *punit = player_find_unit_by_id(client.playing,
					      (size_t)client_data)onst char *cityname);;;city_name(pcity)onst char *cityENDREP
DELTA 1186 94281 3536
SVN  Ë/Ð#|¢/ …8 €i ‚†€„c „‹|€@ ‚‘  L7€n A  <•!€‚ ™€U ‚R›	€„ ‡¡B€‚W ‚.«B€‡h l´$€c ‚]·;€ƒ ƒ.¼€ „TÁ.€* GÁ.† N3ª 9Á2€‚J
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <stdio.h>
#include <stdlib.h>
#include <string"mem.h"
#include "support.h"

#include "game.h"
#include "map.h"
#include "packets.h"
#include "player.h"
#include "unit.h"
#include "unitlist.h"

#include "civclient.h"
#include "clinet.h"
#include "control.h" /* get_unit_in_focus */
#include "goto.h"

#include "gui_main.h"
#include "gui_stuff.h"
#include "mapctrl.h"
#include "mapview.h"

#include "gotodlg.h"

static Widget goto_dialog_shell;
static Widget goto_form;
static Widget goto_label;
static Widget goto_viewport;
static Widget goto_list;
static Widget goto_center_command;
static Widget goto_airlift_command;
static Widget goto_all_toggle;
static void cleanup_goto_list(void);

static char *dummy_city_list[]={ 0
};

static int ncities_total = 0;
static char **city_name_ptrs = NULL;
static struct tile *original_tile;


  Boolean no_player_cities;

  if (!can_client_issue_orders() || get_num_units_in_focus() == 0) {
    return;
  }

  no_player_cities = !(city_list_size(client.playing->cities));

  original_tile = get_center_tile_mapcanvas();
  
  XtSetSensitive(main_form, FALSE);
  
  goto_dialog_shell =
    I_T(XtCreatePopupShell("gotodialog", transientShellWidgetClass,
			   toplevel, NULL, 0)
    I_L(XtVaCreateManagedWidget("gotolabel", labelWidgetClass, 
				goto_form, NULL)
    I_L(XtVaCreateManagedWidget("gotocentercommand", commandWidgetClass,
				goto_form, NULL));

  goto_airlift_command =
    I_L(XtVaCreateManagedWidget("gotoairliftcommand", commandWidgetClass,
				goto_form, NULL));

  goto_all_toggle =
    I_L(XtVaCreateManagedWidget("gotoalltoggle", toggleWidgetClass,
				goto_form,
				XtNstate, no_player_cities,
				XtNsensitive, !no_player_cities,
				NULL));

  goto_cancel_command =
    I_L(XtVaCreateManagedWidget("gotocancelcommand", commandWidgetClass,
				goto_form, NULL)atic struct city *get_selected_city(void)
{
  XawListReturnStruct *ret;
  int len;
  
  ret=XawListShowCurrent(goto_list);
  if(ret->list_index==XAW_LIST_NONE)
    return 0;

  len = strlen(ret->string);
  if(len>3 && strcmp(ret->string+len-3, "(A)")==0) {
    char name[MAX_LEN_NAME];
    mystrlcpy(name, ret->string, MIN(sizeof(name),len-2))j = 0;
  Boolean all_cities;

  if (!can_client_issue_orders()) {
    return;
  }

  XtVaGetValues(goto_all_toggle, XtNstate, &all_cities, NULL);

  cleanup_goto_list();

  if(all_cities) {
    ncities_total = 0;
    players_iterate(pplayer) {
      ncities_total += city_list_size(pplayer->cities);
    } players_iterate_end;
  } else {
    ncities_total = city_list_size(client.playing->cities);
  }

  city_name_ptrs=fc_malloc(ncities_total*sizeof(char*));
  
  players_iterate(pplayer) {
    if (!all_cities && pplayer != client.playing) {
      continue;
    }
    city_list_iterate(pplayer->cities, pcity) {
      char name[MAX_LEN_NAME+3];
      sz_strlcpy(name, city_name(pcity));
      /* FIXME: should use unit_can_airlift_to(). */
      if (pcity->airlift) {
	sz_strlcat(name, "(A)");
      }
      city_name_ptrs[j++]=mystrdup(name);
    } city_list_iterate_end;
  } players_iterate_end;

  if(ncities_total) {
    qsort(city_name_ptrs, ncities_total, sizeof(char *), compare_strings_ptrsstatic void popdown_goto_dialog(void)
{
  cleanup_goto_list();

  XtDestroyWidget(goto_dialog_shell (ret->list_index != XAW_LIST_NONE) {
    struct city *pdestcity;
    if ((pdestcity = get_selected_city())) {
      bool can_airlift = FALSE;
      unit_list_iterate(get_units_in_focus(), punit) {
        if (unit_can_airlift_to(punit, pdestcity)) {
	  can_airlift = TRUE;
	  break;
	}
      } unit_list_iterate_end;

      center_tile_mapcanvas(pdestcity->tile);
      if (can_airlift (pdestcity) {
    unit_list_iterate(get_units_in_focus(), punit) {
      request_unit_airlift(punit, pdestcity);
    } unit_list_iterate_end; = get_selected_city();
  if (pdestcity) {
    unit_list_iterate(get_units_in_focus(), punit) {
      send_goto_tile(punit, pdestcity->tile);
    } unit_list_iterate_end;cancel
{
  center_tile_mapcanvas(original_tile);static void cleanup_goto_list(void)
{
  int i;

  XawListChange(goto_list, dummy_city_list, 0, 0, FALSE);

  XtSetSensitive(goto_airlift_command, False);

  if(city_name_ptrs) {
    for(i=0; i<ncities_total; i++) {
      free(city_name_ptrs[i]);
    }
    free(city_name_ptrs);
  }
  ncities_total = 0;
  city_name_ptrs = NULL;
}
ENDREP
DELTA 13297 73048 81042
SVN  …º2…µx‹I ˆB Ž ‚°'ˆ4 ®‚¸fº Š^‚ç)Ž ²‚ò· 
‚÷1 —eƒ¥q€` ƒ¾, ‚nƒ¿: ÑƒÂ3· „“cµ „•€‚ \„˜1™ ?„™&— 	„šw€y ‚)„ž\“ †u„¡&€‚A U’|‚ »N„¯i€P ¤[„ë€e _‚‰w ¨…’citydlg_commontile_city(ptile)client.playing
			  || city_owner(pcity) == client.playingclient.playing!client.playing || city_owner(pcity) == client.playing)tile_city(ptile)) {
      int width = 0, height = 0;
      struct city *pcity = tile_city(ptile)city_name(pcity)city_name(pcity)closest_city;
  struct city *pcity = tile_worked(ptile)client.playing || city_owner(pcity) == client.playingtile_iterate_cxy(ptile, tile1, city_x, city_y) {
    pcity = tile_city(tile1);
    if (pcity
	&& (!client.playing || city_owner(pcity) == client.playing)
	&& C_TILE_EMPTY == city_map_status(pcity,
					   CITY_MAP_SIZE - 1 - city_x,
					   CITY_MAP_SIZE - 1 - city_y)city_map_status() above),tile_index(pcity->tile)tile_iterate_cxy_end;

  /* rule d */
  if (closest_city || !punit) {
    return closest_city;
  }

  city_tile_iterate(ptile, tile1) {
      unit_list_iterate(tile1->units, psettler) {
	if ((!client.playing || unit_owner(psettler) == client.playing} city_tile_iterate;

  universal_name_translation(&pcity->production, buffer, buffer_len);

  if (city_production_has_flag(pcity, IF_GOLD)) {
    return;
  }
  turns = city_production_turns_to_build(pcity, TRUE);

  if (999 < turns) {
    cat_snprintf(buffer, buffer_len, " -");
  } else {
    cat_snprintf(buffer, buffer_len, " %d", turns*/city_name(pcity));

  if (!client.playing || city_owner(pcity) == client.playingtile_index(ptile)].hilite = HILITE_NONE;
    map_deco[tile_index(ptile)].crosshair = 0;
  } whole_mapENDREP
DELTA 13221 0 16391
SVN  ‚‰‚‰	$1 …u  ½h† v‰@ NÄu” uÄ Ž vÚ@ ´LÔQclient.playing)client.playing);
  }orders->airbasENDREP
DELTA 14386 1204 270
SVN  ‚Ô-‚Õ~‚` ‡  ‡+‹ ©Vˆ<Ž ‚ ²!Ž ‚´0Ž ‰¶C¡ F‚Â? õWÀ-¢ R‚¥}… G  \Ð> ‡m¸Ž „AÀ¢ R‚¥}ƒ G  \Ð> Š ÆWŽ ƒ7Ðf¢ “CÔ/¸ ½Lè¨ „Y‚¥}  ©G‚ªfivclient.h"client.playingclient.playingclient.playingclient.playing, tech), HELP_TECH)client.playing, pitem->text, imp);}
  
client.playingclient.playing, pitem->text, imp);}

client.playingclient.playing, pitem->text, utypeadvance(buf, sizeof(buf), client.playing, pitem->text, iclient.playing, pitem->text, pterrain);
client.playing, pitem->text, govENDREP
DELTA 14226 0 421
SVN  ƒŸsƒŸmSˆZ ‡# ¤ u‡#€~ ‰$¦Ž Q¯KŽ ‚7±+Ž f³qŽ Ša´fŽ ˆ1¿V€F œÈOŽ Oê< „tå9Ž …ê<€l A  ‚9ð|˜ ‚ób¶ …Yö2Ž ‚Eü€S „[ÿ&Ž ‰„Ž ‚-%€ † iŽ s–xŽ «a˜zŽ ÍqÄj´ ‚ô@ <‚”*€I Œ{‚–1Ž ‚W‚£;¯ …h‚¦CŽ ‚‚¬:Ž …n‚®KŽ ƒX‚´H· ç‚¸X /* setting_class_is_changeable() */A_UNSET == get_player_research(client.playing)->tech_goal
      && A_UNSET == get_player_research(client.playing)->researchingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playing) {
    researching = get_player_research(client.playingclient.playingclient.playingclient.playing, a);
  b_str = advance_name_for_player(client.playing, b);

  return strcmp(a_str,b_str);
}

client.playing);

  if (TECH_KNOWN == player_invention_state(client.playing, iclient.playing (TECH_REACHABLE != player_invention_state(client.playing, i)) {
	continue;
      }client.playingclient.playingclient.playing, i)
        && TECH_KNOWN != player_invention_state(client.playing, i)
        && (11 > num_unknown_techs_for_goal(client.playing, i)client.playingclient.playingclient.playingNULL != can_upgrade_unittype(client.playing, utype))client.playing) {
    return NULL;
  }
  unit_list_iterate(client.playingclient.playingclient.playing, utype1, ut2),
	  client.playingclient.playingclient.playingclient.playingNULL != can_upgrade_unittype(client.playing, punittype)ENDREP
DELTA 13661 0 1848
SVN  ‚¯Z‚°  †R  ³L†J€X á.ºjŽ „g‚œ'Ž Ž=‚¡client */
#include "civclientclient.playing->cities, pCity) {
    
    pStr = create_str16_from_char(city_name(pCity)client.playingclient.playingENDREP
DELTA 14180 15598 8529
SVN  ‚­'‚­!5‚ ø Ž ‹Iø*€ ¥„xŽ •WªŽ „¿r© °Ä2€E Uø> ·Cõdclient.playingclient.playing) {
      menu_entry_sensitive(MENU_REPORT, MENU_REPORT_SPACESHIP,
			   (SSHIP_NONE != client.playing->spaceship.stateclient.playingclient.playing-1 == client.playing->revolution_finishesclient.playing) {
      popup_spaceship_dialog(client.playing);
    }ENDREP
DELTA 14141 30582 216
SVN  ÓnÓW6 ‡  ·P‡€I V¿8€m ’pÀ~client.playing->economic.luxury;
  int sci_end = lux_end + client.playingclient.playing->economic.luxury;
  int science = client.playing->economic.science;
  int tax = client.playingENDREP
DELTA 13927 954 316
SVN  Þ	Þb †I ³ ‡y†wŸ ¶_ ŠDÅt FÐCmap.h"
#include "packets.h"

#include "civclient.h"client.playing ? client.playingtile_city(ptile)ENDREP
DELTA 14371 8237 2012
SVN  †…3†…Tƒl Š ­ “"Šd¥ Š]ž+¥ Ùn©-€x ¥h‚„Ž ™‚©}€Z Š'‚Ã`¦ ƒO‚ì} š:‚Ñ|¹ ó‚ìsŽ ‘hƒà¨ ‚“ƒò'
      player_find_unit_by_id(client.playing, (unit_owner(pUnit) == client.playing (unit_owner(pUnit) == client.playingunit_owner(punit) == client.playing
         && ACTIVITY_IDLE == punit->activity
         && !punit->ai.control
        client.playingclient.playing, city_owner(pCity)))
      || is_non_attack_unit_tile(ptile, client.playing (unit_owner(pUnit) == client.playing)client.playing)
	 || (unit_owner(pUnit) == client.playingclient.playing0 <= client.playing->revolution_finishesENDREP
DELTA 11187 2330 1420
SVN  ×iÛ?ZŠ ‡E €? œˆ„ Y¥€ƒM …7ª8€‚ …W²+„ TØ?´ CŽ €Y G  `º{ ‚;¹/• €o»}€E ƒ$¼l² RØ? P»  –5Á2€Umem.h"
#include "rand.h"
#include "support.h"
#include "timing.h"

#include "government.h"		/* government_graphic() */
#include "map.h"
#include "player.h"
#include "unit.h"
#include "unitlis = 0client.playing) {
    return;
  }

  for (; d < (client.playing->economic.luxury) / 10; d++) {
    xaw_set_bitmap(econ_label[d], get_tax_sprite(tileset, O_LUXURY)->pixmap);
  }
 
  for (; d < (client.playing->economic.science + client.playing->economic.luxury) / 10; d++) {
    xaw_set_bitmap(econ_label[d], get_tax_sprite(tileset, O_SCIENCE)->pixmap);
  }
 
  for(; d < 10; d++) {
    xaw_set_bitmap(econ_label[d], get_tax_sprite(tileset, O_GOLD)->pixmap);
  }_list *punitlist)
{
  char buffer[512];

  my_snprintf(buffer, sizeof(buffer), "%s\n%s",
              get_unit_info_label_text1(punitlist),
              get_unit_info_label_text2(punitlist, 0));
  xaw_set_label(unit_info_label, buffer);

  if (unit_list_size(punitlist) > 0) {listThis function will change the current mouse cursor.
*******/
void update_mouse_cursor(enum cursor_type new_cursor_type)
{
  /* PORT ME */
}

enum citizen_category,
                                   int *upkeep_cost, int happy_cost,
                         upkeep_cost, happy_cost  reset_econ_label_pixmaps();
  update_info_label();
  reset_unit_below_pixmaps();
}
ENDREP
DELTA 11676 9843 9204
SVN  ‚¾Y‚Öl‡,•E G  …@H€„x „@Še€ 4ž}€ƒ1 +ž}€ƒ( Yž} ]›€‚X Rè= \}€ƒ3 ¢3€†9 Xž} E~³ ª*¤ `«g“ ¬p€‚o °N€D ~²W Y´@— a¶e k·s€B z¸[€ ‚l¹y£ r¼t¡ ƒ~¾€‚ 	Äz’ 3Æ€J :ÈU’ Ê% VËT€  nÍg« Ïg€†B bÖ+€ Rè= \}€ƒ- Zž 'Þ"€‚[ Rè= aâ€ƒ| Zž æw€‚V Rè= S}€‚) 9žx€z Xž} †Sïf† eö<™ ]÷9¢ Mø3 ƒú6€s tÿ€o ‚hƒr¯ ‚i†z¯ ƒŠ¯ ƒ<° d“x ‚‘L° ‚u“x¯ —¼ ‚a˜² ƒ
›² ‚žG« 	 p€= G¢:€L r£gœ 1¥* A  …S§=€… Wž o².† b´ €c b³^¸ L´@ ‚
·\€ Mÿ5€@ r¼@€M º> ‚¿"€Q KÉ;€! aÃe± Äa€‚  tÇT€` É!… ‚Ê1€\ Î€‚- G¢:€ Ñk€‚s ‚_Ö@€„2 LÝy€Y Aà@ 1ßb¬ A  S}€/ 4ž}€ƒ- Rè= S}€ Xž} ‚:é€e ‚`ëy€„. ò#— _ô&€‚ c‚…?€ ‚F÷Z“ F‚´=€d ?ûI€ þŽ \‚´'€f p‚«* #‚@­ o‚­\ ‚ƒp­ ‚¯x€ t÷Z ‚ˆ9Ž \‚´'€e k‚«* I‚¶;€‚t G¢:€I ‚º€N k‚’g€J Aà@ /‚”X€†R Xž} ‚6‚š`€ G Œ %‚štµ i‚ %¢ R‚¡/€‚n ‚¤U€‚v z‚¨xŽ ‚´'­ ‚‚«*­ ~‚­\­ ‚¯x€ ‚x‚± Ž ‚´'­ k‚«* [‚¶;€‚` G¢:€Y ‚º€A h¥:€O#include "log.h"

/* common */
#include "game.h"
#include "unitlist.h"

/* client */
#include "civclient.h"
#include "clinet.h"
#include "control.h"

/* gui-sdl */
#include "colors.h"
#include "dialogs.h"
#include "graphics.h"
#include "gui_id.h"
#include "gui_tilespec.h"
#include "mapview.h"
#include "repodlgs.h"
#include "themespec.h"
#include "widget.h"

#include "dialogs_g.h"

struct diplomat_dialog {
  int diplomat_id;
  int diplomat_target_id;
  struct ADVANCED_DLG *pdialog;
};

struct small_diplomat_dialog {
  int diplomat_id;
  int diplomat_target_id;
  struct SMALL_DLG *pdialog;
};
 
extern bool is_unit_move_blockedwidget *pWindow)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    move_window_group(pDiplomat_Dlg->pdialog->pBeginWidgetList, pWindowinvestigate_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_number(pDiplomat_Dlg->diplomat_target_id)) {  
      request_diplomat_action(DIPLOMAT_INVESTIGATE, pDiplomat_Dlg->diplomat_id,
                                         pDiplomat_Dlg->diplomat_target_id, 0);
    }
  
    popdown_diplomat_dialog(spy_poison_callback( struct widget *pWidget )
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_number(pDiplomat_Dlg->diplomat_target_id)) {  
      request_diplomat_action(SPY_POISON, pDiplomat_Dlg->diplomat_id,
                                         pDiplomat_Dlg->diplomat_target_id, 0);
    }
  
    popdown_diplomat_dialog(widget *pWidget)
{
  if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
     && game_find_city_by_number(pDiplomat_Dlg->diplomat_target_id)) {  
    request_diplomat_action(SPY_GET_SABOTAGE_LIST, pDiplomat_Dlg->diplomat_id,
                                       pDiplomat_Dlg->diplomat_target_id, 0);
  }

  popdown_diplomat_dialog();
  sabotage_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_number(pDiplomat_Dlg->diplomat_target_id)) {  
      request_diplomat_action(DIPLOMAT_SABOTAGE, pDiplomat_Dlg->diplomat_id,
                                         pDiplomat_Dlg->diplomat_target_id, 0);
    }
    
    popdown_diplomat_dialog();
  }widget *pWindow)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    move_window_group(pDiplomat_Dlg->pdialog->pBeginWidgetList, pWindow);
  }
  return -1;
}

static int exit_spy_steal_dlg_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    popdown_diplomat_dialog();
  }
  return -1;  
}

static int spy_steal_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    int steal_advance = MAX_ID - pWidget->ID;
  
    if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_number(pDiplomat_Dlg->diplomat_target_id)) {  
      request_diplomat_action(DIPLOMAT_STEAL, pDiplomat_Dlg->diplomat_id,
                              pDiplomat_Dlg->diplomat_target_id, steal_advance);
    }
    
    popdown_diplomat_dialog(**********
  *********/
static int spy_steal_popup(struct widgetwidget *pBuf = NULL;
  struct widget;
  SDL_Rect area;
turn 1;
  }
  
  count = 0;
  advance_index_iterate(A_FIRST, i) {
    if (player_invention_is_ready(client.playing, i)
     && TECH_KNOWN == player_invention_state(pVictim, i)
     && (TECH_UNKNOWN == player_invention_state(client.playing, i)
      || TECH_REACHABLE == player_invention_state(client.playing, i))) {
      count++;
    }
  } advance_index_iterate_end;quest_diplomat_action(DIPLOMAT_STEAL, id, target_id, advance_count()diplomat_target_id = pVcity->_skeleton(NULL, pStr, 0
  area = pWindow->area;
  area.w = MAX(area.w, adj_size(8));  
  WF_WIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);
  pBuf->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));
  area.(pWindow->size.w - pWindow->area.w)pWindow->size.h - pWindow->area.hadvance_index_iterate(A_FIRST, i) {
    if (player_invention_is_ready(client.playing, i)
     && TECH_KNOWN == player_invention_state(pVictim, i)
     && (TECH_UNKNOWN == player_invention_state(client.playing, i)
      || TECH_REACHABLE == player_invention_state(client.playing, i))) {
      count++;

      copy_chars_to_string16(pStr, advance_name_translation(advance_by_number(i))RESTORE_BACKGROUND(col * max_row)) {
        set_wflag(pBuf, WF_HIDDEN);
      }
    }
  } advance_index_iterate_end;
  
  /* get spy tech */
  i = advance_number(unit_type(game_find_unit_by_number(id))->require_advance)RESTORE_BACKGROUNDadvance_count()Diplomat_Dlg->pdialog->pBeginWidgetList;
  pDiplomat_Dlg->pdialog->pEndActiveWidgetList = pDiplomat_Dlg->pdialog->pEndWidgetListDiplomat_Dlg->pdialog->pEndActiveWidgetListarea.w = MAX(area.w, (col * pBuf->size.w + adj_size(2) + i));
  area.h = count * pBuf->size.h + adj_size(2);

  /* alloca window theme and win background buffer */
  pSurf = theme_get_background(theme, BACKGROUND_SPYSTEALDLG);
  if (resize_window(pWindow, pSurf, NULL,
                    (pWindow->size.w - pWindow->area.w) + area.w,
                    (pWindow->size.h - pWindow->area.h) + area.h))
  {
    FREESURFACE(pSurf);
  }
  
  area = pWindow->area;
  
  widget_set_position(pWindow,
                      (Main.screen->w - pWindow->size.w) / 2,
                      (Main.screen->h - pWindow->size.h) / 2);
  
    /* exit button */
  pBuf = pWindow->prev;
  pBuf->size.x = area.x + area.w - pBuf->size.w - 1;
  pBuf->size.y = pWindow->size.y + adj_size(2);
  
  setup_vertical_widgets_position(col, area.x + 1,
		  area.yarea.x + area.w, area.y,
    	area.h, TRUE);
  }

  redraw_group(pDiplomat_Dlg->pdialog->pBeginWidgetList, pWindow, FALSE);
  widget_mark_dirty(pWindow);
  steal_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_number(pDiplomat_Dlg->diplomat_target_id)) {  
      request_diplomat_action(DIPLOMAT_STEAL, pDiplomat_Dlg->diplomat_id,
                                     pDiplomat_Dlg->diplomat_target_id, A_UNSET);
    }
    
    popdown_diplomat_dialog();  widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_city_by_number(pDiplomat_Dlg->diplomat_target_id)) {  
      dsend_packet_city_incite_inq(&aconnection, pDiplomat_Dlg->diplomat_target_id);       
    }
    
    popdown_diplomat_dialog();
  }  widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    struct unit *punit;
    struct city *pcity;
    
    if( (punit=game_find_unit_by_number(pDiplomat_Dlg->diplomat_id))
        && (pcity=game_find_city_by_number(pDiplomat_Dlg->diplomat_target_id))
        && !same_pos(punit->tile, pcity->tile)) {
      request_diplomat_action(DIPLOMAT_MOVE, pDiplomat_Dlg->diplomat_id,
                              pDiplomat_Dlg->diplomat_target_id, 0);
    }
    
    popdown_diplomat_dialog();  widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
  
    if (game_find_unit_by_number(pDiplomat_Dlg->diplomat_id)
       && game_find_unit_by_number(pDiplomat_Dlg->diplomat_target_id)) {  
      dsend_packet_unit_bribe_inq(&aconnection, pDiplomat_Dlg->diplomat_target_id);
    }
    
    popdown_diplomat_dialog();
  }  spy_sabotage_unit_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    int diplomat_id = MAX_ID - pWidget->ID;
    int target_id = pWidget->data.unit->id;
    
    popdown_diplomat_dialog();
    request_diplomat_action(SPY_SABOTAGE_UNIT, diplomat_id, target_close_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    popdown_diplomat_dialog(widgetbool spy;
  SDL_Rect areacity(ptile);
  spy = unit_has_type_skeleton(NULL, pStr, 0);
    
  pWindow->action = diplomat_dlg_window_callback;
  set_wstate(pWindow, FC_WS_NORMALarea = pWindow->area;
  area.w = MAX(area.w, adj_size(8));
  area.h = MAX(area.h, adj_size(2));
  
  /* ---------- */
  if((pCity))
  {
    /* Spy/Diplomat acting against a city */

    pDiplomat_Dlg->diplomat_target_id = pCity->id;    
  area.w = MAX(area.w, pBuf->size.w);
      area.area.w = MAX(area.w, pBuf->size.w);
      area.area.w = MAX(area.w, pBuf->size.w);
      area.area.w = MAX(area.w , pBuf->size.w);
      area.area.w = MAX(area.w , pBuf->size.w);
      area.area.w = MAX(area.w, pBuf->size.w);
      area.
      pDiplomat_Dlg->diplomat_target_id = pTunit->id;
     area.w = MAX(area.w , pBuf->size.w);
        area.area.w = MAX(area.w , pBuf->size.w);
        area.area.w = MAX(area.w, pBuf->size.w);
  area.
  resize_window(pWindow, NULL, NULL, 
                (pWindow->size.w - pWindow->area.w) + area.w,
                (pWindow->size.h - pWindow->area.h) + area.h);
  
  area = pWindow->area pWindow->size.w, pWindow->size.h,
                           pUnit->tile);
area.x,
  	area.y + 1, area.widget_flush(pWindow);
  
}


static int sabotage_impr_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    int sabotage_improvement = MAX_ID - pWidget->ID;
    int diplomat_target_id = pWidget->data.cont->id0;
    int diplomat_id = pWidget->data.cont->id1;
      
    popdown_advanced_terrain_dialog();
    
    if(sabotage_improvement == 1000)
    {
      sabotage_improvement = -1;
    }
    
    if(game_find_unit_by_number(diplomat_id)
      && game_find_city_by_number(diplomat_target_id)) { 
      request_diplomat_action(DIPLOMAT_SABOTAGE, diplomat_id,
                              diplomat_target_id, sabotage_improvement + 1);
    }widgethead_of_units_in_focus();
  SDL_String16 *pStr;
  SDL_Rect area, area2;
  int n, w = 0, h, imp_h = 0;
  
  if (pDiplomat_Dlg || !pUnit || !unit_has_type_flag(pUnit, F_SPY)) {
    return;
  }
  
  is_unit_move_blocked = TRUE;
  pUnit->id;
  pDiplomat_Dlg->diplomat_target_id = pCity->_skeleton(NULL, pStr, 0);
    
  pWindow->action = diplomat_dlg_window_callback;
  set_wstate(pWindow, FC_WS_NORMAL);
  
  add_to_gui_list(ID_TERRAIN_ADV
  area = pWindow->area;
  area.h = MAX(area.h, adj_size(2));
  WF_WIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);
  pBuf->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));
  area.w += pBuf->size.w + adj_size(10);
  pBuf->action = diplomat_closearea.w = MAX(area.w, pBuf->size.w);
  area.h += pBuf->size.h;

  /* separator */
add_to_gui_list(ID_SEPARATOR, pBuf);
  area.h += pBuf->next->size.h;
  /* ------------------ */
  n = 0;
  city_built_iterate(pCity, pImprove) {
    if (pImprovecity_improvement_name_translation(pCity, pImproverovement_number(pImprove), pBuf);
    
      area.w = MAX(area.w , pBuf->size.w);
      imp_h += pBuf->size.h;
      
      if (!pDiplomat_Dlg->pdialog->pEndActiveWidgetList)
      {
	pDiplomat_Dlg->pdialog->pEndActiveWidgetList = pBuf;
      }
    
      if (improvement_number(pImprove)city_built_iterate_end;

  pDiplomat_Dlg->pdialog->pBeginActiveWidgetList = pBuf;
  
  if (n > 0area.area.w = MAX(area.w, pBuf->size.w);
  area.h += pBuf->size.h;
  /* ----------- */
  
  pLast = pBuf;
  pDiplomat_Dlg->pdialog->pBeginWidgetList = pLast;
  pDiplomat_Dlg->pdialog->pActiveWidgetList = pDiplomat_Dlg->pdialoDiplomat_Dlg->pdialog,
		  1, 10, TRUE, TRUE);
    area.w += n;
  }
  /* ---------- */
  
  
  area.h += imp_h;

  resize_window(pWindow, NULL, NULL, 
                (pWindow->size.w - pWindow->area.w) + area.w,
                (pWindow->size.h - pWindow->area.h) + area.h);
  
  area = pWindow->area pWindow->size.w, pWindow->size.h,
                           pUnit->tile);        
  
  w = area.w;
  
  if (pDiplomat_Dlg->pdialoarea.x + area.w - pBuf->size.w - 1;
  pBuf->size.y = pWindow->size.y + adj_size(2);
  
  /* Production sabotage */
  pBuf = pBuf->prev;
  
  pBuf->size.x = area.x;
  pBuf->size.y = area.y + 1;
  pBuf->size.w = w;
  h = pBuf->size.h;
  
  area2.x = adj_size(10);
  area2.h = adj_size(2);
  
  pBuf = pBuf->prev;
  while(pBuf)
  {
    
    if (pBuf == pDiplomat_Dlg->pdialo2.y = pBuf->size.h / 2 - 1;
      area2.w = pBuf->size.w - adj_size(20);
      
      SDL_FillRect(pBuf->theme , &area2, map_rgba(pBuf->theme->format, *get_game_colorRGB(COLOR_THEME_SABOTAGEDLG_SEPARATOR)));
    }
    
    if (pBuf == pLast) {
      break;
    }
    pBuf = pBuf->prev;  
  }
  
  if (pDiplomat_Dlg->pdialog->pScroll)
  {
    setup_vertical_scrollbar_area(pDiplomat_Dlg->pdialog->pScroll,
	area.x + area.w,
    	pDiplomat_Dlg->pdialog->pEndActiveWidgetList->size.y,
    	area.y - pDiplomat_Dlg->pdialog->pEndActiveWidgetList->size.y +
	    area.hDiplomat_Dlg->pdialog->pBeginWidgetList, pWindow, 0);

  widget_flush(pWindow);
  
}

/* small_diplomat_dialog *pIncite_Dlg = NULL;

incite_dlg_window_callback(struct widget *pWindow)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    move_window_group(pIncite_Dlg->pdialog->pBeginWidgetList, pWindowincite_yes_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    if (game_find_unit_by_number(pIncite_Dlg->diplomat_id)
       && game_find_city_by_number(pIncite_Dlg->diplomat_target_id)) {  
      request_diplomat_action(DIPLOMAT_INCITE, pIncite_Dlg->diplomat_id,
                                         pIncite_Dlg->diplomat_target_id, 0);       
    }
    popdown_incite_dialog();
  }  exit_incite_dlg_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    popdown_incite_dialog(dialog->pBeginWidgetList,
				pIncite_Dlg->pdialog->pEndWidgetList);
    FC_FREE(pIncite_Dlg->pdialogwidget *pWindow = NULL, *pBuf = NULL;
  SDL_String16 *pStr;
  struct unit *pUnit;
  char cBuf[255]; 
  bool exit = FALSE;
  SDL_Rect area;
  
  if (pIncite_Dlg) {
    return;
  }
  
  /* ugly hack */
  pUnit = head_of_units_in_focus();
  
  if (!pUnit || !is_diplomat_unit(pUnit)) {
    return;
  }
  
  is_unit_move_blocked = TRUE;
  
  pIncite_Dlg = fc_calloc(1, sizeof(struct small_diplomat_dialog));
  pIncite_Dlg->diplomat_id = pUnit->id;
  pIncite_Dlg->diplomat_target_id = pCity->id;
  pIncite_Dlg->pdialog = fc_calloc(1, sizeof(struct SMALL_DLG));  
_skeleton(NULL, pStr, 0
  add_to_gui_list(ID_INCITE_DLG_WINDOW, pWindow);
  pIncite_Dlg->pdialog->pEndWidgetList = pWindow;
  
  area = pWindow->area;
  area.w  =MAX(area.w, adj_size(8));
  area.h = MAX(area.h, adj_size(2));
  
  if (INCITE_IMPOSSIBLE_COST == pCity->incite_revolt_cost) {
      WF_WIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);  
    pBuf->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));
    area.city_name(pCity));
      
    add_to_gui_list(ID_LABEL , pBuf);
    
    area.w = MAX(area.w , pBuf->size.w);
    area.area.w = MAX(area.w , pBuf->size.w);
    area.h += pBuf->size.h;
    
  } else if (pCity->incite_revolt_cost <= client.playing->economic.goldclient.playing      
  
    add_to_gui_list(ID_LABEL , pBuf);
    
    area.w = MAX(area.w, pBuf->size.w);
    area.area.w = MAX(area.w, pBuf->size.w);
    area.area.w = MAX(area.w, pBuf->size.w);
    area.  WF_WIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);
  pBuf->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));
    area.client.playing      
  
    add_to_gui_list(ID_LABEL, pBuf);
    
    area.w = MAX(area.w, pBuf->size.w);
    area. , pBuf);
    
    area.w = MAX(area.w, pBuf->size.w);
    area.h += pBuf->size.h;
  }
  pIncite_Dlg->pdialog->pBeginWidgetList = pBuf;
  
  /* setup window size and start position */

  resize_window(pWindow, NULL, NULL,
                (pWindow->size.w - pWindow->area.w) + area.w,
                (pWindow->size.h - pWindow->area.h) + area.h);
  
  area = pWindow->area pWindow->size.w, pWindow->size.h,
                           pCity->tilearea.x + area.w - pBuf->size.w - 1;
    pBuf->size.y = pWindow->size.y + adj_size(2);
  }
  
  pBuf = pBuf->prev;
  setup_vertical_widgets_position(1,
	area.x,
  	area.y + 1, area.w, 0,
	pIncite_Dlg->pdialodialog->pBeginWidgetList, pWindow, 0);

  widget_flush(pWindow);
  
}

/* small_diplomat_dialog *pBribe_Dlg = NULL;

static int bribe_dlg_window_callback(struct widget *pWindow)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    move_window_group(pBribe_Dlg->pdialog->pBeginWidgetList, pWindow);
  }
  return -1;
}

static int diplomat_bribe_yes_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    if (game_find_unit_by_number(pBribe_Dlg->diplomat_id)
       && game_find_unit_by_number(pBribe_Dlg->diplomat_target_id)) {  
       request_diplomat_action(DIPLOMAT_BRIBE, pBribe_Dlg->diplomat_id,
                                          pBribe_Dlg->diplomat_target_id, 0);       
    }
    popdown_bribe_dialog();
  }  
  return -1;
}

static int exit_bribe_dlg_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    popdown_bribe_dialog(dialog->pBeginWidgetList,
				pBribe_Dlg->pdialog->pEndWidgetList);
    FC_FREE(pBribe_Dlg->pdialog);
    FC_FREE(pBribe_Dlg);
    flush_dirty();
  }
}

****
  Popupup_bribe_dialog(struct unit *pUnit)
{
  struct widgetbool exit = FALSE;
  SDL_Rect areahead_of_units_in_focus();
  
  if (!pDiplomatUnit || !is_diplomat_unit(pDiplomatUnit)) {
    return;
  }
  
  is_unit_move_blocked = TRUE;
  
  pBribe_Dlg = fc_calloc(1, sizeof(struct small_diplomat_dialog));
  pBribe_Dlg->diplomat_id = pDiplomatUnit->id;
  pBribe_Dlg->diplomat_target_id = pUnit->id;
  pBribe_Dlg->pdialog = fc_calloc(1, sizeof(struct SMALL_DLG));
_skeleton(NULL, pStr, 0);
    
  pWindow->action = bribe_dlg_window_callback;
  set_wstate(pWindow, FC_WS_NORMAL);

  add_to_gui_list(ID_BRIBE_DLG_WINDOW, pWindow);
  pBribe_Dlg->pdialog->pEndWidgetList = pWindow;
  
  area = pWindow->area;
  area.w = MAX(area.w, adj_size(8));
  area.h = MAX(area.h, adj_size(2));
  
  if (pUnit->bribe_cost <= client.playing->economic.goldclient.playingarea.w = MAX(area.w, pBuf->size.w);
    area.area.w = MAX(area.w, pBuf->size.w);
    area.area.w = MAX(area.w, pBuf->size.w);
    area.  WF_WIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);
    pBuf->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));
    area.client.playingarea.w = MAX(area.w, pBuf->size.w);
    area.area.w = MAX(area.w, pBuf->size.w);
    area.h += pBuf->size.h;
  }
  pBribe_Dlg->pdialog->pBeginWidgetList = pBuf;
  
  /* setup window size and start position */

  resize_window(pWindow, NULL, NULL,
                (pWindow->size.w - pWindow->area.w) + area.w,
                (pWindow->size.h - pWindow->area.h) + area.h);
  
  area = pWindow->area pWindow->size.w, pWindow->size.h,
                           pDiplomatUnit->tile);      area.x + area.w - pBuf->size.w - 1;
    pBuf->size.y = pWindow->size.y + adj_size(2);
  }
  
  pBuf = pBuf->prev;
  setup_vertical_widgets_position(1,
	area.x,
  	area.y + 1, area.w, 0,
	pBribeBribe_Dlg->pdialog->pBeginWidgetList, pWindow, 0);

  widget_flush(pWindow);
}
ENDREP
DELTA 14376 11321 4521
SVN  ƒÛiƒÛ%] Œv  ‚ãM6¹ „C‚ñ>– °6‚öŽ µƒ¦]client.playing) {
    char *text;

    if (client.playingNULL != client.playingclient.playingENDREP
DELTA 14208 80644 78
SVN  ÎÎXC…O †^ ‹ –B†R€w „ž€  ‚£<€. p¦w¶ p¨Ž ‚F©— n©? ¬j€ ’0®f‡ Œ}Áivclient.h"client.playing || player == client.playing) {
    return "-";
  } else {
    pds = pplayer_get_diplstate(client.playingclient.playing || player == client.playing || !player->ai.control) {
    return "-";
  } else {
    return love_text(player->ai.love[player_index(client.playingconst struct player *player2)
{
  int love1, love2;

  if (!client.playing) {
    return player_number(player1) - player_number(player2);
  }

  if (player1 == client.playingclient.playing)];
  }

  if (player2 == client.playingclient.playingclient.playing, player)const char *plrdlg_col_state(const struct player *plr)
{
  if (!plr->is_alive) {
    /* TRANS: Dead -- Rest In Peace -- Reqia In Pace */
    return _("R.I.P.plrdlg_ENDREP
DELTA 10581 6046 109
SVN  ŽŽQ
6 Œk ¶ 0Œhconst char *plrdlg_col_state(const struct player *plr)ENDREP
DELTA 14214 103 404
SVN  õdõ2‰Y ‡(  Ž‡:€6 W—» m™Ž ‚š€H uœtŽ Kx€X n£(Ž p¤%± O¡;Ž }£Ž ‚Z¤%€\ y¨_Ž ©gŽ «€0 Z­B€N ‹Y¯lŽ Ãw»TŽ …ÿZ¨ ‚…¿ ŠK‡VŽ ‚&’0Ž ƒm”e® ƒm™Ž Øgœ}TECH_KNOWN == player_invention_state(client.playing, tech_id)) {
      id = ListBox_AddString(GetDlgItem(science_dlg, ID_SCIENCE_LIST),
			     advance_name_for_player(client.playingA_UNSET == get_player_research(client.playing)->researchingclient.playingclient.playing)->bulbs_researched,
		total_bulbs_required(client.playingclient.playingTECH_REACHABLE != player_invention_state(client.playing, tech_id)) {
	continue;
      }
client.playingif (tech_id == get_player_research(client.playingclient.playingclient.playingclient.playing, tech_id)
        && TECH_KNOWN != player_invention_state(client.playing, tech_id)
        && (11 > num_unknown_techs_for_goal(client.playing, tech_id)
	    || tech_id == get_player_research(client.playingclient.playingclient.playingA_UNSET == get_player_research(client.playing)->tech_goal) {
    id = ComboBox_AddString(GetDlgItem(science_dlg, ID_SCIENCE_GOAL),
			    advance_name_for_player(client.playingclient.playing,
                            get_player_research(client.playingclient.playingclient.playing = can_upgrade_unittype(client.playing, client.playing, ut1, ut2),
			  client.playing->economic.gold);client.playingclient.playing    city_list_iterate(client.playing->cities, client.playingENDREP
DELTA 13297 168633 3641
SVN  èzêOƒ ‡  I‡*‹ éˆg  ‹Pñ~  ˆ@ý^“ Œ}†?½ NÑ= KÂ@ ’e•Ž ‚8§v€ ‰ª{¸ Ÿ1´0  •	Óqivclient.h"client.playing, pitem->text, impclient.playing, pitem->text, imp"Resources: (none)"client.playing, pitem->text, pterrain);
  set_help_text(buf);client.playing
                    utype_name_translation(utype->obsoleted_by));
    }

    helptext_unit(buf, sizeof(buf), client.playing, pitem->text, utypeadvance(buf, sizeof(buf), client.playing, pitem->text, iclient.playing, pitem->text, govENDREP
DELTA 14272 56 183
SVN  „ê„ê ‰X  ƒèI‰jŽ ÷SƒòBclient.playingENDREP
DELTA 12524 58 442
SVN  ÃvÃq4 ‹5 €4 ·Œnclient.playing)),
	      textyear(game.info.year), client.playing->economic.gold,
	      client.playing->economic.tax,
	      client.playing->economic.luxury,
	      client.playingENDREP
DELTA 14259 4682 3597
SVN  ò.ò+? Ø7 Ž ÂuØF£ Ã2›_Ž “ß client.playingunit_owner(punit) == client.playingclient.playingENDREP
DELTA 14102 175 3570
SVN  ƒ¦qƒ¨
d‡n †v  ™A†rˆ Ü #° „ü"½ ´1€ Á%µ/¼ ÷€ øSˆ „Tùf‚ Æ7þ< `‚Å" ƒ`‚Æ1 ‡|‚ÊJŽ ‰:‚ÒU€„> ÆM‚à$
#include "gameMAP_VIEWcase MENU_REPORT_MAP_VIEW:
    map_canvas_focus(client.playing) {
      popup_spaceship_dialog(client.playingView"),			"F1",
	reports_menu_callback,	MENU_REPORT_MAP_VIEWNations"),		"F3",
	reports_menu_callback,	MENU_REPORT_PLAYERS					},
  { "/" N_("Reports") "/" N_("_Cities"),		"F4",
	reports_menu_callback,	MENU_REPORT_CITIEResearch_SC_S_RUNNING <= client_state()C_S_RUNNING <= client_state()client.playing, disable these reports. */
    menus_set_sensitive("<main>/_Reports/_Cities",
			(NULL != client.playing));
    menus_set_sensitive("<main>/_Reports/_Units",
			(NULL != client.playing));
    menus_set_sensitive("<main>/_Reports/_Economy",
			(NULL != client.playing));
    menus_set_sensitive("<main>/_Reports/_Research",
			(NULL != client.playing));
    menus_set_sensitive("<main>/_Reports/_Demographics",
			(NULL != client.playing));
    menus_set_sensitive("<main>/_Reports/_Spaceship",
			(NULL != client.playing
			 && SSHIP_NONE != client.playing->spaceship.stateENDREP
DELTA 11057 4171 226
SVN  ·|·a!( †  ‹:†*§ ;’€s ‹ = 
«TŽ ‹¬mclient.playing
      && !client.playingcity(messages[i].tile);

      messages[i].city_ok =
        (pcity && can_player_see_city_internals(client.playingclient.playingENDREP
DELTA 13616 0 2050
SVN  ‚Å0‚Å* ‡>  ×u‡PŽ ÓRßTŽ †,³5Ž ‹@‚¹pclient.playingclient.playingclient.playingENDREP
DELTA 14208 93061 8545
SVN  òQó;5 ‰!  #‰3ˆ ª_ŠG¡ 6µ5Ž õp¶z© ² H«? ƒ®k© ¯c²Ÿ Kâivclient!client.playing || client.playingclient.playingplayer_by_number(giver) == client.playingADVANCE, techplayer_by_number(giver) == client.playingclient.playing;
  struct playerENDREP
DELTA 13354 16921 6255
SVN  ±9²"3‚@ ‰H œ ƒn‰_’ –LZ€C Ô¥¼ š.ù› ,“?© ƒW£|€O ‰¨$lient */
#include "civclientLOG_FATAL, tag, ""
    theme_lookup_sprite_tag_alt(theme, LOG_FATAL, "theme.city", ""load_order_theme_surface(pBuf, OLoad_Icon, "theme.order_load  FREESURFACE(pTheme->OLoadSDL_DisplayFormatAlpha(pFuture_Tech_Icon)client.playing, tech_id))
  {
    switch (player_invention_state(client.playingENDREP
DELTA 14403 2681 26889
SVN  †  †   …–@ €Q q…—!  …˜! ‚…™0€ƒ$ A…œ€2 5…¡6€‚H &…ž;€Z I…ž; …¤C… c…¥j€‚c d…¨a #…©D… U…ªp  :…«{€ ƒ&…®r… ™…²! V…Ë1… Ï%…Ícity_tile_iterate(pcenter, tile1) {
	map_set_known(tile1, plr);
      } city_tilecity_map_updatecity_map_update = secfile_lookup_str(file, "player%d.c%d.workers", plrno, i);
    if (strlen(p) != CITY_MAP_SIZE * CITY_MAP_SIZE) {
      /* FIXME: somehow need to rearrange */
      freelog(LOG_ERROR, "player%d.c%d.workers"
              " length %lu not equal city map size %lu, needs rearranging!",
              plrno, i,
              (unsigned long)strlen(p),
              (unsigned long)(CITY_MAP_SIZE * CITY_MAP_SIZE));
    }

	pcity->city_map[x][y] = valid ? C_TILE_EMPTY : C_TILE_UNAVAILABLE;

	switch (*p) {
	case '\0':
	  /* too short, will yield very odd results! */
	  continue;

	case S_TILE_EMPTYenter), city_name(pcity), pcity->size);
	  } else {
	    struct tile *ptile = city_map_to_tile(pcenter, x, y);

	    city_map_update(pcity, ptile, x, y,
			    (NULL != ptile)
			    ? C_TILE_EMPTY : C_TILE_UNAVAILABLE);
	  }
	  break;

	case S_TILE_WORKER:
	  if (!valid
	   || NULL == (ptile = city_map_to_tile(pcenter, x, y))enter), city_name(pcity), pcity->size);
	  } else if (NULL != (pwork = tile_worked(ptile))entercity_map_update(pcity, ptile, x, y, C_TILE_UNAVAILABLE);
	    pcity->specialists[DEFAULT_SPECIALIST]++;
	    citizens++;
	  } else {
	    city_map_update(pcity, ptile, x, y, C_TILE_WORKER);
	    citizens++;
	  }
	  break;

	case S_TILE_UNAVAILABLE:
	  if (valid
	   && NULL != (ptile = city_map_to_tile(pcenter, x, y))) {
	    city_map_update(pcity, ptileentertile_worked(pcenter) != pcity) {enter), city_name(pcity), pcity->size);

      /* bypass city_map_update() checks */
      pcity->city_map[CITY_MAP_SIZE/2][CITY_MAP_SIZE/2entercity_map_updateenter†  „–/„šaŠ €‚& R£ ‚ AØ@ ö  €% ™/÷  ƒ9>… Ïw” €) sä^¹ æ€L é€w ‚#ë€ îG€\ ½9ð. è"ƒ®   whole_map_iterate(ptile) {
      if (map_is_known(ptile, plr)) {
	struct city *pcity = tile_city(ptile);

	update_player_tile_last_seen(plr, ptile);
	update_player_tile_knowledge(plr, ptile);

	if (NULL != pcity) {
	  update_dumb_city(plr, pcity);
	}
      }
    } whole_map_iterate_end;
  }..*************/
s    struct tile *pcenter = city_tile(pcity);

    i++;
    secfile_insert_int(file, pcenter->nat_y, "player%d.c%d.y", plrno, i);
    secfile_insert_int(file, pcentercity_map_statusenterstruct tile *pcenter = city_tile(pcity);

  city_tile_iterate_cxy(pcenter, ptile, x, y) {
    bool res = city_can_work_tile(pcity, ptile);

    /* bypass city_map_statuscity_map_update(pcity, ptile, x, y, C_TILE_UNAVAILABLE);
enter), city_name(pcity), pcity->size);
      }
      break;
    case C_TILE_WORKER:
      if (!res) {
	city_map_update(pcity, ptile, x, y, C_TILE_UNAVAILABLE);
	pcity->specialists[DEFAULT_SPECIALIST]++;
enter), city_name(pcity), pcity->size);

	city_tile_iterate(ptile, tile2) {
	  struct city *pcity2 = tile_city(tile2);
city_tile_iterate_end;
      }
      break;
    case C_TILE_UNAVAILABLE:
      if (res) {
	city_map_update(pcity, ptile, x, y, C_TILE_EMPTY);
enter), city_name(pcity), pcity->size);
      }
      break;
    }
  } city_tile_iterate_cxyENDREP
DELTA 13038 800670 2285
SVN  ‹G‹-P‚p ‡/  
‡A‹ Æˆ?¡ Îvœ oÐ/œ WÑ=§ ‡Ò:¡ ƒ
Ùn® †YÝ'« tä4€B ‚.‚h“ ‚…7– G  ƒˆ*ivclient.h""Failed reading PNG file: \"%s\"""Failed creating PNG struct""Failed creating PNG struct""Failed while reading PNG file: \"%s\"""PNG file has no palette: \"%s\""nsparent array entry is out of palette: \"%s\"PNG info struct is NULL (non-fatal): \"%s\" = get_nation_flag_sprite(tileset, nation_of_player(client.playingutype_count()) */ {  }
  return(pm);
}


ENDREP
DELTA 14208 103258 669
SVN  †  †  ‚bŒb ‰E  Š5‰WŽ †G”Ž ’šq€C ‚­JŽ ‰D¯`¦ ƒ” ŠzºN¦ ¬mÅoŽ ÷òkŽ á\é}Ž …P‚ËhŽ „K‚ÑGŽ ŠZ‚Ö!€ •[‚âŽ ‚÷nŽ e‚÷n ¤Lƒ… Tƒ®s ”=ƒ«=Ž ‹ƒÀ	Ž …@ƒË6™ LƒÕ|š yƒÚ} .ƒÒoŽ ˆƒã,Ÿ Mƒô; @ƒì'Ž ‰2ƒívŽ ‚ƒ÷7Ž ÅvƒùMŽ …<„¿RŽ „Å» «e„Õo€o O…‚EŽ …„#Ž ˆ6……?Ž ˆM…ŽŽ q…–`Ž „O…—`Ž ƒ$…œ>Ž ˆr…Ÿq¹ r…©¼ ƒ*…ªMŽ „&…®Ž ƒ6…²;Ž ™`…¶ Ž q…Ïo€V …Ñ8€V œ…á%€= …þ{€E 0†P P„Çwclient.playingclient.playingclient.playing, ut1);
    value = unit_upgrade_price(client.playingclient.playingvalue <= client.playing->economic.goldvalue <= client.playing->economic.goldclient.playingclient.playingclient.playingclient.playingclient.playing
    if (tax != client.playing->economic.tax
     || science != client.playing->economic.science
     || luxury != client.playingclient.playingclient.playingclient.playing->economic.goldclient.playingclient.playingclient.playing->economic.(TTF_STYLE_BOLD|SF_CENTER)client.playingclient.playing->economic.luxuryclient.playingclient.playingclient.playingclient.playingclient.playingtech_id == get_player_research(client.playing)->researchingA_UNSET != get_player_research(client.playing)->researching) {
      cost = total_bulbs_required(client.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingclient.playingA_UNSET != get_player_research(client.playing)->tech_goalclient.playing,
          get_player_research(client.playingclient.playingclient.playingclient.playingclient.playingclient.playing, i)
     || TECH_REACHABLE != player_invention_state(client.playing, i)client.playing, i)
     || TECH_REACHABLE != player_invention_state(client.playing, i)client.playing, i)
        && TECH_KNOWN != player_invention_state(client.playing, i)
	&& (11 > num_unknown_techs_for_goal(client.playing, i)
	    || i == get_player_research(client.playingclient.playing, i)
        && TECH_KNOWN != player_invention_state(client.playing, i)
	&& (11 > (num = num_unknown_techs_for_goal(client.playing, i))
	    || i == get_player_research(client.playing†  ¼{¼'n š>P€R ›bŽ ƒ7œwŽ œ> =client.playing, i)
     && TECH_KNOWN != player_invention_state(client.playing, i)client.playingclient.playingENDREP
DELTA 13494 0 42416
SVN  „š\„ m‚ešz ²D € q¤) eƒù6 ƒ§> „P¸H€ °8Š S±? ŽBÀ= g¿ Ð~€A žDÓ%  „"ñy‹ „z ƒ.í6‹ …Eðe £y€€ ŠJ¤)€} Žg° ¨i¿¼ ˆYè‹ ÊRðe€A †‚¼m€‚ S‚Å/ ‚‚È¸ Eñy ¢‚Ë|€‚e mœ8œ ¬6€) ®/™ Z { r°) *¢j€ l¤)€E jƒù1€ ƒûµ P±q€X /ƒþT€} ‚3¶= mÇb€Z NÉ2 PÉ‚ ‚ÊX '„‡7€‚ RÉ}€R „ŒQ€R $„ƒ „z ƒ.í6‹ ‚	ðe Ròq Jý7  uô4€[ x„™)Š;„š!WIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);
    pCloseButton->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));pIcon = ResizeSurfaceBox(get_building_surface(pImprove),
                               adj_size(36), adj_size(36), 1, TRUE, TRUE);
      dst.x = adj_size(5)Improvemenete any previous list entriesResizeSurfaceBox(pSurf, adj_size(64), adj_size(48), 1, TRUE, TRUEclient.playing, NULL, pImpr_type {
        adj_size(2)WIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);
    pCloseButton->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));pIcon = ResizeSurfaceBox(get_unittype_surface(ut),
                               adj_size(36), adj_size(36), 1, TRUE, TRUE);ete any previous list entriessizeof(buffer), client.playing, "", utype_by_number(type_id)adj_size(2)ResizeSurfaceBox(pSurf, adj_size(48), adj_size(48), 1, TRUE, TRUEpWidget = create_iconlabel_from_chars(
                  ResizeSurfaceBox(get_unittype_surface(un),
                                   adj_size(48), adj_size(48), 1, TRUE, TRUE),
                  pWindow->dst, utype_name_translation(pUnitType), adj_font(14),
    advance(buffer, sizeof(buffer), client.playing, "", techndow;
  struct TECHS_BUTTONS *pStore;
  
  struct widget *pCloseButton = NULL;
  struct widget *pAdvanceLabel = NULL;
  struct widget *pListToggleButton = NULL;
  
  struct widget *pDock;
  SDL_String16 *pTitle, *pStr;
  SDL_Surface *pSurf;
  int h, tech_count;
  bool created;
  int scrollbar_width = 0;
  SDL_Rect area;

  if(current_help_dlg != HELP_TECHcurrent_help_dlg = HELP_TECHTECHS_BUTTONS));

    pStore->show_tree = FALSE;
    pStore->show_full_tree = FALSE;

    /* create window */
    pTitle = create_str16_from_char(_("Help : Advances Treedata.ptr = (void *)pStoreWIDGET_HAS_INFO_LABEL | WF_RESTORE_BACKGROUND);
    pCloseButton->string16 = create_str16_from_char(_("Close Dialog (Esc)"), adj_font(12));    
    /* --- create scrollable advance list on the left side ---*/tech_count = 0;
    advance_index_iterate(A_FIRST, i) {
      struct advance *vap = valid_advance_by_number(i);;
      if (vap)AdvanceLabel = create_icon2(pSurf, pWindow->dst,
      set_wstate(pAdvanceLabel, FC_WS_NORMAL);
        pAdvanceLabel->action = change_tech_callback;
        add_to_gui_list(MAX_ID - i, pAdvanceLabel);

        if (++tech_count > 10) {
          set_wflag(pAdvanceLabelAdvanceLabel ? pAdvanceLabel : pCloseButton;
    pHelpDlg->pBeginActiveWidgetList = pHelpDlg->pBeginWidgetList;

    if (techAdvances"),
                                                           adj_font(10), 0);
  }ete any previous list entries */
    if (pDock != pHelpDlg->pBeginWidgetList) {
      del_group_of_widgets_from_gui_list(pHelpDlg->pBeginWidgetList, pDock->prev);
      pHelpDlg->pBeginWidgetList = pDock;
    }

    /* show/hide techs list */
    pListToggleButton = pDock;
    
  } else {
      set_wstate(pListToggleButton, FC_WS_DISABLED);
    }

    if (pStore->show_full_tree) {
      /* all entries are visible without scrolling */
      hide_group(pHelpDlg->pBeginActiveWidgetList,
 AdvanceLabel = pHelpDlg->pActiveWidgetList;
      while(pAdvanceLabel && count--) {
        pAdvanceLabel = pAdvanceLabel->prev;
      }
      pAdvanceLabel = pAdvanceLabel->next;
      show_group(pAdvanceLabel {
adj_size(2)pHelpDlg->pEndActiveWidgetList);if (pStore->show_tree) {
    pHelpDlg->pBeginWidgetList = create_tech_tree(tech, scrollbar_scrollbar_ENDREP
DELTA 14259 1381 598
SVN  €U€_^ ‡u €v ¸Rˆf¹ ‘eÁo¯ ¬UÔ overnment.h"
#include "packets.h"
#include "player.h"
#include "shared.h"
#include "support.h"

#include "civclient.h" (TECH_KNOWN == player_invention_state(client.playing, i)player_by_number(XTPOINTER_TO_INT(client_data))ENDREP
DELTA 14415 22953 6454
SVN  ‚Ñ@‚Ðd‚”< ‡Y ± „ ˆ
€O Œ{« J?Ž >žŽ ‡Ÿe« P§(Ž Ÿe ”Vª« „(¿€R zŸq ŒnÅ©  
Ò€p „Oô+ 1ù"Ž qúb€B xü	Ž ˆbý€M y†;Ž †5ˆC€Q =K€& ˆ"’7€ƒ} …žYŽ R£yŽ ¤Z€R ^¦(Ž §€F „ ©~€m m‚žw• @´{ ¨O±/Ž ÚŽ †Û:Ž ƒpáY€b næ,€\ Bèx€] p³} £hú± „t‚ž#Ž w‚£&€1 «n‚¥Rivclient.h"
#include "climap.h"
#include "climiscclient.playing) {
      before_penalty = get_player_output_bonus(client.playingclient.playing && owner == client.playing) client.playingclient.playingclient.playing || owner == client.playing) client.playingclient.playing || owner == client.playing) client.playing->diplstates;

      assert(NULL != owner && NULL != client.playing)client.playing || owner == client.playingint ours = 0, theirs = 0;

  if (!client.playing) {
    return 0;
  }

  /* Sum up science */
  players_iterate(pplayer) {
    enum diplstate_type ds = pplayer_get_diplstate(client.playing, pplayer)->type;

    if (pplayer == client.playingclient.playing
  if (A_UNSET == get_player_research(client.playing)->researchingclient.playingclient.playing);
  static struct astring str = ASTRING_INIT;

  if (!researchclient.playingclient.playing, goal);
  int bulbs = total_bulbs_required_for_goal(client.playingclient.playing);
  static struct astring str = ASTRING_INIT;

  if (!research) {
    return "-";
  }

  astr_clear(&str);

  if (is_tech_a_req_for_goal(client.playingclient.playing) {
    astr_add_line(&str, _("Population: %s"),
		  population_to_text(civ_population(client.playing)));
  }
  astr_add_line(&str, _("Year: %s (T%d)"),
		textyear(game.info.year), game.info.turn);

  if (client.playing) {
    astr_add_line(&str, _("Gold: %d (%+d)"),
		  client.playing->economic.gold,
		  player_get_expected_income(client.playing));
    astr_add_line(&str, _("Tax: %d Lux: %d Sci: %d"),
		  client.playing->economic.tax,
		  client.playing->economic.luxury,
		  client.playingclient.playingclient.playing
  if (client.playing) {
    astr_add_line(&str, _("Gold: %d"),
		  client.playingclient.playingclient.playing->economic.tax,
		  client.playing->economic.luxury,
		  client.playing->economic.science);
    astr_add_line(&str, _("Researching %s: %s"),
		  advance_name_researching(client.playingclient.playing) {
    astr_add_line(&str, _("Government: %s"),
		  government_name_for_player(client.playing)Return the title textclient.playingclient.playingclient.playing
  if (client.playing) {
    struct player_research *research = get_player_research(client.playingclient.playing),
		    research->bulbs_researched,
		    total_bulbs_required(client.playing
  if (client.playing) {
    astr_add_line(&str, government_name_for_player(client.playing));client.playing
      || pplayer == client.playingclient.playingclient.playing),
		  nation_plural_for_player(client.playing));

    astr_add_line(&str, "%s %s: %s",
		  ruler_title_translation(client.playing),
		  player_name(client.playingENDREP
DELTA 4670 9812 512
SVN  Ö}×O„y …8  Y…7 ‚
†$ kˆ@  Š>‰3± ‚^“m€e ‚P—3³ •8š€| G  9± €1 G  `±  „¶² Gº± št¼	ivclient.h"
#include "clinet.h"
if (!can_client_issue_orders()) {
    return;
  }    government_name_for_player(client.playing),
	      get_player_bonus(client.playing, EFT_MAX_RATES  if (!can_client_issue_orders()) {
    return;
  }client.playing->economic.tax, 0,
		   client.playing->economic.luxury, 0,
		   client.playing->economic.science, 0);
}





XtSetSensitive(main_form, TRUE);
  XtDestroyWidget(rates_dialog_shell);

  dsend_packet_player_rates(&aconnection, rates_tax_value, rates_lux_value,
			    rates_sci_value);
}

if (!can_client_issue_orders()) {
    return;
  }
 = get_player_bonus(client.playing, EFT_MAX_RATESENDREP
DELTA 14336 78 234
SVN  ‚´G‚´E!W Á Ž ¬Á(Ž …[íI­ ´óPŽ Œb‚§eclient.playingclient.playingSSHIP_NONE != client.playing->spaceship.stateclient.playingENDREP
DELTA 13297 204712 3579
SVN  ‚Õ‚Ôu+ ‰d  ‚³;‰v „x‚½Z€g ‡U‚Ã% C‚Ê˜ ‚Ã. ˆ)‚Ì]client.playing, pimprove);
    can_eventually_build = can_player_build_improvement_later(client.playingclient.playing, client.playing, punittypENDREP
DELTA 14376 37645 287
SVN  ‚†G‚†3 ‹,  ´4‹>Ž †rÀŽ ¿EÇclient.playingclient.playingENDREP
DELTA 13297 228267 592
SVN  ‚‚d‚‚l)x ‰  t‰"‹ ï5Š
€A ;ú Ž ˆZûJŽ Ž„3 ð$’@ivclient.h"!client.playing || is_report_dialogs_frozen()) {
    return;
  }
client.playingclient.playingcity_name(pcity)ENDREP
DELTA 13567 20436 1692
SVN  Û?ÛkZ‚o ‡  ¢i‡+Ž lª#³ «>² ¬z€I ‹;¼V— ·È# ”ÿ? ÿ? —F”y© ±< GÎ? ‚`®?© žx±<Ÿ Š{ÐDclient.playing create_diplomacy_dialog(client.playing,
				      player_by_number(initiated_from) == client.playing =
	  gtk_menu_item_new_with_label(advance_name_for_player(client.playingname(city_list_ptrs[j])ayer_name(plr0)ayer_name(plr1)player_by_number(giver) == client.playingADVANCE, techplayer_by_number(giver) == client.playingclient.playing;
  struct playerENDREP
DELTA 14208 125635 10601
SVN  …Ö~…Ømƒ£x ¿w « O…‡s ›fÀfŽ „Ü[€ äáj‡ ¡)Å¾ Ü	çhµ |‚Ä(Ž ˆt‚Å3µ át‚Î^‰ …cƒ°R¾ ”3ƒ¶uŽ …<ƒË7¾ ‘0ƒÑ3Ž ‚ƒË7 „5ƒå	€A WƒêŽ ƒ)ƒëgŽ Žƒï€‚ Nƒÿ,€p ‚jƒÿ, ‚F„ƒ~› „¡„ H„‡}ƒ m„¡~ Z„–sŽ „0„§\€ƒ9 U„á= ‚	„¯i€ƒL U„á= T„¿?€C „º@€ ‚„º$€‚f ƒð=€ƒ ƒð=€ ‚„Å1€l %„º:€5 %„º:€ ‚„Í,€Q ‚„Ð €u %„º:€1 ›„ÕQ¦ Z„ñŽ „„ò~Ž {„ò~ †T„ø"€- z…€Ž e…( Š\…‚'š …	ˆ q…Ž"› º'…d€H v…ÊUŽ ‚J…ËZŽ 	…Î3Ž ‡3…ÏKstruct impr_type *pimprove, gpointer data);client.playingclient.playing || city_owner(pcity) == client.playing) {
    bool have_present_units = (unit_list_size(pcity->tile->units) > 0);
POINTERclient.playing && city_owner(pdialog->pcity) != client.playingclient.playing || city_owner(pcity) == client.playingclient.playingclient.playing || city_owner(pcity) != client.playing.buildingclient.playing && city_owner(pdialog->pcity) != client.playingclient.playingclient.playing && city_owner(pdialog->pcity) != client.playingclient.playingclient.playing) {
    city_number = city_list_size(client.playingclient.playingclient.playingGtkWidget *menu, *item;
  struct city_dialog *pdialog;
  struct city *pcity;
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t) data);

  if (NULL != punit
   && NULL != (pcity = game_find_city_by_number(punit->homecity))
   && NULL !=GtkWidget *menu, *item;
  struct city_dialog *pdialog;
  struct city *pcity;
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t) data);

  if (NULL != punit
   && NULL != (pcity = tile_city(punit->tile))
   && NULL !=present_unit_activate_close_Loaloaclient.playingcity_dialog *pdialog;
  struct city *pcity;
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t) data);

  if (NULL != punit
   && NULL != (pcity = tile_city(punit->tile))
   && NULL != (pdialog = get_city_dialog(pcity))
   && can_client_issue_orders()) {

    if (ev->button == 3) {
      set_unit_focus(punit);
    } else if (ev->button == 2) {
      set_unit_focus(punit);
      close_city_dialog(pdialog);
    }
  }city_dialog *pdialog;
  struct city *pcity;
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t) data);

  if (NULL != punit
   && NULL != (pcity = game_find_city_by_number(punit->homecity))
   && NULL != (pdialog = get_city_dialog(pcity))
   && can_client_issue_orders()) {

    if (ev->button == 3) {
      set_unit_focus(punit);
    } else if (ev->button == 2) {
      set_unit_focus(punit);
      close_city_dialog(pdialog);
    }
  }unit_center_callback(GtkWidget * w, gpointer data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    center_tile_mapcanvas(punit->tileunit_activate_callback(GtkWidget * w, gpointer data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    struct city *pcity =
      player_find_city_by_id(client.playing, punit->homecity);

    set_unit_focus(punit);
    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if (NULL != pdialog) {
	close_city_dialog(pdialog);
      }
    }present_unit_activate_close_callback(GtkWidget * w,
						 gpointer data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    struct city *pcity = tile_city(punit->tile);

    set_unit_focus(punit);
    if (NULL != pcity) {
      struct city_dialog *pdialog = get_city_dialog(pcity);

      if (NULL != pdialog) {
	close_city_dialog(pdialog);
      }
    }unit_load_callback(GtkWidget * w, gpointer data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    request_unit_unloadunit_sentry_callback(GtkWidget * w, gpointer data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    request_unit_sentryunit_fortify_callback(GtkWidget * w, gpointer data)
{
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL != punit) {
    request_unit_change_homecityunit_upgrade_callback(GtkWidget *w, gpointer data)
{
  struct unit_list *punits;
  struct unit *punit =
    player_find_unit_by_id(client.playing, (size_t)data);

  if (NULL == value <= client.playing->economic.goldclient.playingclient.playingstruct impr_type *pimprove, gpointer data)
{
  GtkWidget *shl;
  struct city_dialog *pdialog = (struct city_dialog *) data;
  pdialog->sell_id = improvement_number(pimprove)client.playingstruct impr_type *pimprovepimprovepimprove, data);
  } else {client.playing) {
    return;
  }
  size = city_list_size(client.playingclient.playingclient.playingclient.playingENDREP
DELTA 5946 0 2276
SVN  í…t¡ …[ €$ !‡€K På@ Žˆ|€d —c€L T¸ €p E@€v :©>€† #­ D®<€‡e ¯/€l °@€ƒe T¸  w³² …4µ
€„ T¸  ‡¼z€y ¨@Ä\assert.h>

#include "dataio.h"
#include "fcintl.h"
#include "hash.h"
#include "log.h"
#include "mem.h"
#include "packets.h"

#include "civclient.h"
#include "clinetenum attribute_serial {
  A_SERIAL_FAIL,
  A_SERIAL_OK,
  A_SERIAL_OLD,
};
enum attribute_serial serialize_hash( struct hash_table *hash,
					void **pdata, int *pdata_length ATTRIBUTE_LOG_LEVEL,
          "attribute.c serialize_hash()"
          " serialized %u entries in %u bytes",
          (unsigned int) entries,
          (unsigned int) total_length);
  return A_SERIAL_OK This data was serialized (above), sent as an opaque data packet to the 
  server, stored in a savegame, retrieved from the savegame, sent as an 
  opaque data packet back to the client, and now is ready to be restored.
  Check everything!
********/
static enum attribute_serial unserialize_hash( struct hash_table *hash,
					void *data, size_t data_length freelog(LOG_VERBOSE,
            "attribute.c unserialize_hash() preamble,"
            " uint32 %u != 0",
            (unsigned int) dummy);
    return A_SERIAL_OLD;
  }
  dio_get_uint8(&din, &dummy);
  if (dummy != 2) {
    freelog(LOG_VERBOSE,
            "attribute.c unserialize_hash() preamble,"
            " uint8 %u != 2 version",
            (unsigned int) dummy);
    return A_SERIAL_OLD;
  }
  dio_get_uint32(&din, &entries);
  dio_get_uint32(&din, &dummy);
  if (dummy != data_length) {
    freelog(LOG_VERBOSE,
            "attribute.c unserialize_hash() preamble,"
            " uint32 %u != %u data_length",
            (unsigned int) dummy,
            (unsigned int) data_length);
    return A_SERIAL_FAIL;
  }

  freelog(ATTRIBUTE_LOG_LEVEL,
          "attribute.c unserialize_hash()"
          " uint32 %u entries, %u data_length",
          (unsigned int) entries,
         if (din.too_short) {
      freelog(LOG_VERBOSE,
              "attribute.c unserialize_hash()"
              " uint32 value_length dio_input_too_short");
      free(pkey);
      return A_SERIAL_FAIL;
    }
    if (value_length > dio_input_remaining(&din)) {
      freelog(LOG_VERBOSE,
              "attribute.c unserialize_hash()"
              " uint32 %u value_length > %u input_remaining",
              (unsigned int) value_length,
              (unsigned int) dio_input_remaining(&din));
      free(pkey);
      return A_SERIAL_FAIL;
    }
    if (value_length < 16 /* including itself */) {
      freelog(LOG_VERBOSE,
              "attribute.c unserialize_hash()"
              " uint32 %u value_length < 16",
              (unsigned int) value_length);
      free(pkey);
      return A_SERIAL_FAIL;
    }
    freelog(ATTRIBUTE_LOG_LEVEL,
            "attribute.c unserialize_hash()"
            " uint32 %u value_length",
            (unsigned int) value_length);

    /* next 12 bytes */if (din.too_short) {
      freelog(LOG_VERBOSE,
              "attribute.c unserialize_hash()"
              " uint32 key dio_input_too_short");
      free(pkey);
      return A_SERIAL_FAIL;
    }
    pvalue = fc_malloc(value_length + 4f (!hash_insert(hash, pkey, pvalue)) {
      /* There are some untraceable attribute bugs caused by the CMA that
       * can cause this to happen.  I think the only safe thing to do is
       * to delete all attributes.  Another symptom of the bug is the
       * value_length (above) is set to a random value, which can also
       * cause a bug. */
      free(pvalue);
      free(pkey);
      hash_delete_all_entries(hash);
      return A_SERIAL_FAIL;
    }
  }
  return A_SERIAL_OKclient.playing;

  if (!pplayer) {
    return;
  }client.playing;

  if (!pplayer) {
    return;
  }

  assert(attribute_hash != NULL);

  switch (unserialize_hash(attribute_hash,
                           pplayer->attribute_block.data,
                           pplayer->attribute_block.length)) {
  case A_SERIAL_FAIL:
    freelog(LOG_ERROR, _("There has been a CMA error.  "
                         "Your citizen governor settings may be broken."));
    break;
  case A_SERIAL_OLD:
    freelog(LOG_NORMAL, _("Old attributes detected and removed."));
    break;
  default:
    break;
  }key;
    void *old_value = hash_delete_entry_full(attribute_hash, pkey, &old_key);

    free(old_value);
    free(old_keyENDREP
DELTA 14208 125279 326
SVN  ¾½s
 µ/ ˜ ˆ,µ\player != client.playingENDREP
DELTA 14172 24470 2514
SVN  ‚ín‚î4r ëc ª ÆVìŽ ²h “w³yŽ „$ÇŽ á:Ì2‡ ‹k‚­l‡ ´‚¹Wcity_name(phomecity), city_name(pdestcity)client.playingcity_name(pcity)client.playingclient.playingnation_nation_ENDREP
DELTA 13133 97755 13180
SVN  ƒ„qƒ„Z‡ Ãg … ˆbÃm ŠÌZ€L …×>£ •LÜi„ ³ò;£ …Z¥{· w¯b ¥­‡  Ò‡ œ	â9€@ O¾? žUÿ>œ =‚žAŽ z‚ €| V‚¢€; ‚E‚¥€; ª6‚© „$‚ÓL …O‚Ø€E ¦e‚ÞDEBUGcity_name(pcity)TEST, "show_city_desc(%s) pcx=%d->%d (%d) pcy=%d->%d (%d)", city_name(pcity)city_owner(pcity) == client.playingTESTunit_owner(aunit) == client.playingcity(ptile)) {
    struct city *pcity=tile_city(ptile);VERBOSEVERBOSEVERBOSE, "action_callback() action '%s' requested", action);
  }C_S_RUNNING > client_state()client.playingclient.playing);
  } else if (strcmp(id, "population") == 0) {
      return population_to_text(civ_population(client.playingclient.playing)),
	      textyear(game.info.year),
	      client.playing->economic.gold,
	      client.playing->economic.tax,
	      client.playing->economic.luxury,
	      client.playingclient.playing)),
	      textyear(game.info.year),
	      client.playing->economic.gold,
	      client.playing->economic.tax,
	      client.playing->economic.luxury,
	      client.playingcity_production_buy_gold_cost(pcity) <= client.playing->economic.goldENDREP
DELTA 4313 165730 2800
SVN  ³	ßdfÏJ …8  Y…7§ z†p€s hˆ1€ƒ C €„ A „ I‹@¼ A „ I‹@º A „ D‹@€h A  w‹;€D A „ D‹@€B A „ D‹@€¥
 G € B‹@€›	
#include <gtk/gtk.h>

#include "fcintlivclient.h"
#include "clinet.h"
#include "gui_main.h"
#include "gui_stuff.h"
#include "mapview.h"
#include "optionsconst char *table_text[] = {
  N_("Ruler:"),
  N_("Government:"),
  N_("Capital:"),
  N_("Gold:"),
  NULL,
  N_("Tax:"),
  N_("Science:"),
  N_("Luxury:"),
  NULL,
  N_("Researching:")
};

enum table_label {
  LABEL_RULER,
  LABEL_GOVERNMENT,
  LABEL_CAPITAL,
  LABEL_GOLD,
  LABEL_SEP1,
  LABEL_TAX,
  LABEL_SCIENCE,
  LABEL_LUXURY,
  LABEL_SEP2,
  LABEL_RESEARCHING,
  LABEL_LAST
};
/
struct intel_dialog {
  struct player *pplayer;
  GtkWidget *shell;

  GtkTreeStore *diplstates;
  GtkListStore *techs;
  GtkWidget *table_labels[LABEL_LAST];
};

#define SPECLIST_TAG dialog
#define SPECLIST_TYPE struct intel_dialog
#include "speclist.h"

#define dialog_list_iterate(dialoglist, pdialog) \
    TYPED_LIST_ITERATE(struct intel_dialog, dialoglist, pdialog)
#define dialog_list_iterate_end  LIST_ITERATE_END

static struct dialog_list *dialog_list;
static struct intel_dialog *create_intel_dialog(struct player *p);


...intel_dialog_init()
{
  dialog_list = dialog_list_new();
}


...intel_dialog_done()
{
  dialog_list_free(dialog_list);
}


...static struct intel_dialog *get_intel_dialog(struct player *pplayer)
{
  dialog_list_iterate(dialog_list, pdialog) {
    if (pdialog->pplayer == pplayer) {
      return pdialog;
    }
  } dialog_list_iterate_end;

  return NULL;
}

struct intel_dialog *pdialog;

  if (!(pdialog = get_intel_dialog(p))) {
    pdialog = create_intel_dialog(p);
  }

  update_intel_dialog(p);

  gtk_window_present(GTK_WINDOW(pdialog->shell));
}


...static void intel_destroy_callback(GtkWidget *w, gpointer data)
{
  struct intel_dialog *pdialog = (struct intel_dialog *)data;

  dialog_list_unlink(dialog_list, pdialog);

  free(pdialog);
}


...static struct intel_dialog *create_intel_dialog(struct player *p)
{
  struct intel_dialog *pdialog;

  GtkWidget *shell, *notebook, *label, *sw, *view, *table, *alignment;
  GtkCellRenderer *rend;
  GtkTreeViewColumn *col;

  int i;
 
  pdialog = fc_malloc(sizeof(*pdialog));
  pdialog->pplayer = p;
 
  shell = gtk_dialog_new_with_buttons(NULL,
      NULL,
      0,
      GTK_STOCK_CLOSE,
      GTK_RESPONSE_CLOSE,
      NULL);
  pdialog->shell = shell;
  gtk_window_set_default_size(GTK_WINDOW(shell), 350, 350);
  setup_dialog(shell, toplevel);
  gtk_dialog_set_default_response(GTK_DIALOG(shell), GTK_RESPONSE_CLOSE);

  g_signal_connect(shell, "destroy",
                   G_CALLBACK(intel_destroy_callback), pdialog);
  g_signal_connect(shell, "response",
                   G_CALLBACK(gtk_widget_destroy), NULL);

  notebook = gtk_notebook_new();
  gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_BOTTOM);
  gtk_container_add(GTK_CONTAINER(GTK_DIALOG(shell)->vbox), notebook);
 
  /* overview tab. */
  table = gtk_table_new(ARRAY_SIZE(table_text), 2, FALSE);

  gtk_table_set_row_spacings(GTK_TABLE(table), 2);
  gtk_table_set_col_spacings(GTK_TABLE(table), 12);

  alignment = gtk_alignment_new(0.0, 0.0, 0.0, 0.0);
  gtk_container_set_border_width(GTK_CONTAINER(alignment), 6);
  gtk_container_add(GTK_CONTAINER(alignment), table);

  label = gtk_label_new_with_mnemonic(_("_Overview"));
  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), alignment, label);

  for (i = 0; i < ARRAY_SIZE(table_text); i++) {
    if (table_text[i]) {
      label = gtk_label_new(_(table_text[i]));
      gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
      gtk_table_attach(GTK_TABLE(table), label,
	  0, 1, i, i+1, GTK_FILL, GTK_FILL|GTK_EXPAND, 0, 0);

      label = gtk_label_new(NULL);
      pdialog->table_labels[i] = label;
      gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
      gtk_table_attach(GTK_TABLE(table), label,
	  1, 2, i, i+1, GTK_FILL, GTK_FILL|GTK_EXPAND, 0, 0);
    } else {
      pdialog->table_labels[i] = NULL;
      gtk_table_set_row_spacing(GTK_TABLE(table), i, 12);
    }
  }

  /* diplomacy tab. */
  pdialog->diplstates = gtk_tree_store_new(1, G_TYPE_STRING);

  view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(pdialog->diplstates));
  g_object_unref(pdialog->diplstates);
  gtk_container_set_border_width(GTK_CONTAINER(view), 6);
  gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(view), FALSE);

  rend = gtk_cell_renderer_text_new();
  col = gtk_tree_view_column_new_with_attributes(NULL, rend,
    "text", 0, NULL);
  gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);

  gtk_tree_view_expand_all(GTK_TREE_VIEW(view));

  sw = gtk_scrolled_window_new(NULL,NULL);
  gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
				      GTK_SHADOW_ETCHED_IN);
  gtk_container_add(GTK_CONTAINER(sw), view);

  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
	GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

  alignment = gtk_alignment_new(0.0, 0.0, 1.0, 1.0);
  gtk_container_set_border_width(GTK_CONTAINER(alignment), 6);
  gtk_container_add(GTK_CONTAINER(alignment), sw);

  label = gtk_label_new_with_mnemonic(_("_Diplomacy"));
  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), alignment, label);

  /* techs tab. */
  pdialog->techs = gtk_list_store_new(2, G_TYPE_BOOLEAN, G_TYPE_STRING);
  gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(pdialog->techs),
      1, GTK_SORT_ASCENDING);

  view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(pdialog->techs));
  g_object_unref(pdialog->techs);
  gtk_container_set_border_width(GTK_CONTAINER(view), 6);
  gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(view), FALSE);

  rend = gtk_cell_renderer_toggle_new();
  col = gtk_tree_view_column_new_with_attributes(NULL, rend,
    "active", 0, NULL);
  gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);

  rend = gtk_cell_renderer_text_new();
  col = gtk_tree_view_column_new_with_attributes(NULL, rend,
    "text", 1, NULL);
  gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);

  sw = gtk_scrolled_window_new(NULL,NULL);
  gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
				      GTK_SHADOW_ETCHED_IN);
  gtk_container_add(GTK_CONTAINER(sw), view);

  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
	GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

  alignment = gtk_alignment_new(0.0, 0.0, 1.0, 1.0);
  gtk_container_set_border_width(GTK_CONTAINER(alignment), 6);
  gtk_container_add(GTK_CONTAINER(alignment), sw);

  label = gtk_label_new_with_mnemonic(_("_Techs"));
  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), alignment, label);

  gtk_widget_show_all(GTK_DIALOG(shell)->vbox);

  dialog_list_prepend(dialog_list, pdialog);

  return pdialog;
}

******
  Update the intelligence dialog for the given player.  This is called by
  the core client code when that player's information changes.***********/
void update_intel_dialog(struct player *p)
{
  struct intel_dialog *pdialog = get_intel_dialog(p);

  if (pdialog) {
    GtkTreeIter diplstates[DS_LAST];
    char buf[64];
    int i;

    /* window title. */
    my_snprintf(buf, sizeof(buf),
	_("Foreign Intelligence: %s Empire"),
	nation_adjective_for_player(p));
    gtk_window_set_title(GTK_WINDOW(pdialog->shell), buf);

    /* diplomacy tab. */
    gtk_tree_store_clear(pdialog->diplstates);

    for (i = 0; i < ARRAY_SIZE(diplstates); i++) {
      GtkTreeIter it;
      GValue v = { 0, };

      gtk_tree_store_append(pdialog->diplstates, &it, NULL);
      g_value_init(&v, G_TYPE_STRING);
      g_value_set_static_string(&v, diplstate_text(i));
      gtk_tree_store_set_value(pdialog->diplstates, &it, 0, &v);
      g_value_unset(&v);
      diplstates[i] = it;
    }

    players_iterate(other) {
      const struct player_diplstate *state;
      GtkTreeIter it;
      GValue v = { 0, };

      if (other == p || !other->is_alive) {
	continue;
      }
      state = pplayer_get_diplstate(p, other);
      gtk_tree_store_append(pdialog->diplstates, &it,
			    &diplstates[state->type]);
      g_value_init(&v, G_TYPE_STRING);
      g_value_set_static_string(&v, player_name(other));
      gtk_tree_store_set_value(pdialog->diplstates, &it, 0, &v);
      g_value_unset(&v);
    } players_iterate_end;

    /* techs tab. */
    gtk_list_store_clear(pdialog->techs);

    advance_index_iterate(A_FIRST, i) {
      if(player_invention_state(p, i)==TECH_KNOWN) {
	GtkTreeIter it;

	gtk_list_store_append(pdialog->techs, &it);

	gtk_list_store_set(pdialog->techs, &it,
			   0, (TECH_KNOWN != player_invention_state(client.playing, i)),
			   1, advance_name_for_player(p, i),
			   -1);
      }
    } advance_index_iterate_end;

    /* table labels. */
    for (i = 0; i < ARRAY_SIZE(pdialog->table_labels); i++) {
      if (pdialog->table_labels[i]) {
	struct city *pcity;

	switch (i) {
	  case LABEL_RULER:
	    my_snprintf(buf, sizeof(buf), "%s %s", 
		ruler_title_translation(p),
		player_name(p));
	    break;
	  case LABEL_GOVERNMENT:
	    sz_strlcpy(buf, government_name_for_player(p));
	    break;
	  case LABEL_CAPITAL:
	    pcity = find_palace(p);
	    /* TRANS: "unknown" location */
	    sz_strlcpy(buf, (!pcity) ? _("(unknown)") : city_name(pcity));
	    break;
	  case LABEL_GOLD:
	    my_snprintf(buf, sizeof(buf), "%d", p->economic.gold);
	    break;
	  case LABEL_TAX:
	    my_snprintf(buf, sizeof(buf), "%d%%", p->economic.tax);
	    break;
	  case LABEL_SCIENCE:
	    my_snprintf(buf, sizeof(buf), "%d%%", p->economic.science);
	    break;
	  case LABEL_LUXURY:
	    my_snprintf(buf, sizeof(buf), "%d%%", p->economic.luxury);
	    break;
	  case LABEL_RESEARCHING: {
	    struct player_research* research = get_player_research(p);
	    switch (research->researching) {
	    case A_UNKNOWN:
	      /* TRANS: "Unknown" advance/technology */
	      my_snprintf(buf, sizeof(buf), _("(Unknown)"));
	      break;
	    case A_UNSET:
	      /* TRANS: missing value */
	      my_snprintf(buf, sizeof(buf), _("(none)"));
	      break;
	    default:
	      my_snprintf(buf, sizeof(buf), "%s(%d/%d)",
		  advance_name_researching(p),
		  research->bulbs_researched, total_bulbs_required(p));
	      break;
	    };
	    break;
	  }
	  default:
	    buf[0] = '\0';
	    break;
	}

	if (buf[0] != '\0') {
	  gtk_label_set_text(GTK_LABEL(pdialog->table_labels[i]), buf);
	}
      }
    }
  }
}

ENDREP
DELTA 14398 14958 14835
SVN  ¬®f,‚" Ž › PÐ@ qŽq€\ G ½ PÐ@€K dÁ@ Â£ PÐ@ ØÔ), checking for city centeris_city_center(pcity, ptile)) {
    return pcity;
  }
  return NULL;
}

#ifndef tile_worked
******
  Return any city working the specified tile (or NULL)struct city *tile_worked(const struct tile *ptile)
{
  return ptile->workedhas known data about its own playerENDREP
DELTA 14272 268 477
SVN  ‚Í-‚Í+ í
 Ž ÚaíŽ …$‚È	client.playingclient.playingENDREP
DELTA 14208 138415 378
SVN  ÒÒZ‚_ ˆW ‹ ŽˆKƒ „o–P´ ›qŽ ‚7œŽ ãŸEŽ …u‚d€Y „6‰5Ž ‹-zƒ ƒ!™'³ ]œ{º ŸŽ ‚l .Ž ®[£)ivclient.h"
   (punit->bribe_cost <= client.playing->economic.goldclient.playingclient.playingclient.playing (game_find_unit_by_number(diplomat_id)
   && game_find_city_by_number(diplomat_target_idclient.playing
  INCITE_IMPOSSIBLE_COST == pcity->incite_revolt_costpcity->incite_revolt_cost <= client.playing->economic.goldclient.playingclient.playingENDREP
DELTA 14415 61967 3569
SVN  †™4†œp‚3š Ãf Ž ŠÃuŽ .Î€@ ´OërŽ ‚ PŽ M¢nŽ ‚(²JŽ ‚µ€U ·Y½ ˆ7¹€F nër ŸÂv€ Œ+ã° ïzŽ ñ €‚} ’õ6§ œu‚‡b€‚+ Š‚¦qµ Ž{‚±+Ž „‚À5Ž ƒ&‚Äb€\ “"‚Èg€[ žC‚Üg€\ ƒ$‚ü‘ Š_‚ÿ)€k AƒŠu€T ‡[ƒœ€} ‹#ƒ¤cµ iƒ°<¡ ƒxƒ±HŽ ƒqƒµOŽ Ô]ƒ¹OŽ ‘3„Ž;€3 v„¡
€x n„¢hœ µ„£j¡ ƒ
…Ù"¡ ‚J…ÜOŽ ƒl…ß(€P ‚]…ãe€ƒ †x…çY€X ª	…ï+client.playingclient.playing            "handle_city_info() bad player number %d.",
        client.playingclient.playingclient.playingclient.playinglient.playing
      && !client.playing->ai.control
      && can_client_issue_orders()popup || can_player_see_city_internals(client.playing, pcity)            "handle_city_short_info() bad player number %d.",
        client.playing) {
    turn_gold_difference =
      client.playing->economic.gold - last_turn_gold_amount;
    last_turn_gold_amount = client.playingclient.playing && is_player_phase(client.playingclient.playing (client.playing->ai.control && !ai_manual_turn_done) {
      user_ended_turn();
    }

    player_set_unit_focus_status(client.playing);

    city_list_iterate(client.playing->cities, pcity) {
      pcity->client.colored = FALSE;
    } city_list_iterate_end;

    unit_list_iterate(client.playing->units, punit) {
      punit->client.colored = FALSE;
    } unit_list_iterate_end;
client.playing
      || !client.playing          && client.playing
          && !client.playing->ai.control
          && unit_owner(punit) == client.playing
          && punit->activity == ACTIVITY_SENTRY
          && packet_unit->activity == ACTIVITY_IDLE
          && !unit_is_in_focus(punit)
          && is_player_phase(client.playingclient.playing || unit_owner(punit) == client.playingclient.playingclient.playingclient.playing
	   && !client.playing->ai.control
	   && unit_owner(punit) == client.playingclient.playing
      && !client.playing->ai.control
      && is_player_phase(client.playing =
    government_by_number(game.info.government_when_anarchy_id);
  client.playing = valid_client.playing); lient.playing
      && can_client_issue_orders()
      && government != government_of_player(client.playingclient.playing
      && DS_ARMISTICE != pplayer->diplstates[player_index(client.playing)].type
      && DS_ARMISTICE == pinfo->diplstates[player_index(client.playing)].type) {
    unit_list_iterate(client.playing (pplayer == client.playing)  {
      my_snprintf(msg, sizeof(msg), _("AI Mode is now %s."),
                  client.playingpplayer == client.playing && can_client_change_view()client.playing && !client.playingclient.playingclient.playingclient.playingNULL != client.playing) {
    BV_CLR(ptile->tile_known, player_index(client.playing));
    vision_layer_iterate(v) {
      BV_CLR(ptile->tile_seen[v], player_index(client.playing)player_index(client.playing));
      vision_layer_iterate(v) {
	BV_SET(ptile->tile_seen[v], player_index(client.playing)player_index(client.playing)client.playing && !client.playingclient.playing && !client.playingclient.playing player_find_unit_by_id(client.playing, diplomat_id);

  if (NULL == pdiplomat) {
    freelog(LOG_ERROR,
	    "handle_unit_diplomat_popup_dialog() bad diplomat %d.",
	    diplomat_id);
    return;
  }

  if (city *pcity = game_find_city_by_number(city_id);
  struct unit *pdiplomat = player_find_unit_by_id(client.playing, diplomat_id);

  if (NULL == pdiplomat) {
    freelog(LOG_ERROR,
	    "handle_city_sabotage_list() bad diplomat %d.",
	    diplomat_id);
    return;
  }

  if (NULL == pcity) {
    freelog(LOG_ERROR,
	    "handle_city_sabotage_list() bad city %d.",
	    city_id);
    return;
  }

  if (client.playing) {
    return;
  }
  generic_handle_player_attribute_chunk(client.playingENDREP
DELTA 14172 45870 239
SVN  ÅkÅP] ‡V  s‡h€k ‚+˜K¿ R›7³ ¨->client.playing) {
    gtk_label_set_text(GTK_LABEL(label),
		       nation_plural_for_player(client.playingclient.playing) {
    int d = 0;

    for (; d < client.playingclient.playing->economic.science
		+ client.playingENDREP
DELTA 5500 240123 1561
SVN  –(ƒ°%ƒ§h …8  G  :† €G @…@ Dˆ?€ƒ§!Å‚ Bursig
    email                : RafaÅ‚ Bursig <bursig@poczta.fm>
 assert.h>
#include <stdlib.h>

#include "SDL.h"

/* utility */
#include "fcintl.h"

/* common */
#include "game.h"
#include "unit.h"

/* client */
#include "civclient.h"
#include "climisc.h"

/* gui-sdl */
#include "citydlg.h"
#include "colors.h"
#include "graphics.h"
#include "gui_iconv.h"
#include "gui_id.h"
#include "gui_main.h"
#include "gui_tilespec.h"
#include "helpdlg.h"
#include "mapview.h"
#include "sprite.h"
#include "themespec.h"
#include "widget.h"

#include "wldlg.h"

#define TARGETS_COL		4
#define TARGETS_ROW		4

struct EDITOR {
  struct widget *pBeginWidgetList;
  struct widget *pEndWidgetList;/* window */
    
  struct ADVANCED_DLG *pTargets;
  struct ADVANCED_DLG *pWork;
  struct ADVANCED_DLG *pGlobal;
    
  struct city *pCity;
  struct worklist *pOrginal_WorkList;
  struct worklist *pCopy_WorkList;
  
  /* shortcuts  */
  struct widget *pDock;
  struct widget *pWorkList_Counter;
  
  struct widget *pProduction_Name;
  struct widget *pProduction_Progres;
    
  int stock;
  struct universal currently_building;
  
} *pEditor = NULL;


static int worklist_editor_item_callback(struct widget *pWidget);
static SDL_Surface * get_progress_icon(int stock, int cost, int *progress);
static const char * get_production_name(struct city *pCity,
					struct universal prod, int *cost);
static void refresh_worklist_count_label(void);
static void refresh_production_label(int stock);

/* =========================================================== */

/* Worklist Editor Window Callback */
static int window_worklist_editor_callback(struct widget *pWidget)
{
  return -1;
}

/* Popdwon Worklist Editor */
static int popdown_worklist_editor_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    popdown_worklist_editor();
  }
  return -1;
}

/*
 * Commit changes to city/global worklist
 * In City Mode Remove Double entry of Imprv/Woder Targets from list.
 */
static int ok_worklist_editor_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    int i, j;
    struct city *pCity = pEditor->pCity;
    bool same_prod = TRUE;
    
    /* remove duplicate entry of impv./wonder target from worklist */
    for(i = 0; i < worklist_length(pEditor->pCopy_WorkList); i++) {
  
      if(VUT_IMPROVEMENT == pEditor->pCopy_WorkList->entries[i].kind) {
        for(j = i + 1; j < worklist_length(pEditor->pCopy_WorkList); j++) {
          if (VUT_IMPROVEMENT == pEditor->pCopy_WorkList->entries[j].kind
           && pEditor->pCopy_WorkList->entries[i].value.building ==
              pEditor->pCopy_WorkList->entries[j].value.building) {
            worklist_remove(pEditor->pCopy_WorkList, j);
          }
        }
      }
    }
    
    if(pCity) {
      /* remove duplicate entry of currently building impv./wonder from worklist */
      if(VUT_IMPROVEMENT == pEditor->currently_building.kind) {
        for(i = 0; i < worklist_length(pEditor->pCopy_WorkList); i++) {
          if (VUT_IMPROVEMENT == pEditor->pCopy_WorkList->entries[i].kind
           && pEditor->pCopy_WorkList->entries[i].value.building ==
              pEditor->currently_building.value.building) {
              worklist_remove(pEditor->pCopy_WorkList, i);
          }
        }
      }
      
      /* change production */
      if(!are_universals_equal(&pCity->production, &pEditor->currently_building)) {
        city_change_production(pCity, pEditor->currently_building);
        same_prod = FALSE;
      }
      
      /* commit new city worklist */
      city_set_worklist(pCity, pEditor->pCopy_WorkList);
    } else {
      /* commit global worklist */
      copy_worklist(pEditor->pOrginal_WorkList, pEditor->pCopy_WorkList);
      update_worklist_report_dialog();
    }  
    
    /* popdown dialog */
    popdown_worklist_editor();
  }
  
  return -1;
}

/*
 * Rename Global Worklist
 */
static int rename_worklist_editor_callback(struct widget *pWidget)
{
  if (Main.event.button.button == SDL_BUTTON_LEFT) {
    if(pWidget->string16->text) {
      char *pText = convert_to_chars(pWidget->string16->text);
      my_snprintf(pEditor->pCopy_WorkList->name, MAX_LEN_NAME, "%s", pText);
      FC_FREE(pText);
    } else {
      /* empty input -> restore previous content */
      copy_chars_to_string16(pWidget->string16, pEditor->pCopy_WorkList->name);
      widget_redraw(pWidget);
      widget_mark_dirty(pWidget);
      flush_dirty();
    }
  }  
  return -1;
}

/* ====================================================================== */

/*
 * Add target to worklist.
 */
static void add_target_to_worklist(struct widget *pTarget)
{
  struct widget *pBuf = NULL, *pDock = NULL;
  SDL_String16 *pStr = NULL;
  int i;
  struct universal prod = cid_decode(MAX_ID - pTarget->ID);
  
  set_wstate(pTarget, FC_WS_SELLECTED);
  widget_redraw(pTarget);
  widget_flush(pTarget);
  
  /* Deny adding currently building Impr/Wonder Target */ 
  if (pEditor->pCity
      && VUT_IMPROVEMENT == prod.kind
      && are_universals_equal(&prod, &pEditor->currently_building)) {
    return;
  }
  
  if (worklist_length(pEditor->pCopy_WorkList) >= MAX_LEN_WORKLIST - 1) {
    return;   
    }
    
  for(i = 0; i < worklist_length(pEditor->pCopy_WorkList); i++) {
    if (VUT_IMPROVEMENT == prod.kind
     && are_universals_equal(&prod, &pEditor->pCopy_WorkList->entries[i])) {
    return;
    }
  }
    
  worklist_append(pEditor->pCopy_WorkList, prod);
  
  /* create widget entry */
  if(VUT_UTYPE == prod.kind) {
    pStr = create_str16_from_char(utype_name_translation(prod.value.utype), adj_font(10));
  } else {
    pStr = create_str16_from_char(city_improvement_name_translation(pEditor->pCity, prod.value.building),
                                                                adj_font(10));
  }
  
  pStr->style |= SF_CENTER;
  pBuf = create_iconlabel(NULL, pTarget->dst, pStr,
				(WF_RESTORE_BACKGROUND|WF_FREE_DATA));
    
  set_wstate(pBuf, FC_WS_NORMAL);
  pBuf->action = worklist_editor_item_callback;
        
  pBuf->data.ptr = fc_calloc(1, sizeof(int));
  *((int *)pBuf->data.ptr) = worklist_length(pEditor->pCopy_WorkList) - 1;
    
  pBuf->ID = MAX_ID - cid_encode(prod);
  
  if(pEditor->pWork->pBeginActiveWidgetList) {
    pDock = pEditor->pWork->pBeginActiveWidgetList;
  } else {
    pDock = pEditor->pDock;
  }
  
/* FIXME */  
#if 0
  if (worklist_length(pEditor->pCopy_WorkList) > pEditor->pWork->pScroll->active + 1) {

    setup_vertical_widgets_position(1,
      pEditor->pEndWidgetList->area.x + adj_size(2),
      get_widget_pointer_form_main_list(ID_WINDOW)->area.y + adj_size(152) +
	pEditor->pWork->pScroll->pUp_Left_Button->size.h + 1,
	adj_size(126), 0, pEditor->pWork->pBeginWidgetList,
		  pEditor->pWork->pEndWidgetList);
   
    setup_vertical_scrollbar_area(pEditor->pWork->pScroll,
	pEditor->pEndWidgetList->area.x + adj_size(2),
    	get_widget_pointer_form_main_list(ID_WINDOW)->area.y + adj_size(152),
    	adj_size(225), FALSE);
    
    show_scrollbar(pEditor->pWork->pScroll);    
  }
#endif
  
  add_widget_to_vertical_scroll_widget_list(pEditor->pWork, pBuf,
    pDock, FALSE,
    pEditor->pEndWidgetList->area.x + adj_size(2),
    pEditor->pEndWidgetList->area.y + adj_size(152));
  
  pBuf->size.w = adj_size(126);
  
  refresh_worklist_count_label();
  redraw_group(pEditor->pWork->pBeginWidgetList,
			  pEditor->pWork->pEndWidgetList, TRUE);
  flush_dirty();
}

/*
 * Find if two targets are the same class (unit, imprv. , wonder).
 * This is needed by calculation of change production shields penalty.
 * [similar to are_universals_equal()]
 */
static bool are_the_same_class(const struct universal one,
			       const struct universal two)
{
  if (one.kind != two.kind) {
    return FALSE;
  }
  if (VUT_UTYPE == one.kind) {
    return one.value.utype == two.value.utype;
  }
  if (VUT_IMPROVEMENT == one.kind) {
    if (is_wonder(one.value.building)) {
      return is_wonder(two.value.building);
    }
    return (one.value.building == two.value.building);
  }
  return FALSE;
}

/*
 * Change production in editor shell, callculate production shields penalty and
 * refresh production progress label
 */
static void change_production(struct universal prod)
{
    
  if(!are_the_same_class(pEditor->currently_building, prod)) {
    if(pEditor->stock != pEditor->pCity->shield_stock) {
      if(are_the_same_class(pEditor->pCity->production, prod)) {
	pEditor->stock = pEditor->pCity->shield_stock;
      }
    } else {
      pEditor->stock =
	  city_change_production_penalty(pEditor->pCity, prod);
    }	  	  
  }
      
  pEditor->currently_building = prod;
  refresh_production_label(pEditor->stock);

  return;
}

/*
 * Change production of city but only in Editor.
 * You must commit this changes by exit editor via OK button (commit function).
 *
 * This function don't remove double imprv./wonder target entry from worklist
 * and allow more entry of such target (In Production and worklist - this is
 * fixed by commit function).
 */
static void add_target_to_production(struct widget *pTarget)
{
  int dummy;
  struct universal prod;
  assert(pTarget != NULL);
  
  /* redraw Target Icon */
  set_wstate(pTarget, FC_WS_SELLECTED);
  widget_redraw(pTarget);
  widget_flush(pTarget);

  prod = cid_decode(MAX_ID - pTarget->ID);
  
  /* check if we change to the same target */
  if(are_universals_equal(&prod, &pEditor->currently_building)) {
    /* comit changes and exit - double click detection */
    ok_worklist_editor_callback(NULL);
    return;
  }
  
  change_production(prod);
  
  /* change Production Text Label in Worklist Widget list */
  copy_chars_to_string16(pEditor->pWork->pEndActiveWidgetList->string16,
  	get_production_name(pEditor->pCity, prod, &dummy));
  
  pEditor->pWork->pEndActiveWidgetList->ID = MAX_ID - cid_encode(prod);
    
  widget_redraw(pEditor->pWork->pEndActiveWidgetList);
  widget_mark_dirty(pEditor->pWork->pEndActiveWidgetList);
  
  flush_dirty();    
  
}

/* Get Help Info about target */
static void get_target_help_data(struct widget *pTarget)
{
  struct universal prod;

  assert(pTarget != NULL);
  
  /* redraw Target Icon */
  set_wstate(pTarget, FC_WS_SELLECTED);
  widget_redraw(pTarget);
  /*widget_flush(pTarget);*/
  
  prod = cid_decode(MAX_ID - pTarget->ID);

  if (VUT_UTYPE == prod.kind)
  {
    popup_unit_info(utype_number(prod.value.utype));
  } else {
    popup_impr_info(improvement_number(prod.value.building));
  }
  
}


/*
 * Targets callback
 * left mouse button -> In city mode change production to target.
			In global mode add target to worklist.
 * middle mouse button -> get target "help"
 * right mouse button -> add target to worklist.
 */
static int worklist_editor_targets_callback(struct widget *pWidget)
{
  switch(Main.event.button.button) {
    case SDL_BUTTON_LEFT:
      if(pEditor->pCity) {
        add_target_to_production(pWidget);
      } else {
	add_target_to_worklist(pWidget);
      }
      break;
    case SDL_BUTTON_MIDDLE:
      get_target_help_data(pWidget);
      break;
    case SDL_BUTTON_RIGHT:
      add_target_to_worklist(pWidget);
      break;
    default:
    	;/* do nothing */
    break;
  }
  return -1;
}

/* ====================================================================== */

/*
 * Remove element from worklist or
 * remove currently building imprv/unit and change production to first worklist
 * element (or Capitalizations if worklist is empty)
 */
static void remove_item_from_worklist(struct widget *pItem)
{
  /* only one item (production) is left */
  if (worklist_is_empty(pEditor->pCopy_WorkList))
    return;
        
  if(pItem->data.ptr) {
    /* correct "data" widget fiels */
    struct widget *pBuf = pItem;
    if(pBuf != pEditor->pWork->pBeginActiveWidgetList) {
      do{
	pBuf = pBuf->prev;
	*((int *)pBuf->data.ptr) = *((int *)pBuf->data.ptr) - 1;
      } while(pBuf != pEditor->pWork->pBeginActiveWidgetList);
    }
    
    /* remove element from worklist */
    worklist_remove(pEditor->pCopy_WorkList, *((int *)pItem->data.ptr));
    
    /* remove widget from widget list */
    del_widget_from_vertical_scroll_widget_list(pEditor->pWork, pItem);
  } else {
    /* change productions to first worklist element */
    struct widget *pBuf = pItem->prev;
    change_production(pEditor->pCopy_WorkList->entries[0]);
    worklist_advance(pEditor->pCopy_WorkList);
    del_widget_from_vertical_scroll_widget_list(pEditor->pWork, pItem);
    FC_FREE(pBuf->data.ptr);
    if(pBuf != pEditor->pWork->pBeginActiveWidgetList) {
      do{
        pBuf = pBuf->prev;
        *((int *)pBuf->data.ptr) = *((int *)pBuf->data.ptr) - 1;
      } while(pBuf != pEditor->pWork->pBeginActiveWidgetList);
    }
  }

/* FIXME: fix scrollbar code */
#if 0    
  /* worklist_length(pEditor->pCopy_WorkList): without production */
  if (worklist_length(pEditor->pCopy_WorkList) <= pEditor->pWork->pScroll->active + 1) {

    setup_vertical_widgets_position(1,
      pEditor->pEndWidgetList->area.x + adj_size(2),
      get_widget_pointer_form_main_list(ID_WINDOW)->area.y + adj_size(152),
	adj_size(126), 0, pEditor->pWork->pBeginWidgetList,
		  pEditor->pWork->pEndWidgetList);
#if 0   
    setup_vertical_scrollbar_area(pEditor->pWork->pScroll,
	pEditor->pEndWidgetList->area.x + adj_size(2),
    	get_widget_pointer_form_main_list(ID_WINDOW)->area.y + adj_size(152),
    	adj_size(225), FALSE);*/
#endif    
    hide_scrollbar(pEditor->pWork->pScroll);    
  }
#endif
    
  refresh_worklist_count_label();
  redraw_group(pEditor->pWork->pBeginWidgetList,
			  pEditor->pWork->pEndWidgetList, TRUE);
  flush_dirty();
}

/*
 * Swap worklist entries DOWN.
 * Fuction swap current element with next element of worklist.
 *
 * If pItem is last widget or there is only one widget on widgets list
 * fuction remove this widget from widget list and target from worklist
 *
 * In City mode, when pItem is first worklist element, function make
 * change production (currently building is moved to first element of worklist
 * and first element of worklist is build).
 */
static void swap_item_down_from_worklist(struct widget *pItem)
{
  Uint16 *pText, ID;
  bool changed = FALSE;
  struct universal tmp;
  
  if(pItem == pEditor->pWork->pBeginActiveWidgetList) {
    remove_item_from_worklist(pItem);
    return;
  }
  
  pText = pItem->string16->text;
  ID = pItem->ID;
  
  /* second item or higher was clicked */
  if(pItem->data.ptr) {
    /* worklist operations -> swap down */
    int row = *((int *)pItem->data.ptr);
       
    tmp = pEditor->pCopy_WorkList->entries[row];
    pEditor->pCopy_WorkList->entries[row] = pEditor->pCopy_WorkList->entries[row + 1];
    pEditor->pCopy_WorkList->entries[row + 1] = tmp;
      
    changed = TRUE;  
  } else {
    /* first item was clicked -> change production */
    change_production(pEditor->pCopy_WorkList->entries[0]);
    pEditor->pCopy_WorkList->entries[0] = cid_decode(MAX_ID - ID);
      changed = TRUE;
    }
  
  if(changed) {
    pItem->string16->text = pItem->prev->string16->text;
    pItem->ID = pItem->prev->ID;
  
    pItem->prev->string16->text = pText;
    pItem->prev->ID = ID;

    redraw_group(pEditor->pWork->pBeginWidgetList,
			  pEditor->pWork->pEndWidgetList, TRUE);
    flush_dirty();
  }
  
}

/*
 * Swap worklist entries UP.
 * Fuction swap current element with prev. element of worklist.
 *
 * If pItem is first widget on widgets list fuction remove this widget 
 * from widget list and target from worklist (global mode)
 * or from production (city mode)
 *
 * In City mode, when pItem is first worklist element, function make
 * change production (currently building is moved to first element of worklist
 * and first element of worklist is build).
 */
static void swap_item_up_from_worklist(struct widget *pItem)
{
  Uint16 *pText = pItem->string16->text;
  Uint16 ID = pItem->ID;
  bool changed = FALSE;
  struct universal tmp;  

  /* first item was clicked -> remove */
  if(pItem == pEditor->pWork->pEndActiveWidgetList) {
    remove_item_from_worklist(pItem);
    return;
  }

  /* third item or higher was clicked */  
  if(pItem->data.ptr && *((int *)pItem->data.ptr) > 0) {
    /* worklist operations -> swap up*/
    int row = *((int *)pItem->data.ptr);
    
    tmp = pEditor->pCopy_WorkList->entries[row];
    pEditor->pCopy_WorkList->entries[row] = pEditor->pCopy_WorkList->entries[row - 1];
    pEditor->pCopy_WorkList->entries[row - 1] = tmp;
      
    changed = TRUE;    
  } else {
    /* second item was clicked -> change production ... */
    tmp = pEditor->currently_building;
    change_production(pEditor->pCopy_WorkList->entries[0]);
    pEditor->pCopy_WorkList->entries[0] = tmp;    
      
    changed = TRUE;
  }

  if(changed) {
    pItem->string16->text = pItem->next->string16->text;
    pItem->ID = pItem->next->ID;
    
    pItem->next->string16->text = pText;
    pItem->next->ID = ID;
    
    redraw_group(pEditor->pWork->pBeginWidgetList,
			  pEditor->pWork->pEndWidgetList, TRUE);
    flush_dirty();
  }
}

/*
 * worklist callback
 * left mouse button -> swap entries up.
 * middle mouse button -> remove element from list
 * right mouse button -> swap entries down.
 */
static int worklist_editor_item_callback(struct widget *pWidget)
{
  switch(Main.event.button.button) {
    case SDL_BUTTON_LEFT:
      swap_item_up_from_worklist(pWidget);
      break;
    case SDL_BUTTON_MIDDLE:
      remove_item_from_worklist(pWidget);
      break;
    case SDL_BUTTON_RIGHT:
      swap_item_down_from_worklist(pWidget);
      break;
    default:
    	;/* do nothing */
    break;
  }
  return -1;
}
/* ======================================================= */

/*
 * Add global worklist to city worklist starting from last free entry.
 * Add only avilable targets in current game state.
 * If global worklist have more targets that city worklist have free
 * entries then we adding only first part of global worklist.
 */
static void add_global_worklist(struct widget *pWidget)
{
  if(!worklist_is_empty(&client.worklists[MAX_ID - pWidget->ID])) {
    int count, firstfree;
    struct widget *pBuf = pEditor->pWork->pEndActiveWidgetList;
    struct worklist *pWorkList = &client.worklists[MAX_ID - pWidget->ID];
      
    if(worklist_length(pEditor->pCopy_WorkList) >= MAX_LEN_WORKLIST - 1) {
      /* worklist is full */
      return;
    }
    
    firstfree = worklist_length(pEditor->pCopy_WorkList);
    /* copy global worklist to city worklist */
    for(count = 0 ; count < worklist_length(pWorkList); count++) {
      
      /* global worklist can have targets unavilable in current state of game
         then we must remove those targets from new city worklist */
      if(!can_city_build_later(pEditor->pCity, pWorkList->entries[count])) {
	continue;  
      }
      
      worklist_append(pEditor->pCopy_WorkList, pWorkList->entries[count]);
      
      /* create widget */      
      if(VUT_UTYPE == pWorkList->entries[count].kind) {
	pBuf = create_iconlabel(NULL, pWidget->dst,
		create_str16_from_char(
			utype_name_translation(pWorkList->entries[count].value.utype),
			adj_font(10)),
		(WF_RESTORE_BACKGROUND|WF_FREE_DATA));
	pBuf->ID = MAX_ID - cid_encode_unit(pWorkList->entries[count].value.utype);
      } else {
	pBuf = create_iconlabel(NULL, pWidget->dst,
		create_str16_from_char(
			city_improvement_name_translation(pEditor->pCity,
				pWorkList->entries[count].value.building),
			adj_font(10)),
		(WF_RESTORE_BACKGROUND|WF_FREE_DATA));
	pBuf->ID = MAX_ID - cid_encode_building(pWorkList->entries[count].value.building);
      }
      
      pBuf->string16->style |= SF_CENTER;
      set_wstate(pBuf, FC_WS_NORMAL);
      pBuf->action = worklist_editor_item_callback;
      pBuf->size.w = adj_size(126);  
      pBuf->data.ptr = fc_calloc(1, sizeof(int));
      *((int *)pBuf->data.ptr) = firstfree;
        
      add_widget_to_vertical_scroll_widget_list(pEditor->pWork,
        pBuf, pEditor->pWork->pBeginActiveWidgetList, FALSE,
        pEditor->pEndWidgetList->area.x + adj_size(2),
        pEditor->pEndWidgetList->area.y + adj_size(152));
      
      firstfree++;
      if(firstfree == MAX_LEN_WORKLIST - 1) {
	break;
      }
    }
    
    refresh_worklist_count_label();
    redraw_group(pEditor->pWork->pBeginWidgetList,
    			pEditor->pWork->pEndWidgetList, TRUE);
    
    flush_dirty();
  }
}

/*
 * Clear city worklist and copy here global worklist.
 * Copy only avilable targets in current game state.
 * If all targets are unavilable then leave city worklist untouched.
 */
static void set_global_worklist(struct widget *pWidget)
{
  if(!worklist_is_empty(&client.worklists[MAX_ID - pWidget->ID])) {
    int count, wl_count;
    struct universal target;
    struct widget *pBuf = pEditor->pWork->pEndActiveWidgetList;
    struct worklist wl ,
	      *pWorkList = &client.worklists[MAX_ID - pWidget->ID];
    
    /* clear tmp worklist */
    init_worklist(&wl);
    
    wl_count = 0;
    /* copy global worklist to city worklist */
    for(count = 0; count < worklist_length(pWorkList); count++) {
      
      /* global worklist can have targets unavilable in current state of game
         then we must remove those targets from new city worklist */
      if(!can_city_build_later(pEditor->pCity, pWorkList->entries[count])) {
	continue;  
      }
      
      wl.entries[wl_count] = pWorkList->entries[count];
      wl_count++;
    }
    /* --------------------------------- */
    
    if(!worklist_is_empty(&wl)) {
      /* free old widget list */
      if(pBuf != pEditor->pWork->pBeginActiveWidgetList) {
        pBuf = pBuf->prev;
        if(pBuf != pEditor->pWork->pBeginActiveWidgetList) {
          do {
            pBuf = pBuf->prev;
            del_widget_from_vertical_scroll_widget_list(pEditor->pWork, pBuf->next);
          } while(pBuf != pEditor->pWork->pBeginActiveWidgetList);
        }
        del_widget_from_vertical_scroll_widget_list(pEditor->pWork, pBuf);
      }  
      /* --------------------------------- */
      
      copy_worklist(pEditor->pCopy_WorkList, &wl);
    
      /* --------------------------------- */
      /* create new widget list */
      for(count = 0; count < MAX_LEN_WORKLIST; count++) {
        /* end of list */
        if(!worklist_peek_ith(pEditor->pCopy_WorkList, &target, count)) {
          break;
        }
    
        if(VUT_UTYPE == target.kind) {
	  pBuf = create_iconlabel(NULL, pWidget->dst,
	    create_str16_from_char(utype_name_translation(target.value.utype),
				   adj_font(10)),
				   (WF_RESTORE_BACKGROUND|WF_FREE_DATA));
	  pBuf->ID = MAX_ID - B_LAST - utype_number(target.value.utype);
        } else {
	  pBuf = create_iconlabel(NULL, pWidget->dst,
	    create_str16_from_char(city_improvement_name_translation(pEditor->pCity, target.value.building),
				   adj_font(10)),
				   (WF_RESTORE_BACKGROUND|WF_FREE_DATA));
	  pBuf->ID = MAX_ID - improvement_number(target.value.building);
        }
        pBuf->string16->style |= SF_CENTER;
        set_wstate(pBuf, FC_WS_NORMAL);
        pBuf->action = worklist_editor_item_callback;
        pBuf->size.w = adj_size(126);  
        pBuf->data.ptr = fc_calloc(1, sizeof(int));
        *((int *)pBuf->data.ptr) = count;
        
        add_widget_to_vertical_scroll_widget_list(pEditor->pWork,
          pBuf, pEditor->pWork->pBeginActiveWidgetList, FALSE,
          pEditor->pEndWidgetList->area.x + adj_size(2),
	  pEditor->pEndWidgetList->area.y + adj_size(152));
      }
    
      refresh_worklist_count_label();
      redraw_group(pEditor->pWork->pBeginWidgetList,
    			pEditor->pWork->pEndWidgetList, TRUE);
    
      flush_dirty();
    }
  }
}

/*
 * global worklist callback
 * left mouse button -> add global worklist to current city list
 * right mouse button -> clear city worklist and copy here global worklist.
 *
 * There are problems with impv./wonder tagets becouse those can't be doubled
 * on worklist and adding/seting can give you situation that global worklist
 * have imprv./wonder entry that exist on city worklist or in building state.
 * I don't make such check here and allow this "functionality" becouse doubled
 * impov./wonder entry are removed from city worklist during "commit" phase.
 */
static int global_worklist_callback(struct widget *pWidget)
{
  switch(Main.event.button.button) {
    case SDL_BUTTON_LEFT:
      add_global_worklist(pWidget);
      break;
    case SDL_BUTTON_MIDDLE:
      /* nothing */
      break;
    case SDL_BUTTON_RIGHT:
      set_global_worklist(pWidget);
      break;
    default:
    	;/* do nothing */
    break;
  }
  return -1;
}

/* ======================================================= */

/* return full unit/imprv. name and build cost in "cost" pointer */
static const char * get_production_name(struct city *pCity,
					struct universal prod, int *cost)
{
  assert(cost != NULL);
        
  *cost = universal_build_shield_cost(&prod);
  if(VUT_UTYPE == prod.kind) {
    return utype_name_translation(prod.value.utype);
  } else {
    return city_improvement_name_translation(pCity, prod.value.building);
  }
}

/*
 * return progress icon (bar) of current production state
 * stock - current shielsd stocks
 * cost - unit/imprv. cost
 * function return in "proggres" pointer (0 - 100 %) progress in numbers
*/
static SDL_Surface * get_progress_icon(int stock, int cost, int *progress)
{
  SDL_Surface *pIcon = NULL;
  int width;
  assert(progress != NULL);
  
  if(stock < cost) {
    width = ((float)stock / cost) * adj_size(116.0);
    *progress = ((float)stock / cost) * 100.0;
    if(!width && stock) {
      *progress = 1;
      width = 1;
    }
  } else {
    width = adj_size(116);
    *progress = 100;
  }
    
  pIcon = create_bcgnd_surf(pTheme->Edit, 0, adj_size(120), adj_size(30));
    
  if(width) {
    SDL_Rect dst = {2,1,0,0};
    SDL_Surface *pBuf = create_bcgnd_surf(pTheme->Button, 3, width, adj_size(28));
    alphablit(pBuf, NULL, pIcon, &dst);
    FREESURFACE(pBuf);
  }
    
  return pIcon;  
}

/*
 * update and redraw production name label in worklist editor
 * stock - pCity->shields_stock or current stock after chnge production lost.
 */
static void refresh_production_label(int stock)
{
  int cost, turns;
  char cBuf[64];
  SDL_Rect area;
  const char *name = get_production_name(pEditor->pCity,
    				pEditor->currently_building, &cost);

  if (VUT_IMPROVEMENT == pEditor->currently_building.kind
     && improvement_has_flag(pEditor->currently_building.value.building, IF_GOLD))
  {
     my_snprintf(cBuf, sizeof(cBuf),
      	_("%s\n%d gold per turn"), name, MAX(0, pEditor->pCity->surplus[O_SHIELD]));
  } else {
    if(stock < cost) {
      turns = city_turns_to_build(pEditor->pCity,
				  pEditor->currently_building, TRUE);
      if(turns == 999)
      {
        my_snprintf(cBuf, sizeof(cBuf), _("%s\nblocked!"), name);
      } else {
        my_snprintf(cBuf, sizeof(cBuf), _("%s\n%d %s"),
		    name, turns, PL_("turn", "turns", turns));
      }
    } else {
      my_snprintf(cBuf, sizeof(cBuf), _("%s\nfinished!"), name);
    }
  }
  copy_chars_to_string16(pEditor->pProduction_Name->string16, cBuf);

  widget_undraw(pEditor->pProduction_Name);
  remake_label_size(pEditor->pProduction_Name);
  
  pEditor->pProduction_Name->size.x = pEditor->pEndWidgetList->area.x +
    (adj_size(130) - pEditor->pProduction_Name->size.w)/2;
  
  area.x = pEditor->pEndWidgetList->area.x;
  area.y = pEditor->pProduction_Name->size.y;
  area.w = adj_size(130);
  area.h = pEditor->pProduction_Name->size.h;

  if (get_wflags(pEditor->pProduction_Name) & WF_RESTORE_BACKGROUND) {
    refresh_widget_background(pEditor->pProduction_Name);
  }
  
  widget_redraw(pEditor->pProduction_Name);
  sdl_dirty_rect(area);
  
  FREESURFACE(pEditor->pProduction_Progres->theme);
  pEditor->pProduction_Progres->theme =
		  get_progress_icon(stock, cost, &cost);
    
  my_snprintf(cBuf, sizeof(cBuf), "%d%%" , cost);
  copy_chars_to_string16(pEditor->pProduction_Progres->string16, cBuf);
  widget_redraw(pEditor->pProduction_Progres);
  widget_mark_dirty(pEditor->pProduction_Progres);
}


/* update and redraw worklist length counter in worklist editor */
static void refresh_worklist_count_label(void)
{
  char cBuf[64];
  SDL_Rect area;

  my_snprintf(cBuf, sizeof(cBuf), _("( %d entries )"),
  				worklist_length(pEditor->pCopy_WorkList));
  copy_chars_to_string16(pEditor->pWorkList_Counter->string16, cBuf);

  widget_undraw(pEditor->pWorkList_Counter);
  remake_label_size(pEditor->pWorkList_Counter);
  
  pEditor->pWorkList_Counter->size.x = pEditor->pEndWidgetList->area.x +
    (adj_size(130) - pEditor->pWorkList_Counter->size.w)/2;
  
  if (get_wflags(pEditor->pWorkList_Counter) & WF_RESTORE_BACKGROUND) {
    refresh_widget_background(pEditor->pWorkList_Counter);
  }
  
  widget_redraw(pEditor->pWorkList_Counter);

  area.x = pEditor->pEndWidgetList->area.x;
  area.y = pEditor->pWorkList_Counter->size.y;
  area.w = adj_size(130);
  area.h = pEditor->pWorkList_Counter->size.h;
  sdl_dirty_rect(area);
}


/* ====================================================================== */


/*
 * Global/City worklist editor.
 * if pCity == NULL then fucnction take pWorklist as global worklist.
 * pWorklist must be not NULL.
 */
void popup_worklist_editor(struct city *pCity, struct worklist *pWorkList)
{
  SDL_Color bg_color = {255,255,255,128};
  SDL_Color bg_color2 = {255,255,255,136};

  int count = 0, turns;
  int i, widget_w = 0, widget_h = 0;
  SDL_String16 *pStr = NULL;
  struct widget *pBuf = NULL, *pWindow, *pLast;
  SDL_Surface *pText = NULL, *pText_Name = NULL, *pZoom = NULL;
  SDL_Surface *pMain;
  SDL_Surface *pIcon;
  SDL_Rect dst;
  char cBuf[128];
  struct unit_type *pUnit = NULL;
  char *state = NULL;
  bool advanced_tech;
  bool can_build, can_eventually_build;
  SDL_Rect area;
  struct worklist *worklist;
  
  if(pEditor) {
    return;
  }
  
  assert(pWorkList != NULL);
  
  advanced_tech = (pCity == NULL);
  
  pEditor = fc_calloc(1, sizeof(struct EDITOR));
  
  pEditor->pCity = pCity;
  pEditor->pOrginal_WorkList = pWorkList;
  pEditor->pCopy_WorkList = fc_calloc(1, sizeof(struct worklist));
  copy_worklist(pEditor->pCopy_WorkList, pWorkList);
  
  if(pCity) {
    pEditor->currently_building = pCity->production;
    pEditor->stock = pCity->shield_stock;
  }
  
  /* --------------- */
  /* create Target Background Icon */
  pMain = create_surf_alpha(adj_size(116), adj_size(116), SDL_SWSURFACE);
  SDL_FillRect(pMain, NULL, map_rgba(pMain->format, bg_color));
  putframe(pMain, 0, 0, pMain->w - 1, pMain->h - 1,
    map_rgba(pMain->format, *get_game_colorRGB(COLOR_THEME_WLDLG_FRAME)));
    
  /* ---------------- */
  /* Create Main Window */
  pWindow = create_window_skeleton(NULL, NULL, 0);
  pWindow->action = window_worklist_editor_callback;
  set_wstate(pWindow, FC_WS_NORMAL);
  
  add_to_gui_list(ID_WINDOW, pWindow);
  pEditor->pEndWidgetList = pWindow;

  area = pWindow->area;
  
  /* ---------------- */
  if(pCity) {
    my_snprintf(cBuf, sizeof(cBuf), _("Worklist of\n%s"), city_name(pCity));
  } else {
    my_snprintf(cBuf, sizeof(cBuf), "%s", pWorkList->name);
  }
    
  pStr = create_str16_from_char(cBuf, adj_font(12));
  pStr->style |= (TTF_STYLE_BOLD|SF_CENTER);
  
  pBuf = create_iconlabel(NULL, pWindow->dst, pStr, WF_RESTORE_BACKGROUND);
  
  add_to_gui_list(ID_LABEL, pBuf);
  /* --------------------------- */
  
  my_snprintf(cBuf, sizeof(cBuf), _("( %d entries )"), worklist_length(pWorkList));
  pStr = create_str16_from_char(cBuf, adj_font(10));
  pStr->bgcol = (SDL_Color) {0, 0, 0, 0};
  pBuf = create_iconlabel(NULL, pWindow->dst, pStr, WF_RESTORE_BACKGROUND);
  pEditor->pWorkList_Counter = pBuf;
  add_to_gui_list(ID_LABEL, pBuf);
  /* --------------------------- */
  
  /* create production proggres label or rename worklist edit */
  if(pCity) {
    /* count == cost */
    /* turns == progress */
    const char *name = city_production_name_translation(pCity);
    count = city_production_build_shield_cost(pCity);
    
    if (city_production_has_flag(pCity, IF_GOLD))
    {
      my_snprintf(cBuf, sizeof(cBuf),
      	_("%s\n%d gold per turn"), name, MAX(0, pCity->surplus[O_SHIELD]));
    } else {
      if(pCity->shield_stock < count) {
        turns = city_production_turns_to_build(pCity, TRUE);
        if(turns == 999)
        {
          my_snprintf(cBuf, sizeof(cBuf), _("%s\nblocked!"), name);
        } else {
          my_snprintf(cBuf, sizeof(cBuf), _("%s\n%d %s"),
		    name, turns, PL_("turn", "turns", turns));
        }
      } else {
        my_snprintf(cBuf, sizeof(cBuf), _("%s\nfinished!"), name);
      }
    }
    pStr = create_str16_from_char(cBuf, adj_font(10));
    pStr->style |= SF_CENTER;
    pBuf = create_iconlabel(NULL, pWindow->dst, pStr, WF_RESTORE_BACKGROUND);
    
    pEditor->pProduction_Name = pBuf;
    add_to_gui_list(ID_LABEL, pBuf);
    
    pIcon = get_progress_icon(pCity->shield_stock, count, &turns);
    
    my_snprintf(cBuf, sizeof(cBuf), "%d%%" , turns);
    pStr = create_str16_from_char(cBuf, adj_font(12));
    pStr->style |= (TTF_STYLE_BOLD|SF_CENTER);
    
    pBuf = create_iconlabel(pIcon, pWindow->dst, pStr,
    		(WF_RESTORE_BACKGROUND|WF_ICON_CENTER|WF_FREE_THEME));
    
    pIcon = NULL;
    turns = 0;
    pEditor->pProduction_Progres = pBuf;
    add_to_gui_list(ID_LABEL, pBuf);
  } else {
    pBuf = create_edit_from_chars(NULL, pWindow->dst,  pWorkList->name, adj_font(10),
                                    adj_size(120), WF_RESTORE_BACKGROUND);
    pBuf->action = rename_worklist_editor_callback;
    set_wstate(pBuf, FC_WS_NORMAL);
    
    add_to_gui_list(ID_EDIT, pBuf);
  }
  
  /* --------------------------- */
  /* Commit Widget */
  pBuf = create_themeicon(pTheme->OK_Icon, pWindow->dst, WF_RESTORE_BACKGROUND);
  
  pBuf->action = ok_worklist_editor_callback;
  set_wstate(pBuf, FC_WS_NORMAL);
  pBuf->key = SDLK_RETURN;
    
  add_to_gui_list(ID_BUTTON, pBuf);
  /* --------------------------- */
  /* Cancel Widget */
  pBuf = create_themeicon(pTheme->CANCEL_Icon, pWindow->dst,
				  WF_RESTORE_BACKGROUND);
  
  pBuf->action = popdown_worklist_editor_callback;
  set_wstate(pBuf, FC_WS_NORMAL);
  pBuf->key = SDLK_ESCAPE;
    
  add_to_gui_list(ID_BUTTON, pBuf);
  /* --------------------------- */
  /* work list */
  
  /*
     pWidget->data filed will contains postion of target in worklist all
     action on worklist (swap/romove/add) must correct this fields
     
     Production Widget Label in worklist Widget list
     will have this field NULL
  */
  
  pEditor->pWork = fc_calloc(1, sizeof(struct ADVANCED_DLG));

  
  pEditor->pWork->pScroll = fc_calloc(1, sizeof(struct ScrollBar));
  pEditor->pWork->pScroll->count = 0;
  pEditor->pWork->pScroll->active = MAX_LEN_WORKLIST;
  pEditor->pWork->pScroll->step = 1;

/* FIXME: this should replace the 4 lines above, but
 *        pEditor->pWork->pEndWidgetList is not set yet */
#if 0  
  create_vertical_scrollbar(pEditor->pWork, 1, MAX_LEN_WORKLIST, TRUE, TRUE);
#endif
  
  if(pCity) {
   /* Production Widget Label */ 
    pStr = create_str16_from_char(city_production_name_translation(pCity), adj_font(10));
    turns = city_production_build_shield_cost(pCity);
    pStr->style |= SF_CENTER;
    pBuf = create_iconlabel(NULL, pWindow->dst, pStr, WF_RESTORE_BACKGROUND);
    
    set_wstate(pBuf, FC_WS_NORMAL);
    pBuf->action = worklist_editor_item_callback;
        
    add_to_gui_list(MAX_ID - cid_encode(pCity->production), pBuf);
    
    pEditor->pWork->pEndWidgetList = pBuf;
    pEditor->pWork->pBeginWidgetList = pBuf;
    pEditor->pWork->pEndActiveWidgetList = pEditor->pWork->pEndWidgetList;
    pEditor->pWork->pBeginActiveWidgetList = pEditor->pWork->pBeginWidgetList;
    pEditor->pWork->pScroll->count++;
  }
  
  pLast = pBuf;
  pEditor->pDock = pBuf;
    
  /* create Widget Labels of worklist entries */

  count = 0;
  
  worklist = pWorkList;
    
  worklist_iterate(worklist, prod) {

    if(VUT_UTYPE == prod.kind) {
      pStr = create_str16_from_char(utype_name_translation(prod.value.utype),
                                    adj_font(10));
    } else {
      pStr = create_str16_from_char(city_improvement_name_translation(pCity,
                                                           prod.value.building),
                                    adj_font(10));
    }
    pStr->style |= SF_CENTER;
    pBuf = create_iconlabel(NULL, pWindow->dst, pStr,
				(WF_RESTORE_BACKGROUND|WF_FREE_DATA));
    
    set_wstate(pBuf, FC_WS_NORMAL);
    pBuf->action = worklist_editor_item_callback;
        
    pBuf->data.ptr = fc_calloc(1, sizeof(int));
    *((int *)pBuf->data.ptr) = count;
    
    add_to_gui_list(MAX_ID - cid_encode(prod), pBuf);
    
    count++;
    
    if(count > pEditor->pWork->pScroll->active - 1) {
      set_wflag(pBuf, WF_HIDDEN);
  }
  
  } worklist_iterate_end;
  
  if(count) {
    if(!pCity) {
      pEditor->pWork->pEndWidgetList = pLast->prev;
      pEditor->pWork->pEndActiveWidgetList = pEditor->pWork->pEndWidgetList;
    }
    pEditor->pWork->pBeginWidgetList = pBuf;
    pEditor->pWork->pBeginActiveWidgetList = pEditor->pWork->pBeginWidgetList;
  } else {
    if(!pCity) {
      pEditor->pWork->pEndWidgetList = pLast;
    }
    pEditor->pWork->pBeginWidgetList = pLast;
  }
  
/* FIXME */
#if 0  
  pEditor->pWork->pActiveWidgetList = pEditor->pWork->pEndActiveWidgetList;
  create_vertical_scrollbar(pEditor->pWork, 1,
                           pEditor->pWork->pScroll->active, FALSE, TRUE);
  pEditor->pWork->pScroll->pUp_Left_Button->size.w = adj_size(122);
  pEditor->pWork->pScroll->pDown_Right_Button->size.w = adj_size(122);
  
  /* count: without production */
  if(count <= pEditor->pWork->pScroll->active + 1) {
    if(count > 0) {
      struct widget *pTmp = pLast;
      do {
        pTmp = pTmp->prev;
        clear_wflag(pTmp, WF_HIDDEN);
      } while (pTmp != pBuf);
    }
    hide_scrollbar(pEditor->pWork->pScroll);
  }
#endif
  
  pEditor->pWork->pScroll->count += count;
  pLast = pEditor->pWork->pBeginWidgetList;
  
  /* --------------------------- */
  /* global worklists */
  if(pCity) {
    count = 0;
    for (i = 0; i < MAX_NUM_WORKLISTS; i++) {
      if (client.worklists[i].is_valid) {
        pBuf = create_iconlabel_from_chars(NULL, pWindow->dst, 
      		client.worklists[i].name, adj_font(10),
					      WF_RESTORE_BACKGROUND);
        set_wstate(pBuf, FC_WS_NORMAL);
        add_to_gui_list(MAX_ID - i, pBuf);
        pBuf->string16->style |= SF_CENTER;
        pBuf->action = global_worklist_callback;
        pBuf->string16->fgcol = bg_color;
	
        count++;
    
        if(count>4) {
	  set_wflag(pBuf, WF_HIDDEN);
        }
      }
    }
    if(count) {
      pEditor->pGlobal = fc_calloc(1, sizeof(struct ADVANCED_DLG));
      pEditor->pGlobal->pEndWidgetList = pLast->prev;
      pEditor->pGlobal->pEndActiveWidgetList = pEditor->pGlobal->pEndWidgetList;
      pEditor->pGlobal->pBeginWidgetList = pBuf;
      pEditor->pGlobal->pBeginActiveWidgetList = pEditor->pGlobal->pBeginWidgetList;
    
      if(count > 6) {
        pEditor->pGlobal->pActiveWidgetList = pEditor->pGlobal->pEndActiveWidgetList;

        create_vertical_scrollbar(pEditor->pGlobal, 1,
                             pEditor->pGlobal->pScroll->active, FALSE, TRUE);
	pEditor->pGlobal->pScroll->pUp_Left_Button->size.w = adj_size(122);
	pEditor->pGlobal->pScroll->pDown_Right_Button->size.w = adj_size(122);
      } else {
	struct widget *pTmp = pLast;
	do {
	  pTmp = pTmp->prev;
	  clear_wflag(pTmp, WF_HIDDEN);
	} while (pTmp != pBuf);	  
      }
    
      pLast = pEditor->pGlobal->pBeginWidgetList;
    }
  }
  /* ----------------------------- */
  count = 0;
  /* Targets units and imprv. to build */
  pStr = create_string16(NULL, 0, adj_font(10));
  pStr->style |= (SF_CENTER|TTF_STYLE_BOLD);
  pStr->bgcol = (SDL_Color) {0, 0, 0, 0};
    
  improvement_iterate(pImprove) {
    can_build = can_player_build_improvement_now(client.playing, pImprove);
    can_eventually_build =
	can_player_build_improvement_later(client.playing, pImprove);
    
    /* If there's a city, can the city build the improvement? */
    if (pCity) {
      can_build = can_build && can_city_build_improvement_now(pCity, pImprove);
      can_eventually_build = can_eventually_build &&
	  can_city_build_improvement_later(pCity, pImprove);
    }
    
    if ((advanced_tech && can_eventually_build) ||
	(!advanced_tech && can_build)) {

      pIcon = crop_rect_from_surface(pMain, NULL);
      
      my_snprintf(cBuf, sizeof(cBuf), "%s", improvement_name_translation(pImprove));
      copy_chars_to_string16(pStr, cBuf);
      pStr->style |= TTF_STYLE_BOLD;
      pText_Name = create_text_surf_smaller_that_w(pStr, pIcon->w - 4);
  
      if (is_wonder(pImprove)) {
        if (improvement_obsolete(client.playing, pImprove)) {
          state = _("Obsolete");
        } else {
          if ((is_great_wonder(pImprove) && game.info.great_wonders[improvement_index(pImprove)] != 0) || 
              (is_small_wonder(pImprove) && client.playing->small_wonders[improvement_index(pImprove)] != 0)) {
	    state = _("Built");
          } else {
	    state = _("Wonder");
          }
        }
      } else {
        state = NULL;
      }
  
      if(pCity) {
        if(!improvement_has_flag(pImprove, IF_GOLD)) {
          turns = city_turns_to_build(pCity, cid_production(cid_encode_building(pImprove)), TRUE);
            
          if (turns == FC_INFINITY) {
	    if(state) {
              my_snprintf(cBuf, sizeof(cBuf), _("(%s)\n%d/%d %s\n%s"),
			  state, pCity->shield_stock,
			  impr_build_shield_cost(pImprove),
			  PL_("shield", "shields",
			      impr_build_shield_cost(pImprove)),
			  _("never"));
	    } else {
	      my_snprintf(cBuf, sizeof(cBuf), _("%d/%d %s\n%s"),
			  pCity->shield_stock, impr_build_shield_cost(pImprove),
			  PL_("shield","shields",
			      impr_build_shield_cost(pImprove)), _("never"));
	    }	  
          } else {
            if (state) {
	      my_snprintf(cBuf, sizeof(cBuf), _("(%s)\n%d/%d %s\n%d %s"),
			  state, pCity->shield_stock,
			  impr_build_shield_cost(pImprove),
			  PL_("shield","shields",
			      impr_build_shield_cost(pImprove)),
			  turns, PL_("turn", "turns", turns));
            } else {
	      my_snprintf(cBuf, sizeof(cBuf), _("%d/%d %s\n%d %s"),
			  pCity->shield_stock, impr_build_shield_cost(pImprove),
			  PL_("shield","shields",
			      impr_build_shield_cost(pImprove)),
			  turns, PL_("turn", "turns", turns));
            }
          }
        } else {
          /* capitalization */
          my_snprintf(cBuf, sizeof(cBuf), _("%d gold per turn"),
		    MAX(0, pCity->surplus[O_SHIELD]));
        }
      } else {
        /* non city mode */
        if(!improvement_has_flag(pImprove, IF_GOLD)) {
          if(state) {
            my_snprintf(cBuf, sizeof(cBuf), _("(%s)\n%d %s"),
			state, impr_build_shield_cost(pImprove),
			PL_("shield","shields",
			    impr_build_shield_cost(pImprove)));
          } else {
	    my_snprintf(cBuf, sizeof(cBuf), _("%d %s"),
			impr_build_shield_cost(pImprove),
			PL_("shield","shields",
			    impr_build_shield_cost(pImprove)));
          }
        } else {
          my_snprintf(cBuf, sizeof(cBuf), _("shields into gold"));
        }
      }
  
      copy_chars_to_string16(pStr, cBuf);
      pStr->style &= ~TTF_STYLE_BOLD;
  
      pText = create_text_surf_from_str16(pStr);

      /*-----------------*/
      
      pZoom = get_building_surface(pImprove);
      pZoom = zoomSurface(pZoom, DEFAULT_ZOOM * ((float)54 / pZoom->w), DEFAULT_ZOOM * ((float)54 / pZoom->w), 1);
      dst.x = (pIcon->w - pZoom->w)/2;
      dst.y = (pIcon->h/2 - pZoom->h)/2;
      alphablit(pZoom, NULL, pIcon, &dst);
      dst.y += pZoom->h;
      FREESURFACE(pZoom);
  
      dst.x = (pIcon->w - pText_Name->w)/2;
      dst.y += ((pIcon->h - dst.y) - (pText_Name->h + pText->h))/2;
      alphablit(pText_Name, NULL, pIcon, &dst);

      dst.x = (pIcon->w - pText->w)/2;
      dst.y += pText_Name->h;
      alphablit(pText, NULL, pIcon, &dst);
  
      FREESURFACE(pText);
      FREESURFACE(pText_Name);
            
      pBuf = create_icon2(pIcon, pWindow->dst,
    				WF_RESTORE_BACKGROUND|WF_FREE_THEME);
      set_wstate(pBuf, FC_WS_NORMAL);
    
      widget_w = MAX(widget_w, pBuf->size.w);
      widget_h = MAX(widget_h, pBuf->size.h);
    
      pBuf->data.city = pCity;
      add_to_gui_list(MAX_ID - improvement_number(pImprove), pBuf);
      pBuf->action = worklist_editor_targets_callback;
      
      if(count > (TARGETS_ROW * TARGETS_COL - 1)) {
        set_wflag(pBuf, WF_HIDDEN);
      }
      count++;
    }
  } improvement_iterate_end;
  
  /* ------------------------------ */
  
  unit_type_iterate(un) {
    can_build = can_player_build_unit_now(client.playing, un);
    can_eventually_build =
	can_player_build_unit_later(client.playing, un);

    /* If there's a city, can the city build the unit? */
    if (pCity) {
      can_build = can_build && can_city_build_unit_now(pCity, un);
      can_eventually_build = can_eventually_build &&
	  		can_city_build_unit_later(pCity, un);
    }

    if ((advanced_tech && can_eventually_build) ||
	(!advanced_tech && can_build)) {
	  
      pUnit = un;
	
      pIcon = crop_rect_from_surface(pMain, NULL);
      
      my_snprintf(cBuf, sizeof(cBuf), "%s", utype_name_translation(un));
  
      copy_chars_to_string16(pStr, cBuf);
      pStr->style |= TTF_STYLE_BOLD;
      pText_Name = create_text_surf_smaller_that_w(pStr, pIcon->w - 4);
  
      if (pCity) {
        turns = city_turns_to_build(pCity, cid_production(cid_encode_unit(un)), TRUE);
        if (turns == FC_INFINITY) {
          my_snprintf(cBuf, sizeof(cBuf),
		    _("(%d/%d/%d)\n%d/%d %s\nnever"),
		    pUnit->attack_strength,
		    pUnit->defense_strength, pUnit->move_rate / SINGLE_MOVE,
		    pCity->shield_stock, utype_build_shield_cost(un),
	  	    PL_("shield","shields", utype_build_shield_cost(un)));
        } else {
          my_snprintf(cBuf, sizeof(cBuf),
		    _("(%d/%d/%d)\n%d/%d %s\n%d %s"),
		    pUnit->attack_strength,
		    pUnit->defense_strength, pUnit->move_rate / SINGLE_MOVE,
		    pCity->shield_stock, utype_build_shield_cost(un), 
	  	    PL_("shield","shields", utype_build_shield_cost(un)),
		    turns, PL_("turn", "turns", turns));
        }
      } else {
        my_snprintf(cBuf, sizeof(cBuf),
		    _("(%d/%d/%d)\n%d %s"),
		    pUnit->attack_strength,
		    pUnit->defense_strength, pUnit->move_rate / SINGLE_MOVE,
		    utype_build_shield_cost(un),
		    PL_("shield","shields", utype_build_shield_cost(un)));
      }

      copy_chars_to_string16(pStr, cBuf);
      pStr->style &= ~TTF_STYLE_BOLD;
  
      pText = create_text_surf_from_str16(pStr);
  
      pZoom = adj_surf(get_unittype_surface(un));
      dst.x = (pIcon->w - pZoom->w)/2;
      dst.y = (pIcon->h/2 - pZoom->h)/2;
      alphablit(pZoom, NULL, pIcon, &dst);
      FREESURFACE(pZoom);
  
      dst.x = (pIcon->w - pText_Name->w)/2;
      dst.y = pIcon->h/2 + (pIcon->h/2 - (pText_Name->h + pText->h))/2;
      alphablit(pText_Name, NULL, pIcon, &dst);

      dst.x = (pIcon->w - pText->w)/2;
      dst.y += pText_Name->h;
      alphablit(pText, NULL, pIcon, &dst);
  
      FREESURFACE(pText);
      FREESURFACE(pText_Name);
      
      pBuf = create_icon2(pIcon, pWindow->dst,
    				WF_RESTORE_BACKGROUND|WF_FREE_THEME);
      set_wstate(pBuf, FC_WS_NORMAL);
    
      widget_w = MAX(widget_w, pBuf->size.w);
      widget_h = MAX(widget_h, pBuf->size.h);
    
      pBuf->data.city = pCity;
      add_to_gui_list(MAX_ID - cid_encode_unit(un), pBuf);
      pBuf->action = worklist_editor_targets_callback;
      
      if(count > (TARGETS_ROW * TARGETS_COL - 1)) {
        set_wflag(pBuf, WF_HIDDEN);
      }
      count++;
      
    }
  } unit_type_iterate_end;
  
  pEditor->pTargets = fc_calloc(1, sizeof(struct ADVANCED_DLG));
  
  pEditor->pTargets->pEndWidgetList = pLast->prev;
  pEditor->pTargets->pBeginWidgetList = pBuf;
  pEditor->pTargets->pEndActiveWidgetList = pEditor->pTargets->pEndWidgetList;
  pEditor->pTargets->pBeginActiveWidgetList = pEditor->pTargets->pBeginWidgetList;
  pEditor->pTargets->pActiveWidgetList = pEditor->pTargets->pEndActiveWidgetList;
    
  /* --------------- */
  if(count > (TARGETS_ROW * TARGETS_COL - 1)) {
    count = create_vertical_scrollbar(pEditor->pTargets,
		    		TARGETS_COL, TARGETS_ROW, TRUE, TRUE);
  } else {
    count = 0;
  }
  /* --------------- */
    
  pEditor->pBeginWidgetList = pEditor->pTargets->pBeginWidgetList;
  
  /* Window */
  area.w = MAX(area.w, widget_w * TARGETS_COL + count + adj_size(130));
  area.h = MAX(area.h, widget_h * TARGETS_ROW);
  
  pIcon = theme_get_background(theme, BACKGROUND_WLDLG);
  if(resize_window(pWindow, pIcon, NULL,
                   (pWindow->size.w - pWindow->area.w) + area.w,
                   (pWindow->size.h - pWindow->area.h) + area.h)) {
    FREESURFACE(pIcon);
  }
  
  area = pWindow->area;
  
  /* Backgrounds */
  dst.x = area.x;
  dst.y = area.y;
  dst.w = adj_size(130);
  dst.h = adj_size(145);
  
  SDL_FillRect(pWindow->theme, &dst,
    map_rgba(pWindow->theme->format, *get_game_colorRGB(COLOR_THEME_BACKGROUND)));
  putframe(pWindow->theme, dst.x, dst.y, dst.x + dst.w - 1, dst.y + dst.h - 1,
     map_rgba(pWindow->theme->format, *get_game_colorRGB(COLOR_THEME_WLDLG_FRAME)));
  putframe(pWindow->theme, dst.x + 2, dst.y + 2, dst.x + dst.w - 3, dst.y + dst.h - 3,
     map_rgba(pWindow->theme->format, *get_game_colorRGB(COLOR_THEME_WLDLG_FRAME)));
  
  dst.x = area.x;
  dst.y += dst.h + adj_size(2);
  dst.w = adj_size(130);
  dst.h = adj_size(228);
  SDL_FillRectAlpha(pWindow->theme, &dst, &bg_color2);
  putframe(pWindow->theme, dst.x, dst.y, dst.x + dst.w - 1, dst.y + dst.h - 1,
     map_rgba(pWindow->theme->format, *get_game_colorRGB(COLOR_THEME_WLDLG_FRAME)));
  
  if(pEditor->pGlobal) {
    dst.x = area.x;
    dst.y += dst.h + adj_size(2);
    dst.w = adj_size(130);
    dst.h = pWindow->size.h - dst.y - adj_size(4);

    SDL_FillRect(pWindow->theme, &dst,
      map_rgba(pWindow->theme->format, *get_game_colorRGB(COLOR_THEME_BACKGROUND)));
    putframe(pWindow->theme, dst.x, dst.y, dst.x + dst.w - 1, dst.y + dst.h - 1,
      map_rgba(pWindow->theme->format, *get_game_colorRGB(COLOR_THEME_WLDLG_FRAME)));
    putframe(pWindow->theme, dst.x + adj_size(2), dst.y + adj_size(2),
      dst.x + dst.w - adj_size(3), dst.y + dst.h - adj_size(3),
      map_rgba(pWindow->theme->format, *get_game_colorRGB(COLOR_THEME_WLDLG_FRAME)));
  }

  widget_set_position(pWindow,
                      (Main.screen->w - pWindow->size.w) / 2,
                      (Main.screen->h - pWindow->size.h) / 2);
  
  /* name */
  pBuf = pWindow->prev;
  pBuf->size.x = area.x + (adj_size(130) - pBuf->size.w)/2;
  pBuf->size.y = area.y + adj_size(4);
  
  /* size of worklist (without production) */
  pBuf = pBuf->prev;
  pBuf->size.x = area.x + (adj_size(130) - pBuf->size.w)/2;
  pBuf->size.y = pBuf->next->size.y + pBuf->next->size.h;
  
  if(pCity) {
    /* current build and proggrse bar */
    pBuf = pBuf->prev;
    pBuf->size.x = area.x + (adj_size(130) - pBuf->size.w)/2;
    pBuf->size.y = pBuf->next->size.y + pBuf->next->size.h + adj_size(5);
    
    pBuf = pBuf->prev;
    pBuf->size.x = area.x + (adj_size(130) - pBuf->size.w)/2;
    pBuf->size.y = pBuf->next->size.y + pBuf->next->size.h;
  } else {
    /* rename worklist */
    pBuf = pBuf->prev;
    pBuf->size.x = area.x + (adj_size(130) - pBuf->size.w)/2;
    pBuf->size.y = area.y + 1 + (adj_size(145) - pBuf->size.h)/2;
  }
  
  /* ok button */
  pBuf = pBuf->prev;
  pBuf->size.x = area.x + (adj_size(65) - pBuf->size.w)/2;
  pBuf->size.y = area.y + adj_size(135) - pBuf->size.h;
  
  /* exit button */
  pBuf = pBuf->prev;
  pBuf->size.x = area.x + adj_size(65) + (adj_size(65) - pBuf->size.w)/2;
  pBuf->size.y = area.y + adj_size(135) - pBuf->size.h;
  
  /* worklist */
  /* pEditor->pWork->pScroll->count: including production */
  if(pCity || (worklist_length(pWorkList) > 0)) {
    /* FIXME */
    setup_vertical_widgets_position(1,
      area.x + adj_size(2), area.y + adj_size(152)/* +
	((pEditor->pWork->pScroll->count > pEditor->pWork->pScroll->active + 2) ?
	    pEditor->pWork->pScroll->pUp_Left_Button->size.h + 1 : 0)*/,
	adj_size(126), 0, pEditor->pWork->pBeginWidgetList,
		  pEditor->pWork->pEndWidgetList);

    setup_vertical_scrollbar_area(pEditor->pWork->pScroll,
	area.x + adj_size(2),
    	area.y + adj_size(152),
    	adj_size(225), FALSE);
  }
  
  /* global worklists */
  if(pEditor->pGlobal) {
    setup_vertical_widgets_position(1,
      area.x + adj_size(4),
      area.y + adj_size(384) +
	(pEditor->pGlobal->pScroll ?
	    pEditor->pGlobal->pScroll->pUp_Left_Button->size.h + 1 : 0),
		adj_size(122), 0, pEditor->pGlobal->pBeginWidgetList,
		  	pEditor->pGlobal->pEndWidgetList);
    
    if(pEditor->pGlobal->pScroll) {
      setup_vertical_scrollbar_area(pEditor->pGlobal->pScroll,
	area.x + adj_size(4),
    	area.y + adj_size(384),
    	adj_size(93), FALSE);
    }
    
  }
  
  /* Targets */  
  setup_vertical_widgets_position(TARGETS_COL,
	area.x + adj_size(130), area.y,
	  0, 0, pEditor->pTargets->pBeginWidgetList,
			  pEditor->pTargets->pEndWidgetList);
    
  if(pEditor->pTargets->pScroll) {
    setup_vertical_scrollbar_area(pEditor->pTargets->pScroll,
	area.x + area.w,
    	area.y + 1,
    	area.h - 1, TRUE);
    
  }
    
  /* ----------------------------------- */
  FREESTRING16(pStr);
  FREESURFACE(pMain);
  
  redraw_group(pEditor->pBeginWidgetList, pWindow, 0);
  widget_flush(pWindow);
}
  
void popdown_worklist_editor(void)
{
  if(pEditor) {
    popdown_window_group_dialog(pEditor->pBeginWidgetList,
                                            pEditor->pEndWidgetList);
    FC_FREE(pEditor->pTargets->pScroll);
    FC_FREE(pEditor->pTargets);
    
    FC_FREE(pEditor->pWork->pScroll);
    FC_FREE(pEditor->pWork);
    
    if(pEditor->pGlobal) {
      FC_FREE(pEditor->pGlobal->pScroll);
      FC_FREE(pEditor->pGlobal);
    }

    FC_FREE(pEditor->pCopy_WorkList);
        
    if(city_dialog_is_open(pEditor->pCity)) {
      enable_city_dlg_widgets();
    }
  
    FC_FREE(pEditor);
    
    flush_dirty();
  }
}
ENDREP
id: vl.0.r14418/213752
type: file
pred: vl.0.r14415/71829
count: 366
text: 14418 118426 3221 171272 563f1942b5dd27b47700653b94aebd2c
props: 11092 74 112 0 de3988801a325e2d7d51fcbc7209a255
cpath: /trunk/server/savegame.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 21
file 5q.0.r14374/2944
K 9
airgoto.c
V 22
file 160.0.r12750/6124
K 9
airgoto.h
V 22
file 161.0.r12750/6355
K 6
auth.c
V 23
file 39c.0.r14371/53679
K 6
auth.h
V 23
file 39d.0.r13513/10535
K 11
barbarian.c
V 22
file lw.0.r14242/35800
K 11
barbarian.h
V 21
file lx.0.r13220/1454
K 10
cityhand.c
V 22
file 10.0.r14415/67925
K 10
cityhand.h
V 23
file 4f.0.r13297/423686
K 11
citytools.c
V 22
file 4g.0.r14415/69731
K 11
citytools.h
V 22
file 4h.0.r14415/69963
K 10
cityturn.c
V 22
file 4i.0.r14415/70657
K 10
cityturn.h
V 22
file 4j.0.r14394/29414
K 11
civserver.c
V 22
file 4k.0.r14376/53526
K 11
civserver.h
V 21
file 4l.0.r2805/33121
K 10
commands.c
V 23
file 2ly.0.r14368/10572
K 10
commands.h
V 23
file 2lz.0.r14368/10805
K 13
connecthand.c
V 23
file 2dw.0.r14222/31783
K 13
connecthand.h
V 23
file 2dx.0.r11356/12433
K 9
console.c
V 22
file dd.0.r14390/14311
K 9
console.h
V 21
file de.0.r11697/6876
K 10
diplhand.c
V 22
file 4m.0.r14415/71124
K 10
diplhand.h
V 22
file 4n.0.r13567/27963
K 11
diplomats.c
V 22
file vz.0.r14242/36267
K 11
diplomats.h
V 22
file w0.0.r13567/28426
K 10
edithand.c
V 22
file 3bk.0.r14131/8604
K 10
gamehand.c
V 22
file 4o.0.r14386/15193
K 10
gamehand.h
V 21
file 4p.0.r14149/6770
K 9
generator
V 22
dir 2me.0.r14415/69036
K 11
ggzserver.c
V 23
file 39a.0.r12670/12494
K 11
ggzserver.h
V 23
file 39b.0.r12670/13043
K 10
gotohand.c
V 23
file 11.0.r14208/140317
K 10
gotohand.h
V 23
file 7r.0.r13948/112621
K 10
handchat.c
V 23
file 4q.0.r14208/140554
K 10
handchat.h
V 22
file dj.0.r7100/189089
K 9
maphand.c
V 22
file 13.0.r14415/70891
K 9
maphand.h
V 22
file 14.0.r14055/23310
K 6
meta.c
V 20
file 4s.0.r14412/371
K 6
meta.h
V 22
file 4t.0.r14376/53991
K 9
plrhand.c
V 22
file 4u.0.r14415/72062
K 9
plrhand.h
V 21
file 4v.0.r14269/6374
K 8
report.c
V 22
file vi.0.r14386/14965
K 8
report.h
V 21
file vj.0.r10414/9434
K 9
ruleset.c
V 22
file 8w.0.r14390/15894
K 9
ruleset.h
V 21
file 8x.0.r14149/6314
K 13
sanitycheck.c
V 22
file wi.0.r14415/71592
K 13
sanitycheck.h
V 21
file wj.0.r14269/5917
K 10
savegame.c
V 23
file vl.0.r14418/213752
K 10
savegame.h
V 21
file vm.0.r10073/2584
K 7
score.c
V 23
file 2eg.0.r14415/69265
K 7
score.h
V 22
file 2eh.0.r11430/3487
K 9
scripting
V 22
dir 31x.0.r14390/15666
K 8
sernet.c
V 22
file 15.0.r14376/54215
K 8
sernet.h
V 23
file 4y.0.r14120/164977
K 10
settings.c
V 21
file 2m0.0.r14412/144
K 10
settings.h
V 22
file 2m1.0.r14155/8970
K 10
settlers.c
V 22
file 7s.0.r14415/70194
K 10
settlers.h
V 22
file 7t.0.r14415/70427
K 11
spacerace.c
V 23
file 9a.0.r14208/143132
K 11
spacerace.h
V 21
file 9b.0.r11338/1129
K 10
srv_main.c
V 22
file vg.0.r14415/69497
K 10
srv_main.h
V 22
file vh.0.r14386/14733
K 11
stdinhand.c
V 22
file 4z.0.r14390/16126
K 11
stdinhand.h
V 21
file 50.0.r12637/7365
K 11
techtools.c
V 24
file 33n.0.r14208/144766
K 11
techtools.h
V 22
file 33o.0.r11130/1173
K 10
unithand.c
V 22
file 18.0.r14248/13835
K 10
unithand.h
V 22
file 19.0.r14248/14065
K 11
unittools.c
V 22
file 1a.0.r14415/71357
K 11
unittools.h
V 22
file 1b.0.r14248/13605
END
ENDREP
id: z.0.r14418/217054
type: dir
pred: z.0.r14415/75358
count: 3426
text: 14418 213987 3054 3054 9970eba4f38a898026d20f98300c65d5
props: 13933 1750 123 0 2b883b78ac685994a9940e39e0d24770
cpath: /trunk/server
copyroot: 0 /

id: 2ys.0.r14418/217276
type: file
pred: 2ys.0.r14415/77324
count: 34
text: 14418 154495 348 22374 913d27b00cca9b059cf199b5e5ad8eb8
props: 10854 444 111 0 d4514082fc7e52be026d3360dec4dcb0
cpath: /trunk/common/tile.c
copyroot: 0 /

id: 2ll.0.r14418/217507
type: file
pred: 2ll.0.r14386/20314
count: 52
text: 14418 49829 213 8030 a453013f13e563e08ee93f2d1aa26550
props: 10836 12026 111 0 18cdb9becb11c47631b7a093e907200c
cpath: /trunk/common/fc_types.h
copyroot: 0 /

id: 45.0.r14418/217742
type: file
pred: 45.0.r14415/77781
count: 219
text: 14418 56435 119 36343 b036e01334d1ceb9ecc7ed3a9534966d
props: 11057 32005 112 0 5a3876431ad0faf061b096a2484d7aad
cpath: /trunk/common/player.c
copyroot: 0 /

id: 3u.0.r14418/217975
type: file
pred: 3u.0.r14415/78013
count: 284
text: 14418 64042 1997 21335 94260b92c1f9e0e0d7cfcb6b99f0f3f4
props: 11041 20516 112 0 779057fa36f350a13e5c75663a7074d1
cpath: /trunk/common/game.c
copyroot: 0 /

id: 3v.0.r14418/218207
type: file
pred: 3v.0.r14386/20776
count: 221
text: 14418 70570 20 10746 6b4b04a6c79aeadeb4675e2ad2c603d2
props: 11057 32714 112 0 2cf57fb6d11b8ba51814c6d419f0189e
cpath: /trunk/common/game.h
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 23
file 5h.0.r13948/126380
K 6
aicore
V 22
dir 18t.0.r14415/77097
K 6
base.c
V 24
file 3jw.0.r13948/120124
K 6
base.h
V 23
file 3jx.0.r13193/15954
K 8
capstr.c
V 21
file dv.0.r12017/6110
K 8
capstr.h
V 21
file dw.0.r1356/11833
K 6
city.c
V 21
file q.0.r14415/75577
K 6
city.h
V 22
file 3q.0.r14415/75806
K 8
combat.c
V 22
file wp.0.r14205/23327
K 8
combat.h
V 21
file wq.0.r12783/4096
K 12
connection.c
V 22
file un.0.r14371/59649
K 12
connection.h
V 21
file uo.0.r11775/7278
K 8
dataio.c
V 23
file 15r.0.r14371/58128
K 8
dataio.h
V 23
file 15s.0.r10480/10050
K 11
diptreaty.c
V 23
file 3r.0.r14208/149481
K 11
diptreaty.h
V 22
file 3s.0.r13567/34454
K 9
effects.c
V 23
file 2eo.0.r14135/18219
K 9
effects.h
V 23
file 2ep.0.r13588/11506
K 8
events.c
V 23
file 33h.0.r14390/21881
K 8
events.h
V 22
file 3t.0.r14390/22109
K 10
fc_types.h
V 24
file 2ll.0.r14418/217507
K 6
game.c
V 23
file 3u.0.r14418/217975
K 6
game.h
V 23
file 3v.0.r14418/218207
K 19
generate_packets.py
V 23
file 2f4.0.r14371/59411
K 12
government.c
V 22
file he.0.r13247/25540
K 12
government.h
V 22
file hf.0.r13136/24006
K 6
idex.c
V 23
file qo.0.r14208/152623
K 6
idex.h
V 21
file qp.0.r8119/15235
K 13
improvement.c
V 23
file vb.0.r13297/433063
K 13
improvement.h
V 23
file vc.0.r13297/433301
K 5
map.c
V 21
file r.0.r14055/29370
K 5
map.h
V 23
file 41.0.r13948/125912
K 10
movement.c
V 24
file 2xv.0.r13948/123286
K 10
movement.h
V 21
file 2xw.0.r12837/901
K 8
nation.c
V 22
file il.0.r14269/10568
K 8
nation.h
V 23
file im.0.r14208/152852
K 9
packets.c
V 22
file 43.0.r14371/59883
K 11
packets.def
V 23
file 2f5.0.r14222/37181
K 9
packets.h
V 22
file 44.0.r14143/60529
K 8
player.c
V 23
file 45.0.r14418/217742
K 8
player.h
V 22
file 46.0.r14222/37650
K 14
requirements.c
V 23
file 2wq.0.r14259/12902
K 14
requirements.h
V 23
file 2wr.0.r13588/11976
K 11
spaceship.c
V 20
file 98.0.r9977/2632
K 11
spaceship.h
V 20
file 99.0.r9977/2979
K 12
specialist.c
V 23
file 33f.0.r13169/67171
K 12
specialist.h
V 23
file 33g.0.r13169/67406
K 6
team.c
V 23
file 33i.0.r14259/12675
K 6
team.h
V 23
file 33j.0.r13136/23073
K 6
tech.c
V 21
file t.0.r14259/12450
K 6
tech.h
V 22
file u.0.r13297/434239
K 9
terrain.c
V 23
file 2fp.0.r14055/28209
K 9
terrain.h
V 23
file qs.0.r13948/124221
K 6
tile.c
V 24
file 2ys.0.r14418/217276
K 6
tile.h
V 23
file 2yt.0.r14415/77553
K 6
unit.c
V 21
file v.0.r14386/19405
K 6
unit.h
V 22
file 48.0.r14386/19630
K 10
unitlist.c
V 24
file 39m.0.r13133/225391
K 10
unitlist.h
V 23
file 39n.0.r13906/18659
K 10
unittype.c
V 23
file v9.0.r13297/433764
K 10
unittype.h
V 23
file va.0.r13297/434002
K 9
version.c
V 22
file oe.0.r14376/60649
K 9
version.h
V 21
file e7.0.r13518/7887
K 8
vision.c
V 23
file 4dk.0.r14392/20573
K 8
vision.h
V 23
file 4dl.0.r14403/36845
K 10
worklist.c
V 23
file o8.0.r13297/437651
K 10
worklist.h
V 23
file o9.0.r13297/438357
END
ENDREP
id: p.0.r14418/221317
type: dir
pred: p.0.r14415/81118
count: 2408
text: 14418 218437 2867 2867 93e4824db2ef61ce4ad813302194ec39
props: 12883 2571 96 0 2763e13ff5d021346ae24ff6c9ced232
cpath: /trunk/common
copyroot: 0 /

id: 2m5.0.r14418/221538
type: file
pred: 2m5.0.r14376/66390
count: 37
text: 14418 76997 41 13240 e94df5f85bfae40ad4c20badaf04e754
props: 10836 16751 111 0 2a5912525b098cb46a1301ee940f7617
cpath: /trunk/manual/civmanual.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 22
file 2m4.0.r14374/6455
K 11
civmanual.c
V 24
file 2m5.0.r14418/221538
END
ENDREP
id: 2m2.0.r14418/221883
type: dir
pred: 2m2.0.r14376/66734
count: 50
text: 14418 221774 96 96 0eaead6f9bfd4a68e6db810ff2db7080
props: 8143 8148 62 0 2b9cf7a0db52b94110accde14413565f
cpath: /trunk/manual
copyroot: 0 /

id: zj.0.r14418/222101
type: file
pred: zj.0.r14415/83750
count: 85
text: 14418 70617 58 19861 618f56dc3b243f8d5e05dbdba69510eb
props: 11025 295 111 0 995497afc7013c9f20b8d3ebef449f37
cpath: /trunk/client/agents/cma_core.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 22
file zg.0.r13602/20434
K 8
agents.c
V 22
file zh.0.r14371/66075
K 8
agents.h
V 22
file zi.0.r8387/119237
K 10
cma_core.c
V 23
file zj.0.r14418/222101
K 10
cma_core.h
V 20
file zk.0.r8132/2370
K 9
cma_fec.c
V 22
file zl.0.r14143/68718
K 9
cma_fec.h
V 20
file zm.0.r8132/1669
K 5
sha.c
V 23
file 2fy.0.r14269/13890
K 5
sha.h
V 23
file 2fz.0.r9577/101433
END
ENDREP
id: zf.0.r14418/222730
type: dir
pred: zf.0.r14415/84378
count: 142
text: 14418 222339 378 378 431bf03416a828e1538cb940fbaef90a
props: 11108 11608 65 0 c67827893bff2f279fa7f0439c4cba47
cpath: /trunk/client/agents
copyroot: 0 /

id: 2ym.0.r14418/222958
type: file
pred: 2ym.0.r14067/239
count: 27
text: 14418 56583 1110 35222 a89fa12ebaf1e66b22b10f21f3d1ba58
props: 11057 36702 111 0 5396249b3009eb64cd90e5da0b7a56fa
cpath: /trunk/client/reqtree.c
copyroot: 0 /

id: z4.0.r14418/223192
type: file
pred: z4.0.r14259/16234
count: 105
text: 14418 116098 100 31019 99fe023e4973f57fc5ecfe677be8c5da
props: 11067 4204 111 0 32cf26490c5995022c752556481ff094
cpath: /trunk/client/citydlg_common.c
copyroot: 0 /

id: 2yk.0.r14418/223433
type: file
pred: 2yk.0.r14143/70050
count: 22
text: 14418 60828 176 15995 8fb0720896b88ae461560156f08d62ce
props: 11057 37417 111 0 df9f31216c5039327c376b7fe82756f5
cpath: /trunk/client/overview_common.c
copyroot: 0 /

id: gz.0.r14418/223676
type: file
pred: gz.0.r14143/70292
count: 226
text: 14418 61033 989 89800 5da4ae89344ca9c045533186a6379bb3
props: 11088 7720 112 0 89a05fc93c37a832d4b63085dac12c4b
cpath: /trunk/client/control.c
copyroot: 0 /

id: zy.0.r14418/223909
type: file
pred: zy.0.r14356/406
count: 162
text: 14418 133356 5014 93293 2c7ab3032cbf059815f92d5fc3aa82f2
props: 11072 618 112 0 0564c5503f2d15442a967c72794b21e8
cpath: /trunk/client/gui-gtk-2.0/citydlg.c
copyroot: 0 /

id: 10e.0.r14418/224153
type: file
pred: 10e.0.r14208/162981
count: 21
text: 14418 142783 45 7923 91a04ce8424ddddd5c83a2b2409c3b90
props: 10534 1625 111 0 2a5912525b098cb46a1301ee940f7617
cpath: /trunk/client/gui-gtk-2.0/gotodlg.c
copyroot: 0 /

id: 10x.0.r14418/224399
type: file
pred: 10x.0.r14172/60570
count: 189
text: 14418 159141 264 25296 b745746d11a8c8209078deb166d4d0b3
props: 11084 1701 112 0 86d6a13b4b5d042ef40af0a2a7a26786
cpath: /trunk/client/gui-gtk-2.0/mapview.c
copyroot: 0 /

id: 118.0.r14418/224647
type: file
pred: 118.0.r14226/991
count: 119
text: 14418 88185 1340 53229 f7f8d51928b77bbf26c379687a1d42af
props: 11057 38502 111 0 89e24921275908e1dbda216a065c4859
cpath: /trunk/client/gui-gtk-2.0/repodlgs.c
copyroot: 0 /

id: 10k.0.r14418/224895
type: file
pred: 10k.0.r14376/68277
count: 185
text: 14418 112739 137 60837 d7162d214aa579884fb4518df8888717
props: 11057 38870 112 0 ec3aa248409009be6c82cab2c7e95ef5
cpath: /trunk/client/gui-gtk-2.0/gui_main.c
copyroot: 0 /

id: 2pi.0.r14418/225145
type: file
pred: 2pi.0.r14222/43855
count: 66
text: 14418 51627 373 82060 612b70797bef3fd0e783bf01c4f3118e
props: 11100 16432 111 0 622f1432038f91cce287c1d90e4f7964
cpath: /trunk/client/gui-gtk-2.0/pages.c
copyroot: 0 /

id: 10z.0.r14418/225390
type: file
pred: 10z.0.r14166/9382
count: 108
text: 14418 116227 1120 54282 866fc188ec846d0f36b7a68c55406e13
props: 11057 39977 111 0 05d0c9433d86d9823b0e8b2536eb2299
cpath: /trunk/client/gui-gtk-2.0/menu.c
copyroot: 0 /

id: 100.0.r14418/225636
type: file
pred: 100.0.r14102/5289
count: 90
text: 14418 63743 273 52159 b134e94ab798de6d0c3564aad7f819fd
props: 11057 40343 111 0 9323cb943074f1605bbe84192873bd2e
cpath: /trunk/client/gui-gtk-2.0/cityrep.c
copyroot: 0 /

id: 108.0.r14418/225882
type: file
pred: 108.0.r14208/164466
count: 144
text: 14418 66067 1923 42052 1bbc7691b97394c831867cefd26918ba
props: 11088 8070 112 0 858133ad234580a5fc7c24a791c3b702
cpath: /trunk/client/gui-gtk-2.0/dialogs.c
copyroot: 0 /

id: 36n.0.r14418/226131
type: file
pred: 36n.0.r14208/164712
count: 15
text: 14418 70844 468 24722 448d0dbb7cfaece2c3ae0a0be7adee87
props: 11088 8800 110 0 94a2a96823d3c54fff31bdd51de17982
cpath: /trunk/client/gui-gtk-2.0/diplomat_dialog.c
copyroot: 0 /

id: 10a.0.r14418/226386
type: file
pred: 10a.0.r14208/164964
count: 46
text: 14418 132855 471 28139 f134a32a012d78053829b348f5d79806
props: 11093 473 111 0 7a0697bf766451f41e947e71ce1310bc
cpath: /trunk/client/gui-gtk-2.0/diplodlg.c
copyroot: 0 /

id: 10u.0.r14418/226634
type: file
pred: 10u.0.r14259/16474
count: 32
text: 14418 144165 10300 12260 fa4c8d1b5b3de9075007dd05e816a40f
props: 11054 96 111 0 0b146d6d431c2ad00452618c43381276
cpath: /trunk/client/gui-gtk-2.0/inteldlg.c
copyroot: 0 /

id: 10q.0.r14418/226882
type: file
pred: 10q.0.r14386/26273
count: 83
text: 14418 87665 492 43661 9a5f3e1300a68f89e5158a82c566c236
props: 10865 34829 111 0 a3a3251698e05efa35962766e5c7e5c1
cpath: /trunk/client/gui-gtk-2.0/helpdlg.c
copyroot: 0 /

id: 115.0.r14418/227129
type: file
pred: 115.0.r14208/165701
count: 84
text: 14418 35138 836 27989 72e0db16d03752862960ce8ebd6b7f38
props: 11057 41078 111 0 3f70303ff9ea148b5e232db96a904e98
cpath: /trunk/client/gui-gtk-2.0/plrdlg.c
copyroot: 0 /

id: 11c.0.r14418/227376
type: file
pred: 11c.0.r14208/165946
count: 22
text: 14418 59235 139 8491 6f72a202ec27acd36f7fcff5250d5a83
props: 10731 5970 111 0 df9f31216c5039327c376b7fe82756f5
cpath: /trunk/client/gui-gtk-2.0/spaceshipdlg.c
copyroot: 0 /

id: 11e.0.r14418/227627
type: file
pred: 11e.0.r13616/2081
count: 61
text: 14418 117616 85 41627 fca24f0c1fb61ec1fdb59a3fe31c741f
props: 11057 41445 111 0 9c2dbf68c7baabdec873d497eccc2dc6
cpath: /trunk/client/gui-gtk-2.0/wldlg.c
copyroot: 0 /

id: 10d.0.r14418/227871
type: file
pred: 10d.0.r14226/1234
count: 34
text: 14418 68560 811 17995 07e3211f6b422c42fdfae5e731aaef5d
props: 11057 41811 111 0 b4233197920770c602c29330b7f7c623
cpath: /trunk/client/gui-gtk-2.0/gamedlgs.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 22
file zu.0.r13602/21290
K 8
canvas.c
V 23
file 2y6.0.r10518/13194
K 8
canvas.h
V 23
file 2y7.0.r10096/14437
K 16
caravan_dialog.c
V 24
file 376.0.r14208/163721
K 10
chatline.c
V 22
file zw.0.r9577/108991
K 10
chatline.h
V 22
file zx.0.r9577/109355
K 15
choice_dialog.c
V 23
file 377.0.r13481/22903
K 15
choice_dialog.h
V 23
file 378.0.r12670/99360
K 9
citydlg.c
V 23
file zy.0.r14418/223909
K 9
citydlg.h
V 20
file zz.0.r5493/6351
K 9
cityrep.c
V 24
file 100.0.r14418/225636
K 9
cityrep.h
V 22
file 101.0.r9098/11480
K 8
cma_fe.c
V 22
file 102.0.r11771/9226
K 8
cma_fe.h
V 23
file 103.0.r10181/13675
K 8
colors.c
V 22
file 104.0.r10458/4290
K 8
colors.h
V 22
file 105.0.r10458/4652
K 12
connectdlg.c
V 22
file 106.0.r10804/2737
K 12
connectdlg.h
V 21
file 107.0.r7580/6878
K 9
dialogs.c
V 24
file 108.0.r14418/225882
K 9
dialogs.h
V 22
file 109.0.r11212/7101
K 10
diplodlg.c
V 24
file 10a.0.r14418/226386
K 10
diplodlg.h
V 23
file 10b.0.r9577/108261
K 17
diplomat_dialog.c
V 24
file 36n.0.r14418/226131
K 9
editdlg.c
V 24
file 3bi.0.r14208/164219
K 9
editdlg.h
V 23
file 3bj.0.r12670/98777
K 9
finddlg.c
V 24
file 10c.0.r14208/165455
K 9
finddlg.h
V 22
file 2d0.0.r5989/22356
K 10
gamedlgs.c
V 24
file 10d.0.r14418/227871
K 9
gotodlg.c
V 24
file 10e.0.r14418/224153
K 9
gotodlg.h
V 23
file 10f.0.r4313/263426
K 10
graphics.c
V 23
file 10g.0.r11337/79662
K 10
graphics.h
V 23
file 10h.0.r11337/80150
K 12
gtkpixcomm.c
V 22
file 10i.0.r10800/1239
K 12
gtkpixcomm.h
V 22
file 10j.0.r10800/1606
K 10
gui_main.c
V 24
file 10k.0.r14418/224895
K 10
gui_main.h
V 22
file 10l.0.r14166/8901
K 11
gui_stuff.c
V 21
file 10m.0.r14214/537
K 11
gui_stuff.h
V 22
file 10n.0.r11771/8983
K 11
happiness.c
V 22
file 10o.0.r14285/4172
K 11
happiness.h
V 23
file 10p.0.r9577/106064
K 9
helpdlg.c
V 24
file 10q.0.r14418/226882
K 9
helpdlg.h
V 23
file 10r.0.r4313/267882
K 10
inputdlg.c
V 20
file 10s.0.r8860/225
K 10
inputdlg.h
V 21
file 10t.0.r7580/3991
K 10
inteldlg.c
V 24
file 10u.0.r14418/226634
K 10
inteldlg.h
V 23
file 2d1.0.r9577/108626
K 9
mapctrl.c
V 23
file 10v.0.r14156/10790
K 9
mapctrl.h
V 23
file 10w.0.r14156/11032
K 9
mapview.c
V 24
file 10x.0.r14418/224399
K 9
mapview.h
V 23
file 10y.0.r12881/17128
K 6
menu.c
V 24
file 10z.0.r14418/225390
K 6
menu.h
V 22
file 110.0.r4315/16581
K 12
messagedlg.c
V 23
file 111.0.r11771/10924
K 12
messagedlg.h
V 22
file 2d2.0.r5989/22693
K 12
messagewin.c
V 22
file 112.0.r14102/4804
K 12
messagewin.h
V 23
file 113.0.r10108/19424
K 11
optiondlg.h
V 23
file 114.0.r4313/264106
K 7
pages.c
V 24
file 2pi.0.r14418/225145
K 7
pages.h
V 22
file 2pj.0.r11863/8922
K 8
plrdlg.c
V 24
file 115.0.r14418/227129
K 8
plrdlg.h
V 22
file 116.0.r10803/7069
K 10
ratesdlg.h
V 22
file 2d3.0.r5989/22018
K 4
rc2c
V 23
file 117.0.r4313/274431
K 10
repodlgs.c
V 24
file 118.0.r14418/224647
K 10
repodlgs.h
V 21
file 119.0.r9098/9312
K 11
resources.c
V 23
file 11a.0.r5390/112550
K 11
resources.h
V 23
file 11b.0.r4313/267539
K 14
spaceshipdlg.c
V 24
file 11c.0.r14418/227376
K 14
spaceshipdlg.h
V 23
file 11d.0.r9577/110090
K 8
sprite.c
V 23
file 2y8.0.r14376/68033
K 8
sprite.h
V 23
file 2y9.0.r10141/29270
K 11
theme_dlg.c
V 23
file 47d.0.r13967/56448
K 8
themes.c
V 23
file 34x.0.r13227/13852
K 13
tileset_dlg.c
V 23
file 45i.0.r13967/56740
K 7
wldlg.c
V 24
file 11e.0.r14418/227627
K 7
wldlg.h
V 21
file 11f.0.r7682/2202
END
ENDREP
id: zs.0.r14418/231494
type: dir
pred: zs.0.r14386/29875
count: 1048
text: 14418 228118 3363 3363 f87fcc26874c15f51cfc5bdfec3e0dce
props: 11108 11912 79 0 480bb3268560e84c2d6c8376c422c65e
cpath: /trunk/client/gui-gtk-2.0
copyroot: 0 /

id: 2g3.0.r14418/231730
type: file
pred: 2g3.0.r14415/84604
count: 85
text: 14418 128481 2907 43108 93144f90a02e2122f4194f1fae03f991
props: 11057 45424 111 0 93646be3752db5a3cd8e77177837d494
cpath: /trunk/client/text.c
copyroot: 0 /

id: 11i.0.r14418/231964
type: file
pred: 11i.0.r14163/21526
count: 43
text: 14418 70049 241 13141 5bbc093616dfdcf1b92b017711be68c7
props: 11057 45776 111 0 9b377c828b4ca1827963af8e19878787
cpath: /trunk/client/repodlgs_common.c
copyroot: 0 /

id: 9w.0.r14418/232207
type: file
pred: 9w.0.r14208/170038
count: 156
text: 14418 77067 4198 78048 548187c272c85cc9087036e0e938ec4e
props: 10820 1319 112 0 e0e21d00fa120c81b59fd1c92d742949
cpath: /trunk/client/gui-xaw/citydlg.c
copyroot: 0 /

id: ab.0.r14418/232450
type: file
pred: ab.0.r14208/170280
count: 32
text: 14418 81296 4535 10275 9f10cac389623897f06b2c4f9d5cd6cf
props: 10536 6353 111 0 eaeaff8c6ba56cfe19b921c33649c016
cpath: /trunk/client/gui-xaw/gotodlg.c
copyroot: 0 /

id: nt.0.r14418/232692
type: file
pred: nt.0.r13221/16529
count: 33
text: 14418 87540 98 33929 1ffc365c6ccbdf64e5fc5023b2f7219e
props: 10957 5214 111 0 b4233197920770c602c29330b7f7c623
cpath: /trunk/client/gui-xaw/actions.c
copyroot: 0 /

id: al.0.r14418/232931
type: file
pred: al.0.r13913/54451
count: 216
text: 14418 91176 1408 28095 db32a7e9eddb47ff0c535f7ca938ac82
props: 11084 5307 112 0 a976793c1b86634c19e93e3af962ba38
cpath: /trunk/client/gui-xaw/mapview.c
copyroot: 0 /

id: ay.0.r14418/233173
type: file
pred: ay.0.r14208/170520
count: 95
text: 14418 71341 1351 47822 95f492806145ea8ccc6a97811c684158
props: 10957 5571 111 0 04c7a6fe9bf3a5db3539a62041388438
cpath: /trunk/client/gui-xaw/repodlgs.c
copyroot: 0 /

id: bm.0.r14418/233416
type: file
pred: bm.0.r14376/72114
count: 136
text: 14418 75988 553 33649 c663fda4882dd22d09ad8e84e6440580
props: 10925 3549 112 0 177404f64081975a31585790400154e7
cpath: /trunk/client/gui-xaw/gui_main.c
copyroot: 0 /

id: 2qm.0.r14418/233658
type: file
pred: 2qm.0.r14208/170761
count: 11
text: 14418 62051 90 8683 9275384e0f95ca0438925ba4b337a67e
props: 10598 2663 110 0 fdfdab56f53d2388a66f6a5ce0985f95
cpath: /trunk/client/gui-xaw/pages.c
copyroot: 0 /

id: an.0.r14418/233897
type: file
pred: an.0.r14180/32335
count: 97
text: 14418 89767 352 38561 3608ebc56818e22489cd78a3c9bc7d92
props: 10882 2348 111 0 014f4f31d8fa52a1c17e04bfb7ac7579
cpath: /trunk/client/gui-xaw/menu.c
copyroot: 0 /

id: 9y.0.r14418/234134
type: file
pred: 9y.0.r14208/170999
count: 70
text: 14418 132651 174 33132 6ce7eb6a01dfa5a706010246c3b4c0fb
props: 10852 5556 111 0 ae073b1a8624f4e72ab3bef202bf2f05
cpath: /trunk/client/gui-xaw/cityrep.c
copyroot: 0 /

id: a6.0.r14418/234376
type: file
pred: a6.0.r14208/171240
count: 138
text: 14418 142858 179 46856 4563238a1385cdf07da1cefb36400cb0
props: 10957 6289 112 0 ac8a0c5808e41faff6290e5ee8a4284e
cpath: /trunk/client/gui-xaw/dialogs.c
copyroot: 0 /

id: 37p.0.r14418/234619
type: file
pred: 37p.0.r14208/171482
count: 13
text: 14418 154961 455 26905 6230aa0746d9fb80c01d7d203598db3d
props: 12670 103088 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/client/gui-xaw/diplomat_dialog.c
copyroot: 0 /

id: a8.0.r14418/234872
type: file
pred: a8.0.r14208/171733
count: 49
text: 14418 117727 254 31118 68eee1956c4c2518d1fe173bd379a0df
props: 10442 1972 111 0 8ba011ca1ef4e408ab91a853a48e15eb
cpath: /trunk/client/gui-xaw/diplodlg.c
copyroot: 0 /

id: ad.0.r14418/235115
type: file
pred: ad.0.r14376/72356
count: 76
text: 14418 121677 462 17837 273b00d5e621311899fe828852f465ce
props: 10789 5855 111 0 3d8b904835b9008e2a0a4d4db6ee628d
cpath: /trunk/client/gui-xaw/graphics.c
copyroot: 0 /

id: ai.0.r14418/235357
type: file
pred: ai.0.r14259/20555
count: 39
text: 14418 128194 259 16479 3d8edffabd67aee6aedf19d7040c7dd2
props: 10696 129 111 0 23629f8214b2309975780a037517e920
cpath: /trunk/client/gui-xaw/inteldlg.c
copyroot: 0 /

id: ax.0.r14418/235598
type: file
pred: ax.0.r13046/134049
count: 24
text: 14418 131418 724 11157 722ac2631c025ce427b72a1a147032f7
props: 10442 2333 111 0 5515c59917848b493fbf45ffb42836b3
cpath: /trunk/client/gui-xaw/ratesdlg.c
copyroot: 0 /

id: af.0.r14418/235841
type: file
pred: af.0.r14259/20794
count: 85
text: 14418 50553 383 37233 2c11c9ef75d4f6163e757388ecd13a63
props: 10882 3426 111 0 10d822456e37f81dabb45dad0c15b842
cpath: /trunk/client/gui-xaw/helpdlg.c
copyroot: 0 /

id: aw.0.r14418/236081
type: file
pred: aw.0.r14208/172457
count: 50
text: 14418 73499 1202 13077 70209408c121bed3ac9f8fbd2de8dcab
props: 10442 2694 111 0 77af0ec85c332e0d4fd7e7ef86a518fd
cpath: /trunk/client/gui-xaw/plrdlg.c
copyroot: 0 /

id: b2.0.r14418/236322
type: file
pred: b2.0.r14208/172696
count: 28
text: 14418 34942 169 9640 9704c193b262f8fb60dbd902b4d22b92
props: 10442 3053 111 0 7c94b769c2c0998a2747d858cb1e860f
cpath: /trunk/client/gui-xaw/spaceshipdlg.c
copyroot: 0 /

id: o5.0.r14418/236567
type: file
pred: o5.0.r13297/460928
count: 35
text: 14418 132328 200 43637 fb63c9cd86872a2da58dd541a7cbd01f
props: 10820 2037 111 0 9b377c828b4ca1827963af8e19878787
cpath: /trunk/client/gui-xaw/wldlg.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 22
file bq.0.r13602/25128
K 9
actions.c
V 23
file nt.0.r14418/232692
K 9
actions.h
V 21
file nu.0.r1888/21779
K 4
ad2c
V 22
file 9q.0.r1186/243967
K 8
canvas.c
V 21
file 9r.0.r3959/87925
K 8
canvas.h
V 20
file 9s.0.r4034/9073
K 9
canvasp.h
V 20
file 9t.0.r4034/8365
K 10
chatline.c
V 20
file 9u.0.r9160/4848
K 10
chatline.h
V 21
file 9v.0.r2187/10435
K 9
citydlg.c
V 23
file 9w.0.r14418/232207
K 9
citydlg.h
V 20
file 9x.0.r2187/8309
K 9
cityrep.c
V 23
file 9y.0.r14418/234134
K 9
cityrep.h
V 20
file g1.0.r5489/4916
K 8
cma_fe.c
V 21
file 2ei.0.r13148/376
K 8
cma_fe.h
V 21
file 2ej.0.r6908/4433
K 8
colors.c
V 21
file a2.0.r10532/8601
K 8
colors.h
V 21
file a3.0.r10532/9312
K 12
connectdlg.c
V 21
file a4.0.r11187/6858
K 12
connectdlg.h
V 21
file a5.0.r2187/12228
K 9
dialogs.c
V 23
file a6.0.r14418/234376
K 9
dialogs.h
V 21
file a7.0.r10882/3191
K 10
diplodlg.c
V 23
file a8.0.r14418/234872
K 10
diplodlg.h
V 20
file a9.0.r2187/7955
K 17
diplomat_dialog.c
V 24
file 37p.0.r14418/234619
K 9
finddlg.c
V 23
file aa.0.r14208/172216
K 9
finddlg.h
V 22
file 2dk.0.r5989/31562
K 9
gotodlg.c
V 23
file ab.0.r14418/232450
K 9
gotodlg.h
V 21
file ac.0.r1888/21069
K 10
graphics.c
V 23
file ad.0.r14418/235115
K 10
graphics.h
V 21
file ae.0.r10789/6338
K 10
gui_main.c
V 23
file bm.0.r14418/233416
K 10
gui_main.h
V 22
file bn.0.r11408/10219
K 11
gui_stuff.c
V 22
file bo.0.r6129/126486
K 11
gui_stuff.h
V 21
file bp.0.r4964/56392
K 9
helpdlg.c
V 23
file af.0.r14418/235841
K 9
helpdlg.h
V 21
file g2.0.r1888/23188
K 10
inputdlg.c
V 20
file ag.0.r7586/1961
K 10
inputdlg.h
V 20
file ah.0.r7586/2315
K 10
inteldlg.c
V 23
file ai.0.r14418/235357
K 10
inteldlg.h
V 23
file 2dl.0.r10108/22972
K 9
mapctrl.c
V 21
file aj.0.r10532/8954
K 9
mapctrl.h
V 21
file ak.0.r10532/9667
K 9
mapview.c
V 23
file al.0.r14418/232931
K 9
mapview.h
V 22
file am.0.r13913/54689
K 6
menu.c
V 23
file an.0.r14418/233897
K 6
menu.h
V 21
file ao.0.r12091/4447
K 12
messagedlg.c
V 22
file ap.0.r10532/10389
K 12
messagedlg.h
V 22
file 2dm.0.r5989/31896
K 12
messagewin.c
V 21
file aq.0.r9098/15891
K 12
messagewin.h
V 20
file g3.0.r5489/3851
K 11
optiondlg.c
V 21
file ar.0.r11793/1242
K 11
optiondlg.h
V 21
file as.0.r1432/23133
K 7
pages.c
V 24
file 2qm.0.r14418/233658
K 7
pages.h
V 22
file 2qn.0.r10536/7909
K 9
pixcomm.c
V 21
file at.0.r3145/18494
K 9
pixcomm.h
V 20
file au.0.r4034/9777
K 10
pixcommp.h
V 20
file av.0.r4034/8719
K 8
plrdlg.c
V 23
file aw.0.r14418/236081
K 8
plrdlg.h
V 20
file g4.0.r5489/3140
K 10
ratesdlg.c
V 23
file ax.0.r14418/235598
K 10
ratesdlg.h
V 22
file 2dn.0.r5989/31227
K 10
repodlgs.c
V 23
file ay.0.r14418/233173
K 10
repodlgs.h
V 21
file az.0.r10957/6056
K 11
resources.c
V 20
file b0.0.r9310/2224
K 11
resources.h
V 21
file b1.0.r3145/14204
K 14
spaceshipdlg.c
V 23
file b2.0.r14418/236322
K 14
spaceshipdlg.h
V 21
file b3.0.r2187/11152
K 8
themes.c
V 23
file 350.0.r10945/14451
K 7
wldlg.c
V 23
file o5.0.r14418/236567
K 7
wldlg.h
V 22
file o6.0.r10181/18680
END
ENDREP
id: 9o.0.r14418/239810
type: dir
pred: 9o.0.r14376/75593
count: 846
text: 14418 236807 2990 2990 f06123d180a2498bc224636dd94eb3a0
props: 11108 12237 78 0 a27c61ac5fddbd709df8c1876129f940
cpath: /trunk/client/gui-xaw
copyroot: 0 /

id: xm.0.r14418/240041
type: file
pred: xm.0.r14208/176170
count: 120
text: 14418 26147 6847 63227 2d14d97847f461981dc20209fdc7116e
props: 10989 3245 112 0 e7136c353c3addf3d4cc60888f1c16d6
cpath: /trunk/client/gui-win32/citydlg.c
copyroot: 0 /

id: xz.0.r14418/240286
type: file
pred: xz.0.r14208/176412
count: 16
text: 14418 20266 5853 5839 26c90412d41835748fe7c11a544f77af
props: 10534 8699 111 0 5396249b3009eb64cd90e5da0b7a56fa
cpath: /trunk/client/gui-win32/gotodlg.c
copyroot: 0 /

id: ye.0.r14418/240529
type: file
pred: ye.0.r14172/70513
count: 167
text: 14418 50072 454 18667 a94950144356bad57a7391a542f2efe8
props: 11084 8847 112 0 64942f9576ccbd6a94350596bbb7a5cc
cpath: /trunk/client/gui-win32/mapview.c
copyroot: 0 /

id: yq.0.r14418/240772
type: file
pred: yq.0.r14214/4379
count: 71
text: 14418 113835 1411 31410 a438606bfd97c7cc6228a08ae03db555
props: 10883 3315 111 0 93646be3752db5a3cd8e77177837d494
cpath: /trunk/client/gui-win32/repodlgs.c
copyroot: 0 /

id: yg.0.r14418/241016
type: file
pred: yg.0.r14336/578
count: 63
text: 14418 132169 133 39493 c1ba6813f567c1b249abd3723baa24dd
props: 10989 3605 111 0 d69121ee529fb8cb3643d711ec0f2158
cpath: /trunk/client/gui-win32/menu.c
copyroot: 0 /

id: xo.0.r14418/241254
type: file
pred: xo.0.r13948/146483
count: 44
text: 14418 72721 438 35845 b78c67d92082ed4d4abd3da6c8eb693d
props: 10839 2574 111 0 2e2357461112b5dbc5fe4daab6abde1a
cpath: /trunk/client/gui-win32/cityrep.c
copyroot: 0 /

id: xu.0.r14418/241497
type: file
pred: xu.0.r14208/176893
count: 98
text: 14418 74731 986 57021 756c0d6de5d7174988a6575f65d72129
props: 10989 3964 111 0 8264fa93116f43c430f41dcf0da62390
cpath: /trunk/client/gui-win32/dialogs.c
copyroot: 0 /

id: xw.0.r14418/241740
type: file
pred: xw.0.r14208/177135
count: 35
text: 14418 20107 134 25695 84360a6ee082d76e9454bc03bba9a956
props: 10411 156138 111 0 23629f8214b2309975780a037517e920
cpath: /trunk/client/gui-win32/diplodlg.c
copyroot: 0 /

id: yc.0.r14418/241986
type: file
pred: yc.0.r14141/36157
count: 47
text: 14418 90149 216 10711 c03c4f24bd71d456215fc36aa1f3c11d
props: 10387 23931 111 0 e9cbe3af5d5934f88ab895fd46902062
cpath: /trunk/client/gui-win32/mapctrl.c
copyroot: 0 /

id: yb.0.r14418/242229
type: file
pred: yb.0.r14259/24254
count: 23
text: 14418 34815 99 5849 e6e7fb379ac0d8df1ba0ced38cbd8432
props: 10736 12122 111 0 d4514082fc7e52be026d3360dec4dcb0
cpath: /trunk/client/gui-win32/inteldlg.c
copyroot: 0 /

id: yp.0.r14418/242471
type: file
pred: yp.0.r13046/138739
count: 12
text: 14418 36000 397 9847 4715767928ab0f03d1ee245dcdfa4630
props: 10989 4324 111 0 3d57169d64a739976bce7d2e578e29eb
cpath: /trunk/client/gui-win32/ratesdlg.c
copyroot: 0 /

id: y7.0.r14418/242714
type: file
pred: y7.0.r14259/24496
count: 60
text: 14418 115273 494 29960 31f16e1053e8a0803a0b02baf5647918
props: 10989 4683 111 0 fd48e7132065a890e4a210dc3646defe
cpath: /trunk/client/gui-win32/helpdlg.c
copyroot: 0 /

id: yn.0.r14418/242957
type: file
pred: yn.0.r14180/36276
count: 28
text: 14418 57718 1486 12240 2da398f1cbc63a7e5bf124175caf889f
props: 10427 5013 111 0 0b146d6d431c2ad00452618c43381276
cpath: /trunk/client/gui-win32/plrdlg.c
copyroot: 0 /

id: yt.0.r14418/243199
type: file
pred: yt.0.r14208/177860
count: 19
text: 14418 70704 45 7981 af07a901c36ce4c2599341f42dbc91a4
props: 10427 5374 111 0 433ca8234d38d2ba821c9aa09a03d731
cpath: /trunk/client/gui-win32/spaceshipdlg.c
copyroot: 0 /

id: xs.0.r14418/243445
type: file
pred: xs.0.r14222/47699
count: 49
text: 14418 73191 44 33748 2f50355def5ede1004a3578467f60a8f
props: 10884 2435 111 0 14533b38c2d22fb145a05b253c8fb2e8
cpath: /trunk/client/gui-win32/connectdlg.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 22
file nr.0.r13602/28588
K 8
canvas.c
V 21
file 2ya.0.r10482/217
K 8
canvas.h
V 22
file 2yb.0.r10131/2132
K 10
chatline.c
V 21
file xk.0.r7930/24198
K 10
chatline.h
V 20
file xl.0.r5785/7678
K 9
citydlg.c
V 23
file xm.0.r14418/240041
K 9
citydlg.h
V 19
file xn.0.r5671/865
K 9
cityrep.c
V 23
file xo.0.r14418/241254
K 9
cityrep.h
V 22
file xp.0.r3745/159022
K 8
cma_fe.c
V 21
file 2fu.0.r9591/3114
K 8
cma_fe.h
V 20
file 2fv.0.r7442/210
K 8
colors.c
V 21
file xq.0.r10461/1484
K 8
colors.h
V 21
file xr.0.r10461/1841
K 12
connectdlg.c
V 23
file xs.0.r14418/243445
K 12
connectdlg.h
V 20
file xt.0.r8331/7783
K 9
dialogs.c
V 23
file xu.0.r14418/241497
K 9
dialogs.h
V 21
file xv.0.r10883/4520
K 10
diplodlg.c
V 23
file xw.0.r14418/241740
K 10
diplodlg.h
V 22
file xx.0.r13481/26989
K 9
finddlg.c
V 23
file xy.0.r14208/177617
K 9
finddlg.h
V 22
file 2dg.0.r5989/39776
K 9
gotodlg.c
V 23
file xz.0.r14418/240286
K 9
gotodlg.h
V 20
file y0.0.r3786/3776
K 10
graphics.c
V 22
file y1.0.r14376/76062
K 10
graphics.h
V 21
file y2.0.r10294/2998
K 10
gui_main.c
V 22
file y3.0.r14376/75822
K 10
gui_main.h
V 20
file y4.0.r10222/314
K 11
gui_stuff.c
V 22
file y5.0.r13328/10611
K 11
gui_stuff.h
V 22
file y6.0.r13328/10851
K 11
happiness.c
V 21
file 137.0.r14336/341
K 11
happiness.h
V 23
file 138.0.r13481/26751
K 9
helpdlg.c
V 23
file y7.0.r14418/242714
K 9
helpdlg.h
V 22
file y8.0.r3745/150873
K 10
inputdlg.c
V 19
file y9.0.r8895/460
K 10
inputdlg.h
V 22
file ya.0.r3745/153242
K 10
inteldlg.c
V 23
file yb.0.r14418/242229
K 10
inteldlg.h
V 22
file 2dh.0.r5989/39102
K 9
mapctrl.c
V 23
file yc.0.r14418/241986
K 9
mapctrl.h
V 21
file yd.0.r6430/14685
K 9
mapview.c
V 23
file ye.0.r14418/240529
K 9
mapview.h
V 22
file yf.0.r13412/11359
K 6
menu.c
V 23
file yg.0.r14418/241016
K 6
menu.h
V 20
file yh.0.r5785/9458
K 12
messagedlg.c
V 22
file yi.0.r10488/20525
K 12
messagedlg.h
V 22
file 2di.0.r5989/40112
K 12
messagewin.c
V 21
file yj.0.r9098/24106
K 12
messagewin.h
V 22
file yk.0.r3745/155966
K 11
optiondlg.c
V 22
file yl.0.r13412/10878
K 11
optiondlg.h
V 21
file ym.0.r3959/96575
K 7
pages.c
V 23
file 2qk.0.r13412/11835
K 7
pages.h
V 22
file 2ql.0.r8639/12634
K 8
plrdlg.c
V 23
file yn.0.r14418/242957
K 8
plrdlg.h
V 20
file yo.0.r3847/6164
K 10
ratesdlg.c
V 23
file yp.0.r14418/242471
K 10
ratesdlg.h
V 22
file 2dj.0.r5989/39439
K 10
repodlgs.c
V 23
file yq.0.r14418/240772
K 10
repodlgs.h
V 22
file yr.0.r3745/151547
K 14
spaceshipdlg.c
V 23
file yt.0.r14418/243199
K 14
spaceshipdlg.h
V 20
file yu.0.r3778/5068
K 8
sprite.c
V 22
file 2yc.0.r10294/2273
K 8
sprite.h
V 23
file 2yd.0.r10141/44406
K 8
themes.c
V 23
file 34z.0.r10945/20562
K 7
wldlg.c
V 23
file yv.0.r13297/467606
K 7
wldlg.h
V 21
file yw.0.r12515/1620
END
ENDREP
id: np.0.r14418/246445
type: dir
pred: np.0.r14376/79047
count: 627
text: 14418 243689 2743 2743 9a416b121b49eef4698c8fe37e7879ce
props: 11108 12557 68 0 fbaef5f6348d6ae4b0cc177104ca4ad2
cpath: /trunk/client/gui-win32
copyroot: 0 /

id: n.0.r14418/246678
type: file
pred: n.0.r14415/84835
count: 639
text: 14418 155446 3665 102000 fdffa80e12e600616b4c56d72a2d7a0d
props: 11088 14698 112 0 2c9d3e41a2f20488aa9cdb8d740d094e
cpath: /trunk/client/packhand.c
copyroot: 0 /

id: 170.0.r14418/246914
type: file
pred: 170.0.r14208/181571
count: 123
text: 14418 52030 762 123546 b4e4f2d0b0acee46c3c7a4a6fc69379a
props: 10779 67589 111 0 515f6afa6448327e59cdac91d637f582
cpath: /trunk/client/gui-sdl/citydlg.c
copyroot: 0 /

id: 17f.0.r14418/247160
type: file
pred: 17f.0.r14208/181814
count: 43
text: 14418 51389 211 11248 111f4911eefa9e8332724bd9f4ad2e1e
props: 10534 12701 111 0 3d57169d64a739976bce7d2e578e29eb
cpath: /trunk/client/gui-sdl/gotodlg.c
copyroot: 0 /

id: 186.0.r14418/247404
type: file
pred: 186.0.r14376/79511
count: 167
text: 14418 59404 1395 39452 a3736a89aea968fef2e4a9a779578346
props: 10779 67955 111 0 1566ee949d8102994e5ce1bbf3530de9
cpath: /trunk/client/gui-sdl/mapview.c
copyroot: 0 /

id: 191.0.r14418/247649
type: file
pred: 191.0.r14376/79755
count: 52
text: 14418 118011 385 22818 54e581c087c0a7413b9061d810865ec4
props: 10141 49776 111 0 0b146d6d431c2ad00452618c43381276
cpath: /trunk/client/gui-sdl/gui_tilespec.c
copyroot: 0 /

id: 18i.0.r14418/247898
type: file
pred: 18i.0.r14208/182299
count: 107
text: 14418 122170 2145 110119 9cacf2162636e2d80541f8cf0d2ab287
props: 10779 68322 111 0 622f1432038f91cce287c1d90e4f7964
cpath: /trunk/client/gui-sdl/repodlgs.c
copyroot: 0 /

id: 17o.0.r14418/248147
type: file
pred: 17o.0.r14376/80242
count: 123
text: 14418 132559 63 33587 d302aa139b08fe30a63b074158290622
props: 10411 162763 111 0 93121dcfd7714818c8d46f9c51a886fa
cpath: /trunk/client/gui-sdl/gui_main.c
copyroot: 0 /

id: 188.0.r14418/248393
type: file
pred: 188.0.r14272/9710
count: 63
text: 14418 154874 60 42667 08a8de58a846cda80beba7b7727f1676
props: 10805 77668 111 0 18cdb9becb11c47631b7a093e907200c
cpath: /trunk/client/gui-sdl/menu.c
copyroot: 0 /

id: 172.0.r14418/248632
type: file
pred: 172.0.r14208/183278
count: 58
text: 14418 89550 191 38913 fc795588efa41e9d0cd2559a893775da
props: 10779 68689 111 0 df9f31216c5039327c376b7fe82756f5
cpath: /trunk/client/gui-sdl/cityrep.c
copyroot: 0 /

id: 17a.0.r14418/248876
type: file
pred: 17a.0.r14371/70871
count: 145
text: 14418 90557 590 98966 dcc2b9293bbbdcbae556bf1d28c1d565
props: 10805 78030 111 0 ae073b1a8624f4e72ab3bef202bf2f05
cpath: /trunk/client/gui-sdl/dialogs.c
copyroot: 0 /

id: 3bn.0.r14418/249120
type: file
pred: 3bn.0.r14208/183763
count: 32
text: 14418 92613 20097 43884 7d3bc66777ce48968b14141338ee3ef0
props: 12670 114091 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/client/gui-sdl/diplomat_dialog.c
copyroot: 0 /

id: 17c.0.r14418/249374
type: file
pred: 17c.0.r14208/184014
count: 51
text: 14418 50962 399 52046 4a7b0443ed22601d7347c1c1891da8e9
props: 10411 163500 111 0 433ca8234d38d2ba821c9aa09a03d731
cpath: /trunk/client/gui-sdl/diplodlg.c
copyroot: 0 /

id: 184.0.r14418/249620
type: file
pred: 184.0.r14272/10425
count: 95
text: 14418 115798 44 79106 353f43e452f876bb5efc784ae13fc89a
props: 9803 6307 111 0 4135f0dfb17a4d11b2424d95e27830f5
cpath: /trunk/client/gui-sdl/mapctrl.c
copyroot: 0 /

id: 183.0.r14418/249861
type: file
pred: 183.0.r14259/27947
count: 48
text: 14418 52820 3586 14076 e4bac442fec54841909f2bac080d61a2
props: 10411 163869 111 0 d4514082fc7e52be026d3360dec4dcb0
cpath: /trunk/client/gui-sdl/inteldlg.c
copyroot: 0 /

id: 17z.0.r14418/250107
type: file
pred: 17z.0.r14229/42610
count: 60
text: 14418 124345 3822 69741 b01af272a0929a2b494c9b24087897ef
props: 10411 164601 111 0 3d57169d64a739976bce7d2e578e29eb
cpath: /trunk/client/gui-sdl/helpdlg.c
copyroot: 0 /

id: 18f.0.r14418/250353
type: file
pred: 18f.0.r14272/10662
count: 49
text: 14418 70319 223 23918 9b5f50770c697b420955ca331ac60160
props: 10411 164967 111 0 28e613ef70fc8e4efe7ed7b15f74e6e7
cpath: /trunk/client/gui-sdl/plrdlg.c
copyroot: 0 /

id: 16y.0.r14418/250596
type: file
pred: 16y.0.r14120/187304
count: 47
text: 14418 70777 39 29639 a12b26eb65a1e2e4085ae26105b20bd9
props: 9030 114052 111 0 2a5912525b098cb46a1301ee940f7617
cpath: /trunk/client/gui-sdl/chatline.c
copyroot: 0 /

id: 18m.0.r14418/250840
type: file
pred: 18m.0.r14172/77111
count: 30
text: 14418 76571 94 7579 d7bf26ff406f45491b568b7440453221
props: 9803 7024 111 0 3d57169d64a739976bce7d2e578e29eb
cpath: /trunk/client/gui-sdl/spaceshipdlg.c
copyroot: 0 /

id: 18q.0.r14418/251084
type: file
pred: 18q.0.r14208/184746
count: 64
text: 14418 159434 54288 55333 68451db1a180dd5bd5be9defce889691
props: 10779 69053 111 0 433ca8234d38d2ba821c9aa09a03d731
cpath: /trunk/client/gui-sdl/wldlg.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 22
file 16u.0.r13687/1992
K 14
SDL_rotozoom.c
V 24
file 3jy.0.r12670/115301
K 14
SDL_rotozoom.h
V 24
file 3jz.0.r12670/115888
K 9
SDL_ttf.c
V 22
file 2dz.0.r13598/7332
K 9
SDL_ttf.h
V 22
file 2e0.0.r13598/7566
K 11
alphablit.c
V 23
file 3be.0.r13354/59832
K 8
canvas.c
V 23
file 39i.0.r13354/56191
K 8
canvas.h
V 23
file 39j.0.r13354/56918
K 16
caravan_dialog.c
V 24
file 3bp.0.r14208/182546
K 10
chatline.c
V 24
file 16y.0.r14418/250596
K 10
chatline.h
V 23
file 16z.0.r13795/17949
K 9
citydlg.c
V 24
file 170.0.r14418/246914
K 9
citydlg.h
V 23
file 171.0.r13354/55222
K 9
cityrep.c
V 24
file 172.0.r14418/248632
K 9
cityrep.h
V 22
file 173.0.r12769/2941
K 8
cma_fe.c
V 22
file 174.0.r14272/9947
K 8
cma_fe.h
V 23
file 175.0.r11361/43495
K 8
colors.c
V 23
file 176.0.r13354/62500
K 8
colors.h
V 22
file 177.0.r14075/4496
K 12
connectdlg.c
V 22
file 178.0.r14075/5211
K 12
connectdlg.h
V 23
file 179.0.r12349/45319
K 9
dialogs.c
V 24
file 17a.0.r14418/248876
K 9
dialogs.h
V 23
file 17b.0.r13354/61529
K 10
diplodlg.c
V 24
file 17c.0.r14418/249374
K 10
diplodlg.h
V 22
file 17d.0.r11584/2869
K 17
diplomat_dialog.c
V 24
file 3bn.0.r14418/249120
K 9
finddlg.c
V 24
file 17e.0.r14208/184503
K 9
finddlg.h
V 20
file 2d8.0.r5991/702
K 9
gotodlg.c
V 24
file 17f.0.r14418/247160
K 9
gotodlg.h
V 22
file 17g.0.r6515/58208
K 10
graphics.c
V 23
file 17h.0.r14376/81208
K 10
graphics.h
V 23
file 17i.0.r12611/13939
K 11
gui_iconv.c
V 20
file 17l.0.r14361/60
K 11
gui_iconv.h
V 23
file 17m.0.r13354/66657
K 8
gui_id.h
V 23
file 17n.0.r13857/56810
K 10
gui_main.c
V 24
file 17o.0.r14418/248147
K 10
gui_main.h
V 23
file 17p.0.r13354/59593
K 11
gui_mouse.c
V 23
file 3ca.0.r13354/59349
K 11
gui_mouse.h
V 24
file 3cb.0.r12670/112397
K 12
gui_string.c
V 22
file 17r.0.r13665/2840
K 12
gui_string.h
V 23
file 17s.0.r13481/30445
K 14
gui_tilespec.c
V 24
file 191.0.r14418/247649
K 14
gui_tilespec.h
V 23
file 192.0.r13913/62094
K 11
happiness.c
V 23
file 17x.0.r11361/41144
K 11
happiness.h
V 23
file 17y.0.r11361/41867
K 9
helpdlg.c
V 24
file 17z.0.r14418/250107
K 9
helpdlg.h
V 23
file 180.0.r11361/47416
K 10
inputdlg.c
V 23
file 181.0.r11361/47897
K 10
inputdlg.h
V 23
file 182.0.r5500/260641
K 10
inteldlg.c
V 24
file 183.0.r14418/249861
K 10
inteldlg.h
V 22
file 2d9.0.r11409/2687
K 9
mapctrl.c
V 24
file 184.0.r14418/249620
K 9
mapctrl.h
V 23
file 185.0.r13354/63700
K 9
mapview.c
V 24
file 186.0.r14418/247404
K 9
mapview.h
V 23
file 187.0.r13354/56676
K 6
menu.c
V 24
file 188.0.r14418/248393
K 6
menu.h
V 23
file 189.0.r13857/57045
K 12
messagedlg.c
V 23
file 18a.0.r11361/49350
K 12
messagedlg.h
V 22
file 2da.0.r5989/48394
K 12
messagewin.c
V 23
file 18b.0.r13354/60073
K 12
messagewin.h
V 23
file 18c.0.r6286/140236
K 5
mmx.h
V 23
file 2e1.0.r6286/134429
K 11
optiondlg.c
V 24
file 18d.0.r14120/185358
K 11
optiondlg.h
V 22
file 18e.0.r12381/2174
K 7
pages.c
V 23
file 2qg.0.r14376/80487
K 7
pages.h
V 22
file 2qh.0.r8639/16416
K 8
plrdlg.c
V 24
file 18f.0.r14418/250353
K 8
plrdlg.h
V 22
file 18g.0.r6387/81301
K 10
ratesdlg.h
V 22
file 2db.0.r5989/47726
K 10
repodlgs.c
V 24
file 18i.0.r14418/247898
K 10
repodlgs.h
V 23
file 18j.0.r13354/58129
K 14
spaceshipdlg.c
V 24
file 18m.0.r14418/250840
K 14
spaceshipdlg.h
V 23
file 18n.0.r5500/263363
K 8
sprite.c
V 23
file 39k.0.r13354/55462
K 8
sprite.h
V 24
file 39l.0.r12670/108062
K 18
themebackgrounds.c
V 23
file 3ff.0.r13795/16976
K 18
themebackgrounds.h
V 23
file 3fg.0.r13795/17225
K 13
themecolors.c
V 24
file 392.0.r12670/113849
K 13
themecolors.h
V 24
file 393.0.r12670/114433
K 8
themes.c
V 23
file 38p.0.r14376/80002
K 11
themespec.c
V 23
file 390.0.r14376/80725
K 11
themespec.h
V 23
file 391.0.r14376/80966
K 11
unistring.c
V 23
file 18o.0.r13354/57401
K 11
unistring.h
V 23
file 18p.0.r13481/30205
K 8
widget.c
V 22
file 3fu.0.r13966/8449
K 8
widget.h
V 24
file 3fv.0.r12670/110372
K 15
widget_button.c
V 22
file 3fh.0.r14075/3532
K 15
widget_button.h
V 24
file 3g7.0.r12670/113556
K 17
widget_checkbox.c
V 22
file 3fi.0.r14075/5747
K 17
widget_checkbox.h
V 24
file 3g8.0.r12670/106620
K 13
widget_core.c
V 23
file 3fj.0.r13354/61769
K 13
widget_edit.c
V 23
file 3fk.0.r13354/64909
K 13
widget_edit.h
V 24
file 3g9.0.r12670/115595
K 13
widget_icon.c
V 23
file 3fl.0.r13354/59104
K 13
widget_icon.h
V 24
file 3ga.0.r12670/112107
K 14
widget_label.c
V 22
file 3fm.0.r13598/6851
K 14
widget_label.h
V 24
file 3gb.0.r12670/110079
K 10
widget_p.h
V 24
file 3fn.0.r12670/107197
K 18
widget_scrollbar.c
V 24
file 3fo.59n.r14075/5451
K 18
widget_scrollbar.h
V 24
file 3gc.0.r12670/116811
K 15
widget_window.c
V 23
file 3fp.0.r13354/55944
K 15
widget_window.h
V 23
file 3gd.0.r12699/32533
K 7
wldlg.c
V 24
file 18q.0.r14418/251084
K 7
wldlg.h
V 23
file 18r.0.r11361/49592
END
ENDREP
id: 16t.0.r14418/256088
type: dir
pred: 16t.0.r14376/86198
count: 504
text: 14418 251329 4746 4746 c0f77258dcf8138e7118910b61123e1d
props: 11108 12869 78 0 a27c61ac5fddbd709df8c1876129f940
cpath: /trunk/client/gui-sdl
copyroot: 0 /

id: 14u.0.r14418/256321
type: file
pred: 14u.0.r14208/189979
count: 31
text: 14418 112906 798 10072 5804c973cb4329561918a212d159bc3d
props: 11094 491 111 0 45c0e160a790dc8f7645f8a7eabea654
cpath: /trunk/client/plrdlg_common.c
copyroot: 0 /

id: 14v.0.r14418/256562
type: file
pred: 14v.0.r10581/10242
count: 11
text: 14418 113732 75 1873 28da7438b7989206c22287a83defd740
props: 10581 10118 111 0 b491beec13ba952c0167e367d3cb48d2
cpath: /trunk/client/plrdlg_common.h
copyroot: 0 /

id: 14s.0.r14418/256802
type: file
pred: 14s.0.r13948/157105
count: 26
text: 14418 117375 213 7137 f3e857f6577b53bfad24293d81bc8b2c
props: 11057 47206 111 0 45c0e160a790dc8f7645f8a7eabea654
cpath: /trunk/client/messagewin_common.c
copyroot: 0 /

id: 2kz.0.r14418/257048
type: file
pred: 2kz.0.r14371/76570
count: 40
text: 14418 143067 1067 49754 21d538ee3b3b819e4ff1e1050962daea
props: 10452 1016 111 0 45c0e160a790dc8f7645f8a7eabea654
cpath: /trunk/client/gui-ftwl/mapview.c
copyroot: 0 /

id: 2mr.0.r14418/257293
type: file
pred: 2mr.0.r14415/85069
count: 30
text: 14418 68021 509 15086 716018214718c6fdd986d98271556ce3
props: 10805 82177 111 0 8e6f231ffe21dad0a34f68090b1c0b69
cpath: /trunk/client/gui-ftwl/gui_text.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 23
file 2k4.0.r13602/37073
K 8
canvas.c
V 22
file 2ye.0.r12291/8284
K 8
canvas.h
V 23
file 2yf.0.r10109/10676
K 6
chat.c
V 23
file 2k5.0.r14371/77057
K 6
chat.h
V 22
file 2k6.0.r7939/79684
K 10
chatline.c
V 22
file 2k7.0.r11941/6451
K 10
chatline.h
V 22
file 2k8.0.r7939/74301
K 9
citydlg.c
V 23
file 2k9.0.r14371/76094
K 9
citydlg.h
V 22
file 2ka.0.r7939/67918
K 9
cityrep.c
V 22
file 2kb.0.r7939/78333
K 9
cityrep.h
V 22
file 2kc.0.r7939/80015
K 8
colors.c
V 22
file 2kd.0.r11941/5347
K 8
colors.h
V 22
file 2ke.0.r11941/5582
K 12
connectdlg.c
V 22
file 2kf.0.r11941/7635
K 12
connectdlg.h
V 22
file 2kg.0.r7939/80350
K 9
dialogs.c
V 24
file 2kh.0.r14208/190940
K 9
dialogs.h
V 22
file 2ki.0.r7939/80688
K 10
diplodlg.c
V 22
file 2kj.0.r7939/64892
K 10
diplodlg.h
V 22
file 2kk.0.r7939/67247
K 9
finddlg.c
V 22
file 2kl.0.r7939/69930
K 9
finddlg.h
V 22
file 2km.0.r7939/70941
K 9
gotodlg.c
V 24
file 2kn.0.r14120/192526
K 9
gotodlg.h
V 22
file 2ko.0.r7939/67583
K 10
graphics.c
V 23
file 2kp.0.r10141/54754
K 10
graphics.h
V 22
file 2kq.0.r7939/68252
K 10
gui_main.c
V 23
file 2kr.0.r14371/76813
K 10
gui_main.h
V 22
file 2ks.0.r11943/1292
K 10
gui_text.c
V 24
file 2mr.0.r14418/257293
K 10
gui_text.h
V 22
file 2ms.0.r11941/8598
K 9
helpdlg.c
V 22
file 2kt.0.r7939/71611
K 9
helpdlg.h
V 22
file 2ku.0.r7939/72285
K 10
inteldlg.c
V 22
file 2kv.0.r7939/66910
K 10
inteldlg.h
V 22
file 2kw.0.r7939/69594
K 9
mapctrl.c
V 23
file 2kx.0.r14371/76333
K 9
mapctrl.h
V 22
file 2ky.0.r7939/69259
K 9
mapview.c
V 24
file 2kz.0.r14418/257048
K 9
mapview.h
V 21
file 2l0.0.r11943/817
K 6
menu.c
V 22
file 2l1.0.r7939/75312
K 6
menu.h
V 22
file 2l2.0.r7939/76324
K 12
messagedlg.c
V 22
file 2l3.0.r7939/76990
K 12
messagedlg.h
V 22
file 2l4.0.r7939/79008
K 12
messagewin.c
V 23
file 2l5.0.r9577/142349
K 12
messagewin.h
V 22
file 2l6.0.r7939/75986
K 7
pages.c
V 22
file 2qc.0.r11943/1528
K 7
pages.h
V 22
file 2qd.0.r8639/25123
K 8
plrdlg.c
V 23
file 2l7.0.r9577/141628
K 8
plrdlg.h
V 22
file 2l8.0.r7939/73967
K 10
ratesdlg.c
V 22
file 2l9.0.r7939/68588
K 10
ratesdlg.h
V 22
file 2la.0.r7939/70605
K 10
repodlgs.c
V 22
file 2lb.0.r7939/71947
K 10
repodlgs.h
V 22
file 2lc.0.r7939/72955
K 14
spaceshipdlg.c
V 22
file 2ld.0.r7939/75645
K 14
spaceshipdlg.h
V 22
file 2le.0.r7939/77329
K 8
sprite.c
V 23
file 2yg.0.r11958/37010
K 8
sprite.h
V 23
file 2yh.0.r10141/56198
K 8
themes.c
V 24
file 3cc.0.r12670/122700
K 7
wldlg.c
V 22
file 2lf.0.r7939/76656
K 7
wldlg.h
V 22
file 2lg.0.r7939/77669
END
ENDREP
id: 2k2.0.r14418/260053
type: dir
pred: 2k2.0.r14415/87826
count: 94
text: 14418 257538 2502 2502 a34ebad134e03a37e13b54a0a69d803c
props: 11108 13191 78 0 667fe0aa2722f6798d567486294a1d2e
cpath: /trunk/client/gui-ftwl
copyroot: 0 /

id: h1.0.r14418/260286
type: file
pred: h1.0.r14337/16777
count: 173
text: 14418 62169 1544 59265 238ecb73b8ad49e33ab81a77703606a3
props: 10865 39466 112 0 7c92b74246787b3b87930d3304880700
cpath: /trunk/client/helpdata.c
copyroot: 0 /

id: i3.0.r14418/260522
type: file
pred: i3.0.r14229/48078
count: 19
text: 14418 69402 618 2261 f9f499b1fa66a4d8189e90dc69b34e01
props: 10865 39822 111 0 2a5912525b098cb46a1301ee940f7617
cpath: /trunk/client/helpdata.h
copyroot: 0 /

id: xh.0.r14418/260755
type: file
pred: xh.0.r13068/20176
count: 24
text: 14418 138402 4356 17046 c10d2202f942ee73a7bd609deb65b896
props: 11057 47571 111 0 1912998302effd94f7d1c131050552ad
cpath: /trunk/client/attribute.c
copyroot: 0 /

id: 197.0.r14418/260992
type: file
pred: 197.0.r11057/48047
count: 11
text: 14418 73265 208 2809 395803983a66a9399b38a6bbf2f63c80
props: 11057 47923 111 0 b491beec13ba952c0167e367d3cb48d2
cpath: /trunk/client/climap.c
copyroot: 0 /

id: hl.0.r14418/261225
type: file
pred: hl.0.r14415/88057
count: 393
text: 14418 75748 210 159649 dfe398271bc9f5e9dae37cb1655ebd4d
props: 11096 3792 112 0 71c6b453a620995957914f193a952f13
cpath: /trunk/client/tilespec.c
copyroot: 0 /

id: 15m.0.r14418/261460
type: file
pred: 15m.0.r14415/88292
count: 85
text: 14418 76695 273 23429 7ea0554306531f1169282f974f66ddf1
props: 11057 48634 111 0 e77f29e20031f26b4b1e16b63c7aa55c
cpath: /trunk/client/mapctrl_common.c
copyroot: 0 /

id: nb.0.r14418/261702
type: file
pred: nb.0.r12524/749
count: 57
text: 14418 115868 204 8689 a8ef1b0374f3dab321df68a75eba86d2
props: 10411 182447 111 0 515f6afa6448327e59cdac91d637f582
cpath: /trunk/client/gui-stub/mapview.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 22
file mj.0.r13602/40054
K 8
canvas.c
V 22
file 2y0.0.r11749/2105
K 8
canvas.h
V 23
file 2y1.0.r10095/12720
K 10
chatline.c
V 21
file ml.0.r7930/39139
K 10
chatline.h
V 21
file mm.0.r5491/41569
K 9
citydlg.c
V 23
file mn.0.r13948/161531
K 9
citydlg.h
V 21
file mo.0.r5491/35843
K 9
cityrep.c
V 22
file mp.0.r10144/11456
K 9
cityrep.h
V 21
file mq.0.r5491/46587
K 8
colors.c
V 22
file mr.0.r10458/11165
K 8
colors.h
V 22
file ms.0.r10458/11524
K 12
connectdlg.c
V 21
file mt.0.r11749/2576
K 12
connectdlg.h
V 21
file mu.0.r5491/46943
K 9
dialogs.c
V 22
file mv.0.r13227/35948
K 9
dialogs.h
V 20
file mw.0.r8956/1107
K 10
diplodlg.c
V 21
file mx.0.r10144/8226
K 10
diplodlg.h
V 21
file my.0.r5491/35128
K 9
finddlg.c
V 21
file mz.0.r5491/37629
K 9
finddlg.h
V 22
file 2dc.0.r5989/44093
K 9
gotodlg.c
V 23
file n0.0.r14120/196239
K 9
gotodlg.h
V 21
file n1.0.r5491/35486
K 10
graphics.c
V 22
file n2.0.r10141/65831
K 10
graphics.h
V 21
file n3.0.r5491/36199
K 10
gui_main.c
V 22
file n4.0.r11434/22292
K 10
gui_main.h
V 21
file n5.0.r5491/41925
K 9
helpdlg.c
V 21
file n6.0.r10144/9660
K 9
helpdlg.h
V 21
file n7.0.r5491/39423
K 10
inteldlg.c
V 21
file n8.0.r7847/24779
K 10
inteldlg.h
V 22
file 2dd.0.r5989/43421
K 9
mapctrl.c
V 21
file n9.0.r7018/49625
K 9
mapctrl.h
V 21
file na.0.r5491/37272
K 9
mapview.c
V 23
file nb.0.r14418/261702
K 9
mapview.h
V 21
file nc.0.r5491/38349
K 6
menu.c
V 22
file nd.0.r10144/11100
K 6
menu.h
V 21
file ne.0.r5491/43723
K 12
messagedlg.c
V 21
file nf.0.r5491/44434
K 12
messagedlg.h
V 22
file 2de.0.r5989/44428
K 12
messagewin.c
V 21
file ng.0.r9098/29017
K 12
messagewin.h
V 21
file nh.0.r5491/43363
K 7
pages.c
V 22
file 2qi.0.r11749/2340
K 7
pages.h
V 22
file 2qj.0.r8639/28697
K 8
plrdlg.c
V 21
file ni.0.r9098/28662
K 8
plrdlg.h
V 21
file nj.0.r5491/41213
K 10
ratesdlg.c
V 21
file nk.0.r5491/36557
K 10
ratesdlg.h
V 22
file 2df.0.r5989/43757
K 10
repodlgs.c
V 22
file nl.0.r10144/10019
K 10
repodlgs.h
V 21
file nm.0.r5491/40138
K 14
spaceshipdlg.c
V 21
file nn.0.r5491/42999
K 14
spaceshipdlg.h
V 21
file no.0.r5491/44796
K 8
sprite.c
V 22
file 2y2.0.r11749/1632
K 8
sprite.h
V 23
file 2y3.0.r10095/12384
K 8
themes.c
V 23
file 34y.0.r10945/24922
K 7
wldlg.c
V 21
file qj.0.r5491/44077
K 7
wldlg.h
V 21
file qk.0.r5491/45158
END
ENDREP
id: mh.0.r14418/264246
type: dir
pred: mh.0.r14120/198778
count: 136
text: 14418 261943 2290 2290 1a54adc5e587a5a660f1073b49ad11eb
props: 11108 13796 68 0 fbaef5f6348d6ae4b0cc177104ca4ad2
cpath: /trunk/client/gui-stub
copyroot: 0 /

id: z2.0.r14418/264479
type: file
pred: z2.0.r14415/88533
count: 264
text: 14418 85860 1649 88824 cce360417ba8360bd6045ef17d9d9c3b
props: 11084 12552 112 0 73ff9df0f3aabd6f615c7264c2fe22c7
cpath: /trunk/client/mapview_common.c
copyroot: 0 /

id: 2f.0.r14418/264721
type: file
pred: 2f.0.r14371/80976
count: 256
text: 14418 0 20080 24470 ad416eed327d9dabed4075565d0e4f79
props: 11057 49359 112 0 8c6f7f683a6ec7c52de63742b923ac5a
cpath: /trunk/client/civclient.c
copyroot: 0 /

id: d5.0.r14418/264955
type: file
pred: d5.0.r14371/81206
count: 189
text: 14418 33022 1683 34192 818d0df6218925ef62e9c1a3a67b3d13
props: 11057 49717 112 0 a13a5521476fb3b00a5e0433e6f85ac7
cpath: /trunk/client/climisc.c
copyroot: 0 /

id: hz.0.r14418/265190
type: file
pred: hz.0.r14149/11658
count: 45
text: 14418 34733 54 2789 430f6221a8e47b72fa6a0c8826ce0595
props: 10540 16234 111 0 2e2357461112b5dbc5fe4daab6abde1a
cpath: /trunk/client/civclient.h
copyroot: 0 /

id: 3bg.0.r14418/265423
type: file
pred: 3bg.0.r13948/164774
count: 14
text: 14418 90394 136 12045 828c0483fadad22dd0f7f2c1559e7c47
props: 12670 125674 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/client/editor.c
copyroot: 0 /

id: dc.0.r14418/265658
type: file
pred: dc.0.r14390/25430
count: 160
text: 14418 36424 13374 29257 57b98a47ef59fe02c34c6410208fbbff
props: 10965 83 112 0 b4bb2e29c9087472d2e44c6eab39b6d6
cpath: /trunk/client/options.c
copyroot: 0 /

PLAIN
K 11
Makefile.am
V 22
file 5f.0.r13602/42819
K 6
agents
V 22
dir zf.0.r14418/222730
K 11
attribute.c
V 23
file xh.0.r14418/260755
K 11
attribute.h
V 19
file xi.0.r4715/844
K 7
audio.c
V 23
file 139.0.r14371/80285
K 7
audio.h
V 22
file 13a.0.r10416/6162
K 12
audio_none.c
V 23
file 13d.0.r6129/145164
K 12
audio_none.h
V 22
file 13e.0.r4452/27228
K 11
audio_sdl.c
V 23
file 13f.0.r14376/86913
K 11
audio_sdl.h
V 22
file 13g.0.r4452/26570
K 17
chatline_common.c
V 23
file 14q.0.r14376/86672
K 17
chatline_common.h
V 23
file 14r.0.r14376/87145
K 16
citydlg_common.c
V 23
file z4.0.r14418/223192
K 16
citydlg_common.h
V 22
file z5.0.r13913/49887
K 13
cityrepdata.c
V 23
file mb.0.r14208/162500
K 13
cityrepdata.h
V 21
file mc.0.r9153/21475
K 11
civclient.c
V 23
file 2f.0.r14418/264721
K 11
civclient.h
V 23
file hz.0.r14418/265190
K 8
climap.c
V 24
file 197.0.r14418/260992
K 8
climap.h
V 23
file 198.0.r13918/12587
K 9
climisc.c
V 23
file d5.0.r14418/264955
K 9
climisc.h
V 22
file i0.0.r13567/45363
K 8
clinet.c
V 22
file hc.0.r14376/87852
K 8
clinet.h
V 22
file i1.0.r12484/13649
K 15
colors_common.c
V 23
file 33a.0.r13898/17124
K 15
colors_common.h
V 23
file 33b.0.r13898/17360
K 19
connectdlg_common.c
V 23
file 2fw.0.r14376/86429
K 19
connectdlg_common.h
V 24
file 2fx.0.r14208/194421
K 9
control.c
V 23
file gz.0.r14418/223676
K 9
control.h
V 22
file i2.0.r14141/35927
K 8
editor.c
V 24
file 3bg.0.r14418/265423
K 8
editor.h
V 23
file 3bh.0.r12771/15162
K 11
ggzclient.c
V 24
file 394.0.r12670/122138
K 11
ggzclient.h
V 24
file 395.0.r12670/122419
K 6
goto.c
V 22
file vu.0.r14141/39378
K 6
goto.h
V 22
file vv.0.r13899/36140
K 8
gui-ftwl
V 23
dir 2k2.0.r14418/260053
K 11
gui-gtk-2.0
V 22
dir zs.0.r14418/231494
K 7
gui-sdl
V 23
dir 16t.0.r14418/256088
K 8
gui-stub
V 22
dir mh.0.r14418/264246
K 9
gui-win32
V 22
dir np.0.r14418/246445
K 7
gui-xaw
V 22
dir 9o.0.r14418/239810
K 10
helpdata.c
V 23
file h1.0.r14418/260286
K 10
helpdata.h
V 23
file i3.0.r14418/260522
K 7
include
V 22
dir b8.0.r13297/466152
K 16
mapctrl_common.c
V 24
file 15m.0.r14418/261460
K 16
mapctrl_common.h
V 23
file 15n.0.r11378/41712
K 16
mapview_common.c
V 23
file z2.0.r14418/264479
K 16
mapview_common.h
V 22
file z3.0.r13906/25384
K 19
messagewin_common.c
V 24
file 14s.0.r14418/256802
K 19
messagewin_common.h
V 24
file 14t.0.r13297/482271
K 9
options.c
V 23
file dc.0.r14418/265658
K 9
options.h
V 22
file i4.0.r14163/17461
K 17
overview_common.c
V 24
file 2yk.0.r14418/223433
K 17
overview_common.h
V 21
file 2yl.0.r10927/997
K 10
packhand.c
V 22
file n.0.r14418/246678
K 10
packhand.h
V 23
file i5.0.r13297/471299
K 15
plrdlg_common.c
V 24
file 14u.0.r14418/256321
K 15
plrdlg_common.h
V 24
file 14v.0.r14418/256562
K 17
repodlgs_common.c
V 24
file 11i.0.r14418/231964
K 17
repodlgs_common.h
V 23
file 11j.0.r14163/21768
K 9
reqtree.c
V 24
file 2ym.0.r14418/222958
K 9
reqtree.h
V 23
file 2yn.0.r13481/22674
K 9
servers.c
V 23
file 33x.0.r13356/43957
K 9
servers.h
V 23
file 33y.0.r14376/66949
K 6
text.c
V 24
file 2g3.0.r14418/231730
K 6
text.h
V 22
file 2g4.0.r14285/8235
K 15
themes_common.c
V 23
file 352.0.r13227/35243
K 15
themes_common.h
V 23
file 353.0.r13227/35479
K 10
tilespec.c
V 23
file hl.0.r14418/261225
K 10
tilespec.h
V 22
file i6.0.r14376/87620
END
ENDREP
id: d.0.r14418/269160
type: dir
pred: d.0.r14415/92012
count: 4277
text: 14418 265891 3256 3256 08035d3eb72c05d4c5043d694d72730f
props: 12883 2898 109 0 732f4656541fb514e4368d9517bdf317
cpath: /trunk/client
copyroot: 0 /

PLAIN
K 9
ABOUT-NLS
V 22
file fu.0.r13215/85704
K 7
AUTHORS
V 19
file 5u.0.r12982/94
K 7
COPYING
V 19
file 1h.0.r9643/400
K 9
ChangeLog
V 21
file 6l.0.r13892/2383
K 7
INSTALL
V 20
file 6.0.r13294/2509
K 11
Makefile.am
V 21
file 59.0.r13780/5863
K 4
NEWS
V 20
file 6m.0.r13825/202
K 6
README
V 20
file 7.0.r4421/96382
K 2
ai
V 20
dir 8.0.r14415/83534
K 10
autogen.sh
V 22
file 12o.0.r12319/1997
K 9
bootstrap
V 21
dir 2p5.0.r13975/1420
K 6
client
V 21
dir d.0.r14418/269160
K 6
common
V 21
dir p.0.r14418/221317
K 12
config.mac.h
V 20
file hb.0.r6045/5982
K 12
configure.ac
V 22
file 149.0.r14383/3957
K 4
data
V 20
dir w.0.r14390/21662
K 6
debian
V 20
dir 5w.0.r13441/7348
K 12
dependencies
V 21
dir 2yu.0.r14326/3376
K 11
diff_ignore
V 19
file qq.0.r13200/42
K 3
doc
V 20
dir k7.0.r14330/9568
K 4
intl
V 21
dir f4.0.r11105/23499
K 2
m4
V 21
dir 12p.0.r14383/3744
K 6
manual
V 23
dir 2m2.0.r14418/221883
K 2
po
V 21
dir fs.0.r14411/92215
K 7
scripts
V 22
dir 2yo.0.r14022/10306
K 6
server
V 21
dir z.0.r14418/217054
K 10
stamp-h.in
V 19
file 80.0.r1125/241
K 5
tests
V 21
dir 2g9.0.r13445/1146
K 7
utility
V 20
dir 1c.0.r14405/3691
K 10
version.in
V 23
file 2lo.0.r14222/29509
K 3
vms
V 21
dir u9.0.r11105/70719
K 5
win32
V 22
dir 2eu.0.r13730/30247
END
ENDREP
id: 3.0.r14418/270643
type: dir
pred: 3.0.r14415/93489
count: 11517
text: 14418 269382 1248 1248 db89e73c35f6fdcaba7161f44758d57a
props: 11109 0 255 0 8cbc80e0da9c47b05b8ffee17ea9b0f1
cpath: /trunk
copyroot: 0 /

PLAIN
K 8
branches
V 21
dir 1.0.r14417/273238
K 4
tags
V 19
dir 2.0.r14292/2908
K 5
trunk
V 21
dir 3.0.r14418/270643
K 7
website
V 18
dir 3ge.0.r12388/0
END
ENDREP
id: 0.0.r14418/271020
type: dir
pred: 0.0.r14417/273561
count: 14418
text: 14418 270856 151 151 80ca02f29a4345248aba058a3403157a
cpath: /
copyroot: 0 /

ay.0.t14417-1 modify true false /trunk/client/gui-xaw/repodlgs.c

9y.0.t14417-1 modify true false /trunk/client/gui-xaw/cityrep.c

zy.0.t14417-1 modify true false /trunk/client/gui-gtk-2.0/citydlg.c

xh.0.t14417-1 modify true false /trunk/client/attribute.c

10e.0.t14417-1 modify true false /trunk/client/gui-gtk-2.0/gotodlg.c

a6.0.t14417-1 modify true false /trunk/client/gui-xaw/dialogs.c

xs.0.t14417-1 modify true false /trunk/client/gui-win32/connectdlg.c

aw.0.t14417-1 modify true false /trunk/client/gui-xaw/plrdlg.c

197.0.t14417-1 modify true false /trunk/client/climap.c

hl.0.t14417-1 modify true false /trunk/client/tilespec.c

bm.0.t14417-1 modify true false /trunk/client/gui-xaw/gui_main.c

37p.0.t14417-1 modify true false /trunk/client/gui-xaw/diplomat_dialog.c

15m.0.t14417-1 modify true false /trunk/client/mapctrl_common.c

18m.0.t14417-1 modify true false /trunk/client/gui-sdl/spaceshipdlg.c

10x.0.t14417-1 modify true false /trunk/client/gui-gtk-2.0/mapview.c

18q.0.t14417-1 modify true false /trunk/client/gui-sdl/wldlg.c

z2.0.t14417-1 modify true false /trunk/client/mapview_common.c

2f.0.t14417-1 modify true false /trunk/client/civclient.c

118.0.t14417-1 modify true false /trunk/client/gui-gtk-2.0/repodlgs.c

d5.0.t14417-1 modify true false /trunk/client/climisc.c

xm.0.t14417-1 modify true false /trunk/client/gui-win32/citydlg.c

xz.0.t14417-1 modify true false /trunk/client/gui-win32/gotodlg.c

an.0.t14417-1 modify true false /trunk/client/gui-xaw/menu.c

hz.0.t14417-1 modify true false /trunk/client/civclient.h

3bg.0.t14417-1 modify true false /trunk/client/editor.c

dc.0.t14417-1 modify true false /trunk/client/options.c

ye.0.t14417-1 modify true false /trunk/client/gui-win32/mapview.c

10k.0.t14417-1 modify true false /trunk/client/gui-gtk-2.0/gui_main.c

af.0.t14417-1 modify true false /trunk/client/gui-xaw/helpdlg.c

17f.0.t14417-1 modify true false /trunk/client/gui-sdl/gotodlg.c

2pi.0.t14417-1 modify true false /trunk/client/gui-gtk-2.0/pages.c

170.0.t14417-1 modify true false /trunk/client/gui-sdl/citydlg.c

yq.0.t14417-1 modify true false /trunk/client/gui-win32/repodlgs.c

2ym.0.t14417-1 modify true false /trunk/client/reqtree.c

nb.0.t14417-1 modify true false /trunk/client/gui-stub/mapview.c

z4.0.t14417-1 modify true false /trunk/client/citydlg_common.c

10z.0.t14417-1 modify true false /trunk/client/gui-gtk-2.0/menu.c

186.0.t14417-1 modify true false /trunk/client/gui-sdl/mapview.c

2yk.0.t14417-1 modify true false /trunk/client/overview_common.c

a8.0.t14417-1 modify true false /trunk/client/gui-xaw/diplodlg.c

gz.0.t14417-1 modify true false /trunk/client/control.c

2qm.0.t14417-1 modify true false /trunk/client/gui-xaw/pages.c

191.0.t14417-1 modify true false /trunk/client/gui-sdl/gui_tilespec.c

vl.0.t14417-1 modify true false /trunk/server/savegame.c

ad.0.t14417-1 modify true false /trunk/client/gui-xaw/graphics.c

100.0.t14417-1 modify true false /trunk/client/gui-gtk-2.0/cityrep.c

18i.0.t14417-1 modify true false /trunk/client/gui-sdl/repodlgs.c

ai.0.t14417-1 modify true false /trunk/client/gui-xaw/inteldlg.c

2g3.0.t14417-1 modify true false /trunk/client/text.c

108.0.t14417-1 modify true false /trunk/client/gui-gtk-2.0/dialogs.c

2mr.0.t14417-1 modify true false /trunk/client/gui-ftwl/gui_text.c

ax.0.t14417-1 modify true false /trunk/client/gui-xaw/ratesdlg.c

11i.0.t14417-1 modify true false /trunk/client/repodlgs_common.c

yg.0.t14417-1 modify true false /trunk/client/gui-win32/menu.c

zj.0.t14417-1 modify true false /trunk/client/agents/cma_core.c

36n.0.t14417-1 modify true false /trunk/client/gui-gtk-2.0/diplomat_dialog.c

17o.0.t14417-1 modify true false /trunk/client/gui-sdl/gui_main.c

10a.0.t14417-1 modify true false /trunk/client/gui-gtk-2.0/diplodlg.c

xo.0.t14417-1 modify true false /trunk/client/gui-win32/cityrep.c

xu.0.t14417-1 modify true false /trunk/client/gui-win32/dialogs.c

2kz.0.t14417-1 modify true false /trunk/client/gui-ftwl/mapview.c

10u.0.t14417-1 modify true false /trunk/client/gui-gtk-2.0/inteldlg.c

2ys.0.t14417-1 modify true false /trunk/common/tile.c

188.0.t14417-1 modify true false /trunk/client/gui-sdl/menu.c

n.0.t14417-1 modify true false /trunk/client/packhand.c

2m5.0.t14417-1 modify true false /trunk/manual/civmanual.c

ab.0.t14417-1 modify true false /trunk/client/gui-xaw/gotodlg.c

9w.0.t14417-1 modify true false /trunk/client/gui-xaw/citydlg.c

nt.0.t14417-1 modify true false /trunk/client/gui-xaw/actions.c

xw.0.t14417-1 modify true false /trunk/client/gui-win32/diplodlg.c

172.0.t14417-1 modify true false /trunk/client/gui-sdl/cityrep.c

10q.0.t14417-1 modify true false /trunk/client/gui-gtk-2.0/helpdlg.c

17a.0.t14417-1 modify true false /trunk/client/gui-sdl/dialogs.c

yc.0.t14417-1 modify true false /trunk/client/gui-win32/mapctrl.c

yb.0.t14417-1 modify true false /trunk/client/gui-win32/inteldlg.c

b2.0.t14417-1 modify true false /trunk/client/gui-xaw/spaceshipdlg.c

115.0.t14417-1 modify true false /trunk/client/gui-gtk-2.0/plrdlg.c

al.0.t14417-1 modify true false /trunk/client/gui-xaw/mapview.c

yp.0.t14417-1 modify true false /trunk/client/gui-win32/ratesdlg.c

2ll.0.t14417-1 modify true false /trunk/common/fc_types.h

3bn.0.t14417-1 modify true false /trunk/client/gui-sdl/diplomat_dialog.c

14u.0.t14417-1 modify true false /trunk/client/plrdlg_common.c

14v.0.t14417-1 modify true false /trunk/client/plrdlg_common.h

17c.0.t14417-1 modify true false /trunk/client/gui-sdl/diplodlg.c

y7.0.t14417-1 modify true false /trunk/client/gui-win32/helpdlg.c

183.0.t14417-1 modify true false /trunk/client/gui-sdl/inteldlg.c

45.0.t14417-1 modify true false /trunk/common/player.c

184.0.t14417-1 modify true false /trunk/client/gui-sdl/mapctrl.c

yn.0.t14417-1 modify true false /trunk/client/gui-win32/plrdlg.c

11c.0.t14417-1 modify true false /trunk/client/gui-gtk-2.0/spaceshipdlg.c

14s.0.t14417-1 modify true false /trunk/client/messagewin_common.c

11e.0.t14417-1 modify true false /trunk/client/gui-gtk-2.0/wldlg.c

h1.0.t14417-1 modify true false /trunk/client/helpdata.c

3u.0.t14417-1 modify true false /trunk/common/game.c

17z.0.t14417-1 modify true false /trunk/client/gui-sdl/helpdlg.c

i3.0.t14417-1 modify true false /trunk/client/helpdata.h

10d.0.t14417-1 modify true false /trunk/client/gui-gtk-2.0/gamedlgs.c

3v.0.t14417-1 modify true false /trunk/common/game.h

18f.0.t14417-1 modify true false /trunk/client/gui-sdl/plrdlg.c

yt.0.t14417-1 modify true false /trunk/client/gui-win32/spaceshipdlg.c

o5.0.t14417-1 modify true false /trunk/client/gui-xaw/wldlg.c

16y.0.t14417-1 modify true false /trunk/client/gui-sdl/chatline.c


271020 271173
