[Freeciv-Dev] (PR#40550) Turn done active after re-join

2008-11-04 Thread Madeline Book

http://bugs.freeciv.org/Ticket/Display.html?id=40550 >

> [EMAIL PROTECTED] - Tue Nov 04 17:16:25 2008]:
> 
> I noticed this with 2.1.6 GTK and have not tested it on
> previous versions.

I have confirmed this bug in S2_1 and trunk.

> The thing is: on multiplayer (turn block) game, if a
> player klicks the turn done button, leaves the game and
> returns before the turn is over, the turn done button is
> active again. On the nations report the status indicator
> is done, though, and when other players klick the button,
> the turn is over.

The client sets its own player's "phase done" state to
FALSE when it receives a start phase packet. The code that
does this was introduced in the patch in ticket #12377
(r10021) to fix a different bug related to the turn done
button at that time.

> A small thing but may cause confusion. Maybe it's also a
> small one to fix?

The amount of code that needs to be changed is small, but the
amount I needed to sift through was not. ;(,,,

Anyway, the attached patches remove the offending code from
S2_1 and trunk, since (with the patches applied) I could not
reproduce the problem described in #12377 (i.e. the turn done
button staying insensitive upon a new turn [except of course
if turnblock=1 and a non-done player disconnects]).


---
どいつもこいつも汚いゴミを片付けることが好きらしい。
diff --git a/client/packhand.c b/client/packhand.c
index 81397fb..b53d6e0 100644
--- a/client/packhand.c
+++ b/client/packhand.c
@@ -1036,10 +1036,6 @@ void handle_start_phase(int phase)
 
   if (NULL != client.conn.playing
   && is_player_phase(client.conn.playing, phase)) {
-/* HACK: this is updated by the player packet too; we update it here
- * so the turn done button state will be set properly. */
-client.conn.playing->phase_done = FALSE;
-
 agents_start_turn();
 non_ai_unit_focus = FALSE;
 
diff --git a/client/packhand.c b/client/packhand.c
index 8991f8f..c5422a0 100644
--- a/client/packhand.c
+++ b/client/packhand.c
@@ -889,10 +889,6 @@ void handle_start_phase(int phase)
   game.info.phase = phase;
 
   if (game.player_ptr && is_player_phase(game.player_ptr, phase)) {
-/* HACK: this is updated by the player packet too; we update it here
- * so the turn done button state will be set properly. */
-game.player_ptr->phase_done = FALSE;
-
 agents_start_turn();
 non_ai_unit_focus = FALSE;
 
@@ -1514,7 +1510,7 @@ void start_revolution(void)
 void handle_player_info(struct packet_player_info *pinfo)
 {
   int i;
-  bool poptechup, new_tech = FALSE;
+  bool poptechup, new_tech = FALSE, phase_done_changed;
   char msg[MAX_LEN_MSG];
   struct player *pplayer = &game.players[pinfo->playerno];
   struct player_research* research;
@@ -1652,10 +1648,7 @@ void handle_player_info(struct packet_player_info *pinfo)
 
   pplayer->is_ready = pinfo->is_ready;
 
-  if (pplayer == game.player_ptr
-  && pplayer->phase_done != pinfo->phase_done) {
-update_turn_done_button_state();
-  }
+  phase_done_changed = (pplayer->phase_done != pinfo->phase_done);
   pplayer->phase_done = pinfo->phase_done;
 
   pplayer->nturns_idle=pinfo->nturns_idle;
@@ -1665,6 +1658,9 @@ void handle_player_info(struct packet_player_info *pinfo)
   pplayer->revolution_finishes = pinfo->revolution_finishes;
   pplayer->ai.skill_level = pinfo->ai_skill_level;
 
+  if (pplayer == game.player_ptr && phase_done_changed) {
+update_turn_done_button_state();
+  }
   update_players_dialog();
   update_worklist_report_dialog();
   upgrade_canvas_clipboard();
___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev


[Freeciv-Dev] (PR#40550) Turn done active after re-join

2008-11-04 Thread Jarmo

http://bugs.freeciv.org/Ticket/Display.html?id=40550 >

Hi,

I noticed this with 2.1.6 GTK and have not tested it on previous versions.

The thing is: on multiplayer (turn block) game, if a player klicks the 
turn done button, leaves the game and returns before the turn is over, 
the turn done button is active again. On the nations report the status 
indicator is done, though, and when other players klick the button, the 
turn is over.

A small thing but may cause confusion. Maybe it's also a small one to fix?

.HanduMan






___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev