Hm, I would have seen this patch at the end of the series, otherwise it
is ok.
(but remember I have not tested the patch-set)
Florian Köberle a écrit :
> Previous to this patch remote characters don't drop dynamites and grenades.
> This bug occurred from time to time previous to the last patch and occurred
> constantly since the last patch.
>
> Additionally this patch makes the code simpler and reduce the network traffic.
> ---
> lib/wormux/include/WORMUX_action.h | 1 -
> src/game/game.cpp | 41 +++++++++--------------------------
> src/game/game.h | 7 ++---
> src/include/action_handler.cpp | 7 ------
> 4 files changed, 14 insertions(+), 42 deletions(-)
>
> diff --git a/lib/wormux/include/WORMUX_action.h
> b/lib/wormux/include/WORMUX_action.h
> index a64a515..b02c5e3 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_SET_STATE,
> ACTION_GAMELOOP_NEXT_TEAM,
> ACTION_GAME_CALCULATE_FRAME,
>
> diff --git a/src/game/game.cpp b/src/game/game.cpp
> index 47cd16d..c4b6fcd 100644
> --- a/src/game/game.cpp
> +++ b/src/game/game.cpp
> @@ -632,11 +632,17 @@ bool Game::NewBox()
> return true;
> }
>
> -
> -void Game::Really_SetState(game_loop_state_t new_state)
> +void Game::SetState(game_loop_state_t new_state, bool begin_game)
> {
> + if (begin_game &&
> + (Network::GetInstance()->IsGameMaster() ||
> Network::GetInstance()->IsLocal()))
> + Network::GetInstance()->SetTurnMaster(true);
> +
> // already in good state, nothing to do
> - if (state == new_state) return;
> + if ((state == new_state) && !begin_game) return;
> +
> + MSG_DEBUG("game", "Ask for state %d", new_state);
> +
> state = new_state;
>
> Interface::GetInstance()->weapons_menu.Hide();
> @@ -661,31 +667,6 @@ void Game::Really_SetState(game_loop_state_t new_state)
> }
> }
>
> -void Game::SetState(game_loop_state_t new_state, bool begin_game) const
> -{
> - if (begin_game &&
> - (Network::GetInstance()->IsGameMaster() ||
> Network::GetInstance()->IsLocal()))
> - Network::GetInstance()->SetTurnMaster(true);
> -
> - if (!Network::GetInstance()->IsTurnMaster())
> - return;
> -
> - // already in good state, nothing to do
> - if ((state == new_state) && !begin_game) return;
> -
> - // Send information about energy and position of every characters
> - // ONLY at the beginning of a new turn!
> - // (else you can send unstable information of a character which is moving)
> - // See bug #10668
> - if (Network::GetInstance()->IsTurnMaster() && new_state == PLAYING)
> - SyncCharacters();
> -
> - MSG_DEBUG("game", "Ask for state %d", new_state);
> - Action *a = new Action(Action::ACTION_GAMELOOP_SET_STATE);
> - a->Push(new_state);
> - ActionHandler::GetInstance()->NewAction(a);
> -}
> -
> PhysicalObj* Game::GetMovingObject() const
> {
> if (!ActiveCharacter().IsImmobile())
> @@ -736,7 +717,7 @@ bool Game::IsAnythingMoving() const
> }
>
> // Signal death of a character
> -void Game::SignalCharacterDeath (const Character *character) const
> +void Game::SignalCharacterDeath (const Character *character)
> {
> std::string txt;
>
> @@ -813,7 +794,7 @@ void Game::SignalCharacterDeath (const Character
> *character) const
> }
>
> // Signal falling or any kind of damage of a character
> -void Game::SignalCharacterDamage(const Character *character) const
> +void Game::SignalCharacterDamage(const Character *character)
> {
> MSG_DEBUG("game.endofturn", "%s has been hurt",
> character->GetName().c_str());
>
> diff --git a/src/game/game.h b/src/game/game.h
> index c563b63..69b7a0c 100644
> --- a/src/game/game.h
> +++ b/src/game/game.h
> @@ -139,16 +139,15 @@ public:
>
> // Read/Set State
> game_loop_state_t ReadState() const { return state; }
> - void SetState(game_loop_state_t new_state, bool begin_game=false) const;
> + void SetState(game_loop_state_t new_state, bool begin_game=false);
>
> void UserAsksForMenu() { ask_for_menu = true; };
> - void Really_SetState(game_loop_state_t new_state); // called by the
> action_handler
>
> // Signal death of a player
> - void SignalCharacterDeath (const Character *character) const;
> + void SignalCharacterDeath (const Character *character);
>
> // Signal character damage
> - void SignalCharacterDamage(const Character *character) const;
> + void SignalCharacterDamage(const Character *character);
>
> // Bonus box handling
> bool NewBox();
> diff --git a/src/include/action_handler.cpp b/src/include/action_handler.cpp
> index 7ba25a7..ac7c516 100644
> --- a/src/include/action_handler.cpp
> +++ b/src/include/action_handler.cpp
> @@ -344,12 +344,6 @@ static void Action_DropBonusBox (Action *a)
> }
> }
>
> -static void Action_Game_SetState (Action *a)
> -{
> - Game::game_loop_state_t state = Game::game_loop_state_t(a->PopInt());
> - Game::GetInstance()->Really_SetState(state);
> -}
> -
> // ########################################################
>
> static void Action_Rules_SetGameMode (Action *a)
> @@ -1006,7 +1000,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_GAMELOOP_SET_STATE,
> "GAMELOOP_set_state", &Action_Game_SetState);
> ActionHandler::GetInstance()->Register
> (Action::ACTION_GAME_CALCULATE_FRAME, "GAME_calculate_frame",
> &Action_Game_CalculateFrame);
>
> // ########################################################
>
_______________________________________________
Wormux-dev mailing list
[email protected]
https://mail.gna.org/listinfo/wormux-dev