// CORE

        private void OnCollisionEnter(Collision collision)
        {
            if (BoltNetwork.IsServer && collision.gameObject.CompareTag(Constants.Tag.Totem))
            {
                SendGameOverEvent();

                if (OnNexusDestroyed != null)
                {
                    OnNexusDestroyed.Invoke(OwnerTeam);
                }
            }
        }
        // PRIVATE

        private void LoseLife()
        {
            if (OnWallHit != null)
            {
                OnWallHit.Invoke(state.Lives); // Local event
            }

            if (entity.isAttached && entity.isOwner)
            {
                state.Lives--;

                foreach (var totemSpawn in FindObjectsOfType <TotemSpawner>())
                {
                    if (OwnerTeam == Team.Red && totemSpawn.RespawnSide == TotemSpawner.Side.Red)
                    {
                        totemSpawn.RespawnTotem();
                    }
                    else if (OwnerTeam == Team.Blue && totemSpawn.RespawnSide == TotemSpawner.Side.Blue)
                    {
                        totemSpawn.RespawnTotem();
                    }
                }

                TotemWallHit totemWallHitEvent = TotemWallHit.Create();
                totemWallHitEvent.Team = (int)OwnerTeam;
                totemWallHitEvent.Send();

                if (state.Lives <= 0)
                {
                    if (OnWallDestroyed != null)
                    {
                        OnWallDestroyed.Invoke(OwnerTeam);
                    }

                    BoltNetwork.Destroy(gameObject);
                }
            }
        }
Exemple #3
0
    void HandleRemoval(SpeciesWidget removed, int formerIndex)
    {
        _editTarget.RemoveAt(formerIndex);

        OnPartyChange?.Invoke(this);
    }