Show a message once a goal is made in soccer (#4304)

* log the goal on server once a player scored in soccer

* show a message once a player made a goal in soccer

* bug fix, add comments

* remove server log
This commit is contained in:
riso 2020-05-30 00:28:27 -05:00 committed by GitHub
parent 7829cb3928
commit 661688db2d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -23,6 +23,7 @@
#include "config/user_config.hpp" #include "config/user_config.hpp"
#include "io/file_manager.hpp" #include "io/file_manager.hpp"
#include "graphics/irr_driver.hpp" #include "graphics/irr_driver.hpp"
#include "guiengine/message_queue.hpp"
#include "karts/abstract_kart_animation.hpp" #include "karts/abstract_kart_animation.hpp"
#include "karts/kart_model.hpp" #include "karts/kart_model.hpp"
#include "karts/kart_properties.hpp" #include "karts/kart_properties.hpp"
@ -43,6 +44,7 @@
#include "tracks/track_object_manager.hpp" #include "tracks/track_object_manager.hpp"
#include "tracks/track_sector.hpp" #include "tracks/track_sector.hpp"
#include "utils/constants.hpp" #include "utils/constants.hpp"
#include "utils/translation.hpp"
#include "utils/string_utils.hpp" #include "utils/string_utils.hpp"
#include <IMeshSceneNode.h> #include <IMeshSceneNode.h>
@ -510,13 +512,22 @@ void SoccerWorld::onCheckGoalTriggered(bool first_goal)
m_karts[m_ball_hitter]->getKartModel() m_karts[m_ball_hitter]->getKartModel()
->setAnimation(KartModel::AF_WIN_START, true/* play_non_loop*/); ->setAnimation(KartModel::AF_WIN_START, true/* play_non_loop*/);
} }
else if (!sd.m_correct_goal) else if (!sd.m_correct_goal)
{ {
m_karts[m_ball_hitter]->getKartModel() m_karts[m_ball_hitter]->getKartModel()
->setAnimation(KartModel::AF_LOSE_START, true/* play_non_loop*/); ->setAnimation(KartModel::AF_LOSE_START, true/* play_non_loop*/);
} }
#ifndef SERVER_ONLY
// show a message once a goal is made
core::stringw msg;
if (sd.m_correct_goal)
msg = _("%s scored a goal!", sd.m_player);
else
msg = _("Oops, %s made an own goal!", sd.m_player);
MessageQueue::add(MessageQueue::MT_GENERIC, msg);
#endif
if (first_goal) if (first_goal)
{ {
if (RaceManager::get()->hasTimeTarget()) if (RaceManager::get()->hasTimeTarget())
@ -623,6 +634,14 @@ void SoccerWorld::handlePlayerGoalFromServer(const NetworkString& ns)
m_blue_scorers.push_back(sd); m_blue_scorers.push_back(sd);
} }
// show a message once a goal is made
core::stringw msg;
if (sd.m_correct_goal)
msg = _("%s scored a goal!", sd.m_player);
else
msg = _("Oops, %s made an own goal!", sd.m_player);
MessageQueue::add(MessageQueue::MT_GENERIC, msg);
if (ticks_now >= ticks_back_to_own_goal && !isStartPhase()) if (ticks_now >= ticks_back_to_own_goal && !isStartPhase())
{ {
Log::warn("SoccerWorld", "Server ticks %d is too close to client ticks " Log::warn("SoccerWorld", "Server ticks %d is too close to client ticks "