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