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