Beispiel #1
0
    private void CheckDestruction()
    {
        if (!destroyed && integrity <= 0)
        {
            Profiler.BeginSample("IntegrityOnWillDestroy");
            var destructInfo = new DestructionInfo(lastDamageType, this);
            OnWillDestroyServer.Invoke(destructInfo);
            Profiler.EndSample();

            if (onFire)
            {
                //ensure we stop burning
                SyncOnFire(onFire, false);
            }

            if (destructInfo.DamageType == DamageType.Burn)
            {
                if (OnBurnUpServer != null)
                {
                    OnBurnUpServer(destructInfo);
                }
                else
                {
                    DefaultBurnUp(destructInfo);
                }
            }
            else
            {
                DefaultDestroy(destructInfo);
            }

            destroyed = true;
        }
    }
Beispiel #2
0
    private void CheckDestruction()
    {
        if (!destroyed && integrity <= 0)
        {
            var destructInfo = new DestructionInfo(lastDamageType);
            OnWillDestroyServer.Invoke(destructInfo);

            if (onFire)
            {
                //ensure we stop burning
                SyncOnFire(false);
            }

            if (destructInfo.DamageType == DamageType.Burn)
            {
                if (OnBurnUpServer != null)
                {
                    OnBurnUpServer(destructInfo);
                }
                else
                {
                    DefaultBurnUp(destructInfo);
                }
            }
            else
            {
                DefaultDestroy(destructInfo);
            }

            destroyed = true;
        }
    }
Beispiel #3
0
        public void HitBoat()
        {
            Hits++;

            if (Hits == Length)
            {
                IsDestroyed = true;
                DestructionEvent?.Invoke(Id);
            }
        }
Beispiel #4
0
    private void CheckDestruction(bool explodeOnDestroy = false)
    {
        if (!destroyed && integrity <= 0)
        {
            Profiler.BeginSample("IntegrityOnWillDestroy");
            var destructInfo = new DestructionInfo(lastDamageType, this);
            OnWillDestroyServer.Invoke(destructInfo);
            Profiler.EndSample();

            if (onFire)
            {
                //ensure we stop burning
                SyncOnFire(onFire, false);
            }

            if (explodeOnDestroy)
            {
                Explosion.StartExplosion(registerTile.WorldPositionServer, ExplosionsDamage);
            }

            if (destructInfo.DamageType == DamageType.Burn)
            {
                if (OnBurnUpServer != null)
                {
                    OnBurnUpServer(destructInfo);
                }
                else
                {
                    DefaultBurnUp(destructInfo);
                }
            }
            else
            {
                DefaultDestroy(destructInfo);
            }

            destroyed = true;
        }
    }