Fix no plunger replay with local state
This commit is contained in:
parent
95564c4d74
commit
2bc01f5f98
@ -168,7 +168,8 @@ bool Plunger::updateAndDelete(int ticks)
|
||||
*/
|
||||
bool Plunger::hit(AbstractKart *kart, PhysicalObject *obj)
|
||||
{
|
||||
if (isOwnerImmunity(kart) || m_moved_to_infinity) return false;
|
||||
if (isOwnerImmunity(kart) || m_moved_to_infinity || m_undo_creation)
|
||||
return false;
|
||||
|
||||
// pulling back makes no sense in battle mode, since this mode is not a race.
|
||||
// so in battle mode, always hide view
|
||||
@ -257,7 +258,7 @@ BareNetworkString* Plunger::saveState(std::vector<std::string>* ru)
|
||||
if (!buffer)
|
||||
return NULL;
|
||||
|
||||
buffer->addUInt16(m_keep_alive).addUInt8(m_moved_to_infinity ? 1 : 0);
|
||||
buffer->addUInt16(m_keep_alive);
|
||||
if (m_rubber_band)
|
||||
buffer->addUInt8(m_rubber_band->get8BitState());
|
||||
else
|
||||
@ -270,7 +271,7 @@ void Plunger::restoreState(BareNetworkString *buffer, int count)
|
||||
{
|
||||
Flyable::restoreState(buffer, count);
|
||||
m_keep_alive = buffer->getUInt16();
|
||||
m_moved_to_infinity = buffer->getUInt8() == 1;
|
||||
m_moved_to_infinity = false;
|
||||
uint8_t bit_state = buffer->getUInt8();
|
||||
if (bit_state == 255 && m_rubber_band)
|
||||
{
|
||||
|
@ -48,7 +48,11 @@ private:
|
||||
|
||||
bool m_reverse_mode, m_has_locally_played_sound, m_moved_to_infinity;
|
||||
|
||||
virtual void additionalPhysicsProperties() OVERRIDE { m_keep_alive = -1; }
|
||||
virtual void additionalPhysicsProperties() OVERRIDE
|
||||
{
|
||||
m_keep_alive = -1;
|
||||
m_moved_to_infinity = false;
|
||||
}
|
||||
virtual void hideNodeWhenUndoDestruction() OVERRIDE;
|
||||
public:
|
||||
Plunger(AbstractKart *kart);
|
||||
|
Loading…
Reference in New Issue
Block a user