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 2b9a9c4..4f6e957 100644
--- a/lib/wormux/include/WORMUX_action.h
+++ b/lib/wormux/include/WORMUX_action.h
@@ -74,7 +74,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 4e3b6da..06da844 100644
--- a/src/game/game_blitz.cpp
+++ b/src/game/game_blitz.cpp
@@ -171,17 +171,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 d1009c9..3fad12d 100644
--- a/src/game/game_classic.cpp
+++ b/src/game/game_classic.cpp
@@ -158,17 +158,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 e144a2a..67731a0 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());
-
-  // 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:
@@ -952,7 +938,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 4f8779e..bc0b82c 100644
--- a/src/team/teams_list.cpp
+++ b/src/team/teams_list.cpp
@@ -64,9 +64,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 à