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