diff -urN -Xfreeciv-orig/diff_ignore freeciv-orig/client/civclient.c freeciv-work/client/civclient.c --- freeciv-orig/client/civclient.c Thu Sep 26 14:22:22 2002 +++ freeciv-work/client/civclient.c Thu Sep 26 15:55:53 2002 @@ -583,23 +583,6 @@ bool connect_error = (client_state == CLIENT_PRE_GAME_STATE) && (newstate == CLIENT_PRE_GAME_STATE); - /* - * We are currently ignoring the CLIENT_GAME_OVER_STATE state - * because the client hasen't been changed to take care of it. So it - * breaks the show-whole-map-at-the-end-of-the-game. Nevertheless - * the server is so kind and sends the client this information. And - * in the future the client can/should take advantage of this - * information. - * - * FIXME: audit all client code to that it copes with - * CLIENT_GAME_OVER_STATE and implement specific - * CLIENT_GAME_OVER_STATE actions like history browsing. Then remove - * the kludge below. - */ - if (newstate == CLIENT_GAME_OVER_STATE) { - newstate = CLIENT_GAME_RUNNING_STATE; - } - if(client_state!=newstate) { /* If changing from pre-game state to _either_ select race @@ -765,3 +748,21 @@ flip = !flip; } + +/************************************************************************** + Can the client now issue orders. +**************************************************************************/ +bool can_client_issue_orders() +{ + return (!client_is_observer() + && get_client_state() == CLIENT_GAME_RUNNING_STATE); +} + +/************************************************************************** + Can the client now change the view. +**************************************************************************/ +bool can_client_change_view() +{ + return (get_client_state() == CLIENT_GAME_RUNNING_STATE + || get_client_state() == CLIENT_GAME_OVER_STATE); +} diff -urN -Xfreeciv-orig/diff_ignore freeciv-orig/client/civclient.h freeciv-work/client/civclient.h --- freeciv-orig/client/civclient.h Sat Aug 24 16:37:33 2002 +++ freeciv-work/client/civclient.h Thu Sep 26 15:52:15 2002 @@ -57,5 +57,7 @@ void wait_till_request_got_processed(int request_id); bool client_is_observer(void); void real_timer_callback(void); +bool can_client_issue_orders(void); +bool can_client_change_view(void); #endif /* FC__CIVCLIENT_H */ diff -urN -Xfreeciv-orig/diff_ignore freeciv-orig/client/climisc.c freeciv-work/client/climisc.c --- freeciv-orig/client/climisc.c Thu Sep 19 23:27:27 2002 +++ freeciv-work/client/climisc.c Thu Sep 26 14:37:29 2002 @@ -490,7 +490,7 @@ struct city *pcity; struct unit *punit; - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) { + if (get_client_state() < CLIENT_GAME_RUNNING_STATE) { return; } diff -urN -Xfreeciv-orig/diff_ignore freeciv-orig/client/control.c freeciv-work/client/control.c --- freeciv-orig/client/control.c Wed Sep 11 19:04:39 2002 +++ freeciv-work/client/control.c Thu Sep 26 15:51:34 2002 @@ -910,7 +910,9 @@ **************************************************************************/ void request_toggle_map_grid(void) { - if(get_client_state()!=CLIENT_GAME_RUNNING_STATE) return; + if (!can_client_change_view()) { + return; + } draw_map_grid^=1; update_map_canvas_visible(); @@ -921,8 +923,9 @@ **************************************************************************/ void request_toggle_city_names(void) { - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) + if (!can_client_change_view()) { return; + } draw_city_names ^= 1; update_map_canvas_visible(); @@ -933,8 +936,9 @@ **************************************************************************/ void request_toggle_city_productions(void) { - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) + if (!can_client_change_view()) { return; + } draw_city_productions ^= 1; update_map_canvas_visible(); @@ -945,8 +949,9 @@ **************************************************************************/ void request_toggle_terrain(void) { - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) + if (!can_client_change_view()) { return; + } draw_terrain ^= 1; update_map_canvas_visible(); @@ -957,8 +962,9 @@ **************************************************************************/ void request_toggle_coastline(void) { - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) + if (!can_client_change_view()) { return; + } draw_coastline ^= 1; update_map_canvas_visible(); @@ -969,8 +975,9 @@ **************************************************************************/ void request_toggle_roads_rails(void) { - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) + if (!can_client_change_view()) { return; + } draw_roads_rails ^= 1; update_map_canvas_visible(); @@ -981,8 +988,9 @@ **************************************************************************/ void request_toggle_irrigation(void) { - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) + if (!can_client_change_view()) { return; + } draw_irrigation ^= 1; update_map_canvas_visible(); @@ -993,8 +1001,9 @@ **************************************************************************/ void request_toggle_mines(void) { - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) + if (!can_client_change_view()) { return; + } draw_mines ^= 1; update_map_canvas_visible(); @@ -1005,8 +1014,9 @@ **************************************************************************/ void request_toggle_fortress_airbase(void) { - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) + if (!can_client_change_view()) { return; + } draw_fortress_airbase ^= 1; update_map_canvas_visible(); @@ -1017,8 +1027,9 @@ **************************************************************************/ void request_toggle_specials(void) { - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) + if (!can_client_change_view()) { return; + } draw_specials ^= 1; update_map_canvas_visible(); @@ -1029,8 +1040,9 @@ **************************************************************************/ void request_toggle_pollution(void) { - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) + if (!can_client_change_view()) { return; + } draw_pollution ^= 1; update_map_canvas_visible(); @@ -1041,8 +1053,9 @@ **************************************************************************/ void request_toggle_cities(void) { - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) + if (!can_client_change_view()) { return; + } draw_cities ^= 1; update_map_canvas_visible(); @@ -1053,8 +1066,9 @@ **************************************************************************/ void request_toggle_units(void) { - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) + if (!can_client_change_view()) { return; + } draw_units ^= 1; update_map_canvas_visible(); @@ -1065,8 +1079,9 @@ **************************************************************************/ void request_toggle_focus_unit(void) { - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) + if (!can_client_change_view()) { return; + } draw_focus_unit ^= 1; update_map_canvas_visible(); @@ -1077,8 +1092,9 @@ **************************************************************************/ void request_toggle_fog_of_war(void) { - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) + if (!can_client_change_view()) { return; + } draw_fog_of_war ^= 1; update_map_canvas_visible(); diff -urN -Xfreeciv-orig/diff_ignore freeciv-orig/client/gui-gtk/citydlg.c freeciv-work/client/gui-gtk/citydlg.c --- freeciv-orig/client/gui-gtk/citydlg.c Wed Aug 7 13:21:40 2002 +++ freeciv-work/client/gui-gtk/citydlg.c Thu Sep 26 18:01:11 2002 @@ -33,6 +33,7 @@ #include "shared.h" #include "support.h" +#include "civclient.h" #include "cityrep.h" #include "cma_fe.h" #include "cma_fec.h" @@ -403,10 +404,13 @@ refresh_cma_dialog(pdialog->pcity, REFRESH_ALL); gtk_widget_set_sensitive(pdialog->unit.activate_command, + can_client_issue_orders() && have_present_units); gtk_widget_set_sensitive(pdialog->unit.sentry_all_command, + can_client_issue_orders() && have_present_units); gtk_widget_set_sensitive(pdialog->unit.show_units_command, + can_client_issue_orders() && have_present_units); gtk_widget_set_sensitive(pdialog->overview.sell_command, FALSE); } else { @@ -1882,9 +1886,10 @@ gfloat pct; int cost; - gtk_widget_set_sensitive(pdialog->overview.buy_command, !pcity->did_buy); + gtk_widget_set_sensitive(pdialog->overview.buy_command, + can_client_issue_orders() && !pcity->did_buy); gtk_widget_set_sensitive(pdialog->overview.sell_command, - !pcity->did_sell); + can_client_issue_orders() && !pcity->did_sell); get_city_dialog_production(pcity, buf, sizeof(buf)); @@ -3221,7 +3226,8 @@ improvement_value(id)); gtk_set_label(GTK_BUTTON(pdialog->overview.sell_command)->child, buf); - gtk_widget_set_sensitive(pdialog->overview.sell_command, TRUE); + gtk_widget_set_sensitive(pdialog->overview.sell_command, + can_client_issue_orders()); } } } diff -urN -Xfreeciv-orig/diff_ignore freeciv-orig/client/gui-gtk/cityrep.c freeciv-work/client/gui-gtk/cityrep.c --- freeciv-orig/client/gui-gtk/cityrep.c Thu Sep 26 14:22:22 2002 +++ freeciv-work/client/gui-gtk/cityrep.c Thu Sep 26 16:12:25 2002 @@ -32,6 +32,7 @@ #include "support.h" #include "unit.h" +#include "civclient.h" #include "chatline.h" #include "citydlg.h" #include "cityrepdata.h" @@ -668,11 +669,12 @@ *****************************************************************/ static void city_list_callback(GtkWidget *w, gint row, gint column) { + gtk_widget_set_sensitive(city_change_command, can_client_issue_orders()); + gtk_widget_set_sensitive(city_select_command, can_client_issue_orders()); if (GTK_CLIST(city_list)->selection) { - gtk_widget_set_sensitive(city_change_command, TRUE); gtk_widget_set_sensitive(city_center_command, TRUE); gtk_widget_set_sensitive(city_popup_command, TRUE); - gtk_widget_set_sensitive(city_buy_command, TRUE); + gtk_widget_set_sensitive(city_buy_command, can_client_issue_orders()); } else { gtk_widget_set_sensitive(city_center_command, FALSE); gtk_widget_set_sensitive(city_popup_command, FALSE); diff -urN -Xfreeciv-orig/diff_ignore freeciv-orig/client/gui-gtk/dialogs.c freeciv-work/client/gui-gtk/dialogs.c --- freeciv-orig/client/gui-gtk/dialogs.c Wed Aug 7 13:21:41 2002 +++ freeciv-work/client/gui-gtk/dialogs.c Thu Sep 26 15:55:30 2002 @@ -2221,9 +2221,10 @@ size_t i; int delta=10; struct packet_player_request packet; - - if (get_client_state()!=CLIENT_GAME_RUNNING_STATE) + + if (!can_client_issue_orders()) { return; + } i= (size_t)data; diff -urN -Xfreeciv-orig/diff_ignore freeciv-orig/client/gui-gtk/gotodlg.c freeciv-work/client/gui-gtk/gotodlg.c --- freeciv-orig/client/gui-gtk/gotodlg.c Wed Jun 12 09:24:35 2002 +++ freeciv-work/client/gui-gtk/gotodlg.c Thu Sep 26 15:55:25 2002 @@ -74,9 +74,7 @@ GtkWidget *scrolled; GtkAccelGroup *accel=gtk_accel_group_new(); - if(get_client_state()!=CLIENT_GAME_RUNNING_STATE) - return; - if (!get_unit_in_focus()) { + if (!can_client_issue_orders() || !get_unit_in_focus()) { return; } diff -urN -Xfreeciv-orig/diff_ignore freeciv-orig/client/gui-gtk/mapctrl.c freeciv-work/client/gui-gtk/mapctrl.c --- freeciv-orig/client/gui-gtk/mapctrl.c Wed Sep 11 19:04:40 2002 +++ freeciv-work/client/gui-gtk/mapctrl.c Thu Sep 26 15:55:15 2002 @@ -278,8 +278,7 @@ int xtile, ytile; /* when you get a + pow! */ - if (get_client_state() != CLIENT_GAME_RUNNING_STATE - || !(ev->state & GDK_SHIFT_MASK)) { + if (!can_client_issue_orders() || (ev->state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK) { return TRUE; } @@ -296,10 +295,8 @@ { int xtile, ytile; - if(get_client_state() != CLIENT_GAME_RUNNING_STATE) - return TRUE; - - if ((ev->button == 1) && (ev->state & GDK_SHIFT_MASK)) { + if (can_client_issue_orders() && ev->button == 1 + && (ev->state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK) { adjust_workers(w, ev); return TRUE; } @@ -309,10 +306,13 @@ if (ev->button == 1) { do_map_click(xtile, ytile); gtk_widget_grab_focus(turn_done_button); - } else if ((ev->button == 2) || (ev->state & GDK_CONTROL_MASK)) { - popit(ev, xtile, ytile); - } else { - center_tile_mapcanvas(xtile, ytile); + } else if (can_client_change_view()) { + if (ev->button == 2 + || (ev->state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK) { + popit(ev, xtile, ytile); + } else { + center_tile_mapcanvas(xtile, ytile); + } } return TRUE; } @@ -366,7 +366,7 @@ struct packet_city_request packet; enum city_tile_type wrk; - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) { + if (!can_client_issue_orders()) { return; } @@ -420,14 +420,12 @@ } ytile = ev->y / 2; - if(get_client_state() != CLIENT_GAME_RUNNING_STATE) - return TRUE; - - if (ev->button == 1) { - do_unit_goto(xtile, ytile); - } else if (ev->button == 3) { + if (can_client_change_view() && ev->button == 3) { center_tile_mapcanvas(xtile, ytile); + } else if (can_client_issue_orders() && ev->button == 1) { + do_unit_goto(xtile, ytile); } + return TRUE; } @@ -447,7 +445,7 @@ int x,y; struct city *pcity; - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) { + if (!can_client_change_view()) { return; } diff -urN -Xfreeciv-orig/diff_ignore freeciv-orig/client/gui-gtk/mapview.c freeciv-work/client/gui-gtk/mapview.c --- freeciv-orig/client/gui-gtk/mapview.c Sun Aug 25 13:20:56 2002 +++ freeciv-work/client/gui-gtk/mapview.c Thu Sep 26 15:52:42 2002 @@ -760,7 +760,7 @@ **************************************************************************/ gint overview_canvas_expose(GtkWidget *w, GdkEventExpose *ev) { - if(get_client_state()!=CLIENT_GAME_RUNNING_STATE) { + if (!can_client_change_view()) { if(radar_gfx_sprite) gdk_draw_pixmap(overview_canvas->window, civ_gc, radar_gfx_sprite->pixmap, ev->area.x, ev->area.y, @@ -939,7 +939,7 @@ map_resized=TRUE; } - if(get_client_state()!=CLIENT_GAME_RUNNING_STATE) { + if (!can_client_change_view()) { if (!intro_gfx_sprite) { load_intro_gfx(); } @@ -1733,8 +1733,9 @@ gfloat percent=adj->value; - if(get_client_state()!=CLIENT_GAME_RUNNING_STATE) - return; + if (!can_client_change_view()) { + return; + } last_map_view_x0=map_view_x0; last_map_view_y0=map_view_y0; diff -urN -Xfreeciv-orig/diff_ignore freeciv-orig/client/gui-gtk/menu.c freeciv-work/client/gui-gtk/menu.c --- freeciv-orig/client/gui-gtk/menu.c Sun Jun 23 18:06:24 2002 +++ freeciv-work/client/gui-gtk/menu.c Thu Sep 26 15:55:19 2002 @@ -959,7 +959,7 @@ *****************************************************************/ void update_menus(void) { - if(get_client_state()!=CLIENT_GAME_RUNNING_STATE) { + if (!can_client_change_view()) { menus_set_sensitive("
/_Reports", FALSE); menus_set_sensitive("
/_Kingdom", FALSE); menus_set_sensitive("
/_View", FALSE); @@ -969,12 +969,11 @@ menus_set_sensitive("
/_Reports", TRUE); menus_set_sensitive("
/_Kingdom", TRUE); menus_set_sensitive("
/_View", TRUE); - menus_set_sensitive("
/_Orders", !client_is_observer()); + menus_set_sensitive("
/_Orders", can_client_issue_orders()); - menus_set_sensitive("
/_Kingdom/_Tax Rates", !client_is_observer()); - menus_set_sensitive("
/_Kingdom/Work_lists", !client_is_observer()); - menus_set_sensitive("
/_Kingdom/_Revolution", - !client_is_observer()); + menus_set_sensitive("
/_Kingdom/_Tax Rates", can_client_issue_orders()); + menus_set_sensitive("
/_Kingdom/Work_lists", can_client_issue_orders()); + menus_set_sensitive("
/_Kingdom/_Revolution", can_client_issue_orders()); menus_set_sensitive("
/_Reports/S_paceship", (game.player_ptr->spaceship.state!=SSHIP_NONE)); @@ -999,7 +998,7 @@ /* Remaining part of this function: Update Orders menu */ - if (client_is_observer()) { + if (!can_client_issue_orders()) { return; } diff -urN -Xfreeciv-orig/diff_ignore freeciv-orig/client/gui-gtk/plrdlg.c freeciv-work/client/gui-gtk/plrdlg.c --- freeciv-orig/client/gui-gtk/plrdlg.c Fri Aug 9 00:10:18 2002 +++ freeciv-work/client/gui-gtk/plrdlg.c Thu Sep 26 17:16:08 2002 @@ -29,6 +29,7 @@ #include "player.h" #include "support.h" +#include "civclient.h" #include "chatline.h" #include "climisc.h" #include "clinet.h" @@ -469,18 +470,18 @@ gtk_widget_set_sensitive(players_war_command, FALSE); break; default: - gtk_widget_set_sensitive(players_war_command, + gtk_widget_set_sensitive(players_war_command, can_client_issue_orders() && game.player_idx != player_index); } - gtk_widget_set_sensitive(players_vision_command, + gtk_widget_set_sensitive(players_vision_command, can_client_issue_orders() && gives_shared_vision(game.player_ptr, pplayer)); if (pplayer->is_alive && pplayer != game.player_ptr && player_has_embassy(game.player_ptr, pplayer)) { if (pplayer->is_connected) - gtk_widget_set_sensitive(players_meet_command, TRUE); + gtk_widget_set_sensitive(players_meet_command, can_client_issue_orders()); else gtk_widget_set_sensitive(players_meet_command, FALSE); gtk_widget_set_sensitive(players_int_command, TRUE); diff -urN -Xfreeciv-orig/diff_ignore freeciv-orig/client/gui-gtk/repodlgs.c freeciv-work/client/gui-gtk/repodlgs.c --- freeciv-orig/client/gui-gtk/repodlgs.c Thu Jun 27 02:59:15 2002 +++ freeciv-work/client/gui-gtk/repodlgs.c Thu Sep 26 17:11:01 2002 @@ -625,8 +625,8 @@ i=economy_improvement_type[row]; if(i>=0 && i+ pow! */ - if (get_client_state() != CLIENT_GAME_RUNNING_STATE - || !(ev->state & GDK_SHIFT_MASK)) { + if (!can_client_issue_orders() || (ev->state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK) { return TRUE; } @@ -287,11 +286,9 @@ gboolean butt_down_mapcanvas(GtkWidget *w, GdkEventButton *ev, gpointer data) { int xtile, ytile; - - if(get_client_state() != CLIENT_GAME_RUNNING_STATE) - return TRUE; - - if ((ev->button == 1) && (ev->state & GDK_SHIFT_MASK)) { + + if (can_client_issue_orders() && ev->button == 1 + && (ev->state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK) { adjust_workers(w, ev); return TRUE; } @@ -301,10 +298,12 @@ if (ev->button == 1) { do_map_click(xtile, ytile); gtk_widget_grab_focus(turn_done_button); - } else if ((ev->button == 2) || (ev->state & GDK_CONTROL_MASK)) { - popit(ev, xtile, ytile); - } else { - center_tile_mapcanvas(xtile, ytile); + } else if (can_client_change_view()) { + if ((ev->button == 2) || (ev->state & GDK_CONTROL_MASK)) { + popit(ev, xtile, ytile); + } else if () { + center_tile_mapcanvas(xtile, ytile); + } } return TRUE; } @@ -358,7 +357,7 @@ struct packet_city_request packet; enum city_tile_type wrk; - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) { + if (!can_client_issue_orders()) { return; } @@ -411,15 +410,13 @@ (map_view_x0 + map_canvas_store_twidth / 2)); } ytile = ev->y / 2; - - if(get_client_state() != CLIENT_GAME_RUNNING_STATE) - return TRUE; - if (ev->button == 1) { - do_unit_goto(xtile, ytile); - } else if (ev->button == 3) { + if (can_client_change_view() && ev->button == 3) { center_tile_mapcanvas(xtile, ytile); + } else if (can_client_issue_orders() && ev->button == 1) { + do_unit_goto(xtile, ytile); } + return TRUE; } diff -urN -Xfreeciv-orig/diff_ignore freeciv-orig/client/gui-gtk-2.0/mapview.c freeciv-work/client/gui-gtk-2.0/mapview.c --- freeciv-orig/client/gui-gtk-2.0/mapview.c Sun Aug 25 13:20:57 2002 +++ freeciv-work/client/gui-gtk-2.0/mapview.c Fri Sep 27 15:15:47 2002 @@ -761,7 +761,7 @@ **************************************************************************/ gboolean overview_canvas_expose(GtkWidget *w, GdkEventExpose *ev, gpointer data) { - if(get_client_state()!=CLIENT_GAME_RUNNING_STATE) { + if(get_client_state() < CLIENT_GAME_RUNNING_STATE) { if(radar_gfx_sprite) gdk_draw_pixmap(overview_canvas->window, civ_gc, radar_gfx_sprite->pixmap, ev->area.x, ev->area.y, @@ -932,7 +932,7 @@ update_map_canvas_scrollbars_size(); } - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) { + if (get_client_state() < CLIENT_GAME_RUNNING_STATE) { if (!intro_gfx_sprite) { load_intro_gfx(); } @@ -964,7 +964,7 @@ { static bool cleared = FALSE; - if (get_client_state() != CLIENT_GAME_RUNNING_STATE) { + if (get_client_state() < CLIENT_GAME_RUNNING_STATE) { if (scaled_intro_sprite) { gdk_draw_pixmap(map_canvas->window, civ_gc, scaled_intro_sprite->pixmap, @@ -1778,8 +1778,9 @@ gfloat percent=adj->value; - if(get_client_state()!=CLIENT_GAME_RUNNING_STATE) - return; + if (!can_client_change_view()) { + return; + } last_map_view_x0=map_view_x0; last_map_view_y0=map_view_y0; diff -urN -Xfreeciv-orig/diff_ignore freeciv-orig/client/gui-gtk-2.0/menu.c freeciv-work/client/gui-gtk-2.0/menu.c --- freeciv-orig/client/gui-gtk-2.0/menu.c Thu Jun 13 04:18:20 2002 +++ freeciv-work/client/gui-gtk-2.0/menu.c Fri Sep 27 15:15:06 2002 @@ -954,7 +954,7 @@ *****************************************************************/ void update_menus(void) { - if(get_client_state()!=CLIENT_GAME_RUNNING_STATE) { + if (get_client_state() < CLIENT_GAME_RUNNING_STATE) { menus_set_sensitive("
/_Reports", FALSE); menus_set_sensitive("
/_Kingdom", FALSE); menus_set_sensitive("
/_View", FALSE); @@ -965,6 +965,10 @@ menus_set_sensitive("
/_Kingdom", TRUE); menus_set_sensitive("
/_View", TRUE); menus_set_sensitive("
/_Orders", TRUE); + + menus_set_sensitive("
/_Kingdom/_Tax Rates", can_client_issue_orders()); + menus_set_sensitive("
/_Kingdom/Work_lists", can_client_issue_orders()); + menus_set_sensitive("
/_Kingdom/_Revolution", can_client_issue_orders()); menus_set_sensitive("
/_Reports/S_paceship", (game.player_ptr->spaceship.state!=SSHIP_NONE)); @@ -987,6 +991,12 @@ menus_set_sensitive("
/_View/Focus Unit", !draw_units); menus_set_active("
/_View/Fog of War", draw_fog_of_war); + /* Remaining part of this function: Update Orders menu */ + + if (!can_client_issue_orders()) { + return; + } + if((punit=get_unit_in_focus())) { char *irrfmt = _("Change to %s (_I)"); char *minfmt = _("Change to %s (_M)"); diff -urN -Xfreeciv-orig/diff_ignore freeciv-orig/client/gui-mui/gui_main.c freeciv-work/client/gui-mui/gui_main.c --- freeciv-orig/client/gui-mui/gui_main.c Sat Aug 24 16:37:44 2002 +++ freeciv-work/client/gui-mui/gui_main.c Thu Sep 26 14:37:29 2002 @@ -412,8 +412,7 @@ } break; case END_TURN: - if (get_client_state() == CLIENT_GAME_RUNNING_STATE) - key_end_turn(); + key_end_turn(); break; case NEXT_UNIT: advance_unit_focus(); /*focus_to_next_unit(); */ diff -urN -Xfreeciv-orig/diff_ignore freeciv-orig/client/packhand.c freeciv-work/client/packhand.c --- freeciv-orig/client/packhand.c Thu Sep 26 14:22:22 2002 +++ freeciv-work/client/packhand.c Thu Sep 26 15:51:09 2002 @@ -280,7 +280,9 @@ popdown_races_dialog(); } + freelog(LOG_NORMAL,"Packet Status 1: %d",packet->value); set_client_state(packet->value); + freelog(LOG_NORMAL,"Packet Status 2: %d",packet->value); if(get_client_state()==CLIENT_GAME_RUNNING_STATE) { refresh_overview_canvas(); @@ -1061,7 +1063,7 @@ game.heating=pinfo->heating; game.nuclearwinter=pinfo->nuclearwinter; game.cooling=pinfo->cooling; - if(get_client_state()!=CLIENT_GAME_RUNNING_STATE) { + if (!can_client_change_view()) { improvement_status_init(game.improvements, ARRAY_SIZE(game.improvements)); @@ -1095,9 +1097,8 @@ /* Only update effects if a new wonder appeared or was destroyed */ try_update_effects(need_effect_update); - if(get_client_state()!=CLIENT_GAME_RUNNING_STATE) { - if(get_client_state()==CLIENT_SELECT_RACE_STATE) - popdown_races_dialog(); + if (get_client_state() == CLIENT_SELECT_RACE_STATE) { + popdown_races_dialog(); } game.techpenalty=pinfo->techpenalty; game.foodbox=pinfo->foodbox; @@ -1239,7 +1240,7 @@ update_worklist_report_dialog(); if (pplayer == game.player_ptr - && get_client_state() == CLIENT_GAME_RUNNING_STATE) { + && get_client_state() >= CLIENT_GAME_RUNNING_STATE) { update_info_label(); } } @@ -1560,7 +1561,7 @@ } /* refresh tiles */ - if(get_client_state()==CLIENT_GAME_RUNNING_STATE) { + if (get_client_state() >= CLIENT_GAME_RUNNING_STATE) { int x = packet->x, y = packet->y; /* the tile itself */