Bugfix: projectiles were not handled correctly on the client, resulting in
a crash. git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/trunk/supertuxkart@2253 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
10915df3bb
commit
26324da7a2
18
src/kart.cpp
18
src/kart.cpp
@ -471,18 +471,18 @@ void Kart::raceFinished(float time)
|
||||
} // raceFinished
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void Kart::collectedHerring(const Herring &herring, int random_attachment)
|
||||
void Kart::collectedHerring(const Herring &herring, int add_info)
|
||||
{
|
||||
const herringType type = herring.getType();
|
||||
const int OLD_HERRING_GOBBLED = m_num_herrings_gobbled;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case HE_GREEN : m_attachment.hitGreenHerring(herring); break;
|
||||
case HE_SILVER : m_num_herrings_gobbled++ ; break;
|
||||
case HE_GOLD : m_num_herrings_gobbled += 3 ; break;
|
||||
case HE_GREEN : m_attachment.hitGreenHerring(herring, add_info); break;
|
||||
case HE_SILVER : m_num_herrings_gobbled++ ; break;
|
||||
case HE_GOLD : m_num_herrings_gobbled += 3 ; break;
|
||||
case HE_RED : int n=1 + 4*getNumHerring() / MAX_HERRING_EATEN;
|
||||
m_collectable.hitRedHerring(n, herring); break;
|
||||
m_collectable.hitRedHerring(n, herring, add_info); break;
|
||||
} // switch TYPE
|
||||
|
||||
// Attachments and collectables are stored in the corresponding
|
||||
@ -564,6 +564,14 @@ void Kart::handleExplosion(const Vec3& pos, bool direct_hit)
|
||||
//-----------------------------------------------------------------------------
|
||||
void Kart::update(float dt)
|
||||
{
|
||||
// Store the actual kart controls at the start of update in the server
|
||||
// state. This makes it easier to reset some fields when they are not used
|
||||
// anymore (e.g. controls.fire).
|
||||
if(network_manager->getMode()==NetworkManager::NW_SERVER)
|
||||
{
|
||||
race_state->storeKartControls(*this);
|
||||
}
|
||||
|
||||
// On a client fiering is done upon receiving the command from the server.
|
||||
if ( m_controls.fire && network_manager->getMode()!=NetworkManager::NW_CLIENT
|
||||
&& !isRescue())
|
||||
|
Loading…
x
Reference in New Issue
Block a user