I think you have changed the behaviour here.

Only the current player can normally press space to make the fall of 
bonus box fastest. It have to be discussed I guess.

Florian Köberle a écrit :
> ---
>  lib/wormux/include/WORMUX_action.h      |    1 +
>  src/game/game.cpp                       |   16 ++++++++++++++++
>  src/game/game.h                         |    1 +
>  src/include/action_handler.cpp          |    7 +++++++
>  src/interface/man_machine_interface.cpp |    6 +-----
>  5 files changed, 26 insertions(+), 5 deletions(-)
>
> diff --git a/lib/wormux/include/WORMUX_action.h 
> b/lib/wormux/include/WORMUX_action.h
> index cc612b9..489154a 100644
> --- a/lib/wormux/include/WORMUX_action.h
> +++ b/lib/wormux/include/WORMUX_action.h
> @@ -116,6 +116,7 @@ public:
>  
>      // Bonus Box
>      ACTION_DROP_BONUS_BOX,
> +    ACTION_REQUEST_BONUS_BOX_DROP,
>  
>      // ########################################################
>      ACTION_NETWORK_PING,
> diff --git a/src/game/game.cpp b/src/game/game.cpp
> index c4b6fcd..0f0eee8 100644
> --- a/src/game/game.cpp
> +++ b/src/game/game.cpp
> @@ -632,6 +632,22 @@ bool Game::NewBox()
>    return true;
>  }
>  
> +void Game::RequestBonusBoxDrop()
> +{
> +  ObjBox* current_box = Game::GetInstance()->GetCurrentBox();
> +  if (current_box != NULL) {
> +    if (Network::GetInstance()->IsTurnMaster()) {
> +      Action a(Action::ACTION_DROP_BONUS_BOX);
> +      Network::GetInstance()->SendActionToAll(a);
> +
> +      current_box->DropBox();
> +    } else {
> +      Action a(Action::ACTION_REQUEST_BONUS_BOX_DROP);
> +      Network::GetInstance()->SendActionToAll(a);
> +    }
> +  }
> +}
> +
>  void Game::SetState(game_loop_state_t new_state, bool begin_game)
>  {
>    if (begin_game &&
> diff --git a/src/game/game.h b/src/game/game.h
> index 69b7a0c..94dc429 100644
> --- a/src/game/game.h
> +++ b/src/game/game.h
> @@ -153,5 +153,6 @@ public:
>    bool NewBox();
>    void SetCurrentBox(ObjBox * current_box) { current_ObjBox = current_box; };
>    ObjBox * GetCurrentBox() { return current_ObjBox; };
> +  void RequestBonusBoxDrop();
>  };
>  #endif // GAME_H
> diff --git a/src/include/action_handler.cpp b/src/include/action_handler.cpp
> index 968f116..26037c7 100644
> --- a/src/include/action_handler.cpp
> +++ b/src/include/action_handler.cpp
> @@ -325,6 +325,12 @@ static void Action_DropBonusBox (Action */*a*/)
>    }
>  }
>  
> +static void Action_RequestBonusBoxDrop (Action */*a*/)
> +{
> +  if (Network::GetInstance()->IsTurnMaster())
> +    Game::GetInstance()->RequestBonusBoxDrop();
> +}
> +
>  // ########################################################
>  
>  static void Action_Rules_SetGameMode (Action *a)
> @@ -999,6 +1005,7 @@ void Action_Handler_Init()
>  
>    // Bonus box
>    ActionHandler::GetInstance()->Register (Action::ACTION_DROP_BONUS_BOX, 
> "BONUSBOX_drop_box", &Action_DropBonusBox);
> +  ActionHandler::GetInstance()->Register 
> (Action::ACTION_REQUEST_BONUS_BOX_DROP, "BONUSBOX_request_box_drop", 
> &Action_RequestBonusBoxDrop);
>    // ########################################################
>    ActionHandler::GetInstance()->Register (Action::ACTION_NETWORK_PING, 
> "NETWORK_ping", &Action_Network_Ping);
>    ActionHandler::GetInstance()->Register 
> (Action::ACTION_NETWORK_RANDOM_INIT, "NETWORK_random_init", 
> &Action_Network_RandomInit);
> diff --git a/src/interface/man_machine_interface.cpp 
> b/src/interface/man_machine_interface.cpp
> index bc480fa..ea9ee87 100644
> --- a/src/interface/man_machine_interface.cpp
> +++ b/src/interface/man_machine_interface.cpp
> @@ -266,11 +266,7 @@ void ManMachineInterface::HandleKeyReleased(const Key_t 
> &key)
>    if (key == KEY_SHOOT) {
>  
>      if (Game::GetInstance()->ReadState() == Game::END_TURN) {
> -      ObjBox* current_box = Game::GetInstance()->GetCurrentBox();
> -      if (current_box != NULL) {
> -        Action * a = new Action(Action::ACTION_DROP_BONUS_BOX);
> -        ActionHandler::GetInstance()->NewAction(a);
> -      }
> +      Game::GetInstance()->RequestBonusBoxDrop();
>      } else if (Game::GetInstance()->ReadState() == Game::PLAYING &&
>                 ActiveTeam().IsLocal() &&
>                 !ActiveCharacter().IsDead()) {
>   


_______________________________________________
Wormux-dev mailing list
Wormux-dev@gna.org
https://mail.gna.org/listinfo/wormux-dev

Répondre à