This patch fix the issue that characters continue to walk for one player when 
the character was walking at the end of the turn.
It also reduces network traffic and makes the code simpler.
---
 lib/wormux/include/WORMUX_action.h |    1 -
 src/game/game_blitz.cpp            |   16 ++++++----------
 src/game/game_classic.cpp          |   16 ++++++----------
 src/include/action_handler.cpp     |   15 ---------------
 src/team/teams_list.cpp            |    3 ---
 5 files changed, 12 insertions(+), 39 deletions(-)

diff --git a/lib/wormux/include/WORMUX_action.h 
b/lib/wormux/include/WORMUX_action.h
index 32c8b9c..78edd13 100644
--- a/lib/wormux/include/WORMUX_action.h
+++ b/lib/wormux/include/WORMUX_action.h
@@ -47,7 +47,6 @@ public:
     // ########################################################
     ACTION_PLAYER_CHANGE_WEAPON,
     ACTION_PLAYER_CHANGE_CHARACTER,
-    ACTION_GAMELOOP_NEXT_TEAM,
     ACTION_GAME_CALCULATE_FRAME,
 
     // ########################################################
diff --git a/src/game/game_blitz.cpp b/src/game/game_blitz.cpp
index 71a0321..bcc0636 100644
--- a/src/game/game_blitz.cpp
+++ b/src/game/game_blitz.cpp
@@ -173,17 +173,13 @@ void GameBlitz::__SetState_PLAYING()
 
   // Select the next team
   ASSERT (!IsGameFinished());
+  GetTeamsList().NextTeam();
 
-  if (Network::GetInstance()->IsTurnMaster() || 
Network::GetInstance()->IsLocal()) {
-
-    GetTeamsList().NextTeam();
-
-    // Are we turn master for next turn ?
-    if (ActiveTeam().IsLocal() || ActiveTeam().IsLocalAI())
-      Network::GetInstance()->SetTurnMaster(true);
-    else
-      Network::GetInstance()->SetTurnMaster(false);
-  }
+  // Are we turn master for next turn ?
+  if (ActiveTeam().IsLocal() || ActiveTeam().IsLocalAI())
+    Network::GetInstance()->SetTurnMaster(true);
+  else
+    Network::GetInstance()->SetTurnMaster(false);
 
   // initialize counter
   Interface::GetInstance()->UpdateTimer(GetCurrentTeam()->second);
diff --git a/src/game/game_classic.cpp b/src/game/game_classic.cpp
index 913b008..f3c07fc 100644
--- a/src/game/game_classic.cpp
+++ b/src/game/game_classic.cpp
@@ -160,17 +160,13 @@ void GameClassic::__SetState_PLAYING()
 
   // Select the next team
   ASSERT (!IsGameFinished());
+  GetTeamsList().NextTeam();
 
-  if (Network::GetInstance()->IsTurnMaster() || 
Network::GetInstance()->IsLocal()) {
-
-    GetTeamsList().NextTeam();
-
-    // Are we turn master for next turn ?
-    if (ActiveTeam().IsLocal() || ActiveTeam().IsLocalAI())
-      Network::GetInstance()->SetTurnMaster(true);
-    else
-      Network::GetInstance()->SetTurnMaster(false);
-  }
+  // Are we turn master for next turn ?
+  if (ActiveTeam().IsLocal() || ActiveTeam().IsLocalAI())
+    Network::GetInstance()->SetTurnMaster(true);
+  else
+    Network::GetInstance()->SetTurnMaster(false);
 
   give_objbox = true; //hack: make it so that there is no more than one objbox 
per turn
 }
diff --git a/src/include/action_handler.cpp b/src/include/action_handler.cpp
index 3be723f..65ef7ab 100644
--- a/src/include/action_handler.cpp
+++ b/src/include/action_handler.cpp
@@ -310,20 +310,6 @@ static void Action_Player_ChangeCharacter (Action *a)
   Camera::GetInstance()->FollowObject(&ActiveCharacter(), true);
 }
 
-static void Action_Game_NextTeam (Action *a)
-{
-  std::string team = a->PopString();
-  GetTeamsList().SetActive(team);
-  ActiveTeam().NextCharacter(true);
-  Camera::GetInstance()->FollowObject(&ActiveCharacter(), true);
-
-  // Are we turn master for next turn ?
-  if (ActiveTeam().IsLocal() || ActiveTeam().IsLocalAI())
-    Network::GetInstance()->SetTurnMaster(true);
-  else
-    Network::GetInstance()->SetTurnMaster(false);
-}
-
 static void Action_Game_CalculateFrame (Action */*a*/)
 {
   // Nothing to do here:
@@ -951,7 +937,6 @@ void Action_Handler_Init()
   // ########################################################
   ActionHandler::GetInstance()->Register (Action::ACTION_PLAYER_CHANGE_WEAPON, 
"PLAYER_change_weapon", &Action_Player_ChangeWeapon);
   ActionHandler::GetInstance()->Register 
(Action::ACTION_PLAYER_CHANGE_CHARACTER, "PLAYER_change_character", 
&Action_Player_ChangeCharacter);
-  ActionHandler::GetInstance()->Register (Action::ACTION_GAMELOOP_NEXT_TEAM, 
"GAMELOOP_change_team", &Action_Game_NextTeam);
   ActionHandler::GetInstance()->Register (Action::ACTION_GAME_CALCULATE_FRAME, 
"GAME_calculate_frame", &Action_Game_CalculateFrame);
 
   // ########################################################
diff --git a/src/team/teams_list.cpp b/src/team/teams_list.cpp
index 98b1457..2ddd0b5 100644
--- a/src/team/teams_list.cpp
+++ b/src/team/teams_list.cpp
@@ -77,9 +77,6 @@ void TeamsList::NextTeam ()
 
   ActiveTeam().NextCharacter(true);
 
-  Action a(Action::ACTION_GAMELOOP_NEXT_TEAM, next->GetId());
-  Network::GetInstance()->SendActionToAll(a);
-
   printf("\nPlaying character : %i %s\n", 
ActiveCharacter().GetCharacterIndex(), ActiveCharacter().GetName().c_str());
   printf("Playing team : %i %s\n", ActiveCharacter().GetTeamIndex(), 
ActiveTeam().GetName().c_str());
   printf("Alive characters: %i / 
%i\n\n",ActiveTeam().NbAliveCharacter(),ActiveTeam().GetNbCharacters());
-- 
1.6.0.4


_______________________________________________
Wormux-dev mailing list
Wormux-dev@gna.org
https://mail.gna.org/listinfo/wormux-dev

Répondre à