Пример #1
0
    public virtual void PowerNetworkUpdate()
    {
        ElectricityFunctions.WorkOutActualNumbers(wireConnect);
        if (MaximumInstantBreakCurrent != 0 && CanOverCurrent)
        {
            if (MaximumInstantBreakCurrent < wireConnect.Data.CurrentInWire)
            {
                QueueForDemolition(this);
                return;
            }
            if (MaximumBreakdownCurrent < wireConnect.Data.CurrentInWire)
            {
                if (CheckDestruction)
                {
                    if (wireConnect.RelatedLine != null)
                    {
                        foreach (var CB in wireConnect.RelatedLine.Covering)
                        {
                            CB.gameObject.GetComponent <CableInheritance>()?.Smoke.Stop();
                        }
                    }
                    QueueForDemolition(this);
                    return;
                }
                else
                {
                    if (wireConnect.RelatedLine != null)
                    {
                        foreach (var CB in wireConnect.RelatedLine.Covering)
                        {
                            CB.gameObject.GetComponent <CableInheritance>()?.Smoke.Play();
                        }
                    }
                    Smoke.Play();
                    StartCoroutine(WaitForDemolition());
                    return;
                }
            }
            if (CheckDestruction)
            {
                CheckDestruction = false;
                if (wireConnect.RelatedLine != null)
                {
                    foreach (var CB in wireConnect.RelatedLine.Covering)
                    {
                        CB.gameObject.GetComponent <CableInheritance>()?.Smoke.Stop();
                    }
                }
                Smoke.Stop();
            }

            if (IsSparking())
            {
                Sparks.Stop();
            }
        }
    }
Пример #2
0
    void OnCollisionEnter2D(Collision2D collision)
    {
        var target = collision.gameObject.GetMessageBus();

        MessageToTarget(target);
        MessageToTarget(gameObject.GetMessageBus());

        Sparks.Instantiate(
            transform.position,
            collision.contacts[0].normal);
    }
Пример #3
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        Pipe pipe = collision.gameObject.GetComponent <Pipe>();

        if (pipe != null)
        {
            Debug.Log("Fireball: Collision with Pipe");
            Sparks newSpark = Instantiate(sparks, transform.position, Quaternion.identity);
            newSpark.ShowSparks();
            Destroy(gameObject);
            Destroy(collision.gameObject);
        }
    }
Пример #4
0
 public void QueueForDemolition(CableInheritance CableToDestroy)
 {
     if (!IsSparking())
     {
         Sparks.Play();
     }
     DestructionPriority = wireConnect.Data.CurrentInWire * MaximumBreakdownCurrent;
     if (ElectricalSynchronisation.CableToDestroy != null)
     {
         if (DestructionPriority > ElectricalSynchronisation.CableToDestroy.DestructionPriority)
         {
             ElectricalSynchronisation.CableUpdates.Add(ElectricalSynchronisation.CableToDestroy);
             ElectricalSynchronisation.CableToDestroy = this;
         }
         else
         {
             ElectricalSynchronisation.CableUpdates.Add(this);
         }
     }
     else
     {
         ElectricalSynchronisation.CableToDestroy = this;
     }
 }