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
Wormux-dev@gna.org
https://mail.gna.org/listinfo/wormux-dev

Répondre à