Beispiel #1
0
    /// <summary>
    /// Respawns the player core, deinitializes the HUD
    /// </summary>
    public override void Respawn()
    {
        List <bool> weaponActivationStates = new List <bool>();

        for (int i = 0; i < abilities.Count; i++)
        {
            if (abilities[i] is WeaponAbility weapon)
            {
                weaponActivationStates.Add(weapon.GetActiveTimeRemaining() == -1);
            }
        }

        if (hud)
        {
            hud.DeinitializeHUD(); // deinitialize HUD
        }

        carrier = FindCarrier();
        if (carrier != null)
        {
            spawnPoint = carrier.GetSpawnPoint();
        }
        else
        {
            spawnPoint = havenSpawnPoint;
            dimension  = lastDimension;
        }

        transform.position = spawnPoint; // reset position to spawn point
        base.Respawn();                  // this will reinitialize the HUD
        spawnPoint = havenSpawnPoint;    // reset spawn point
        int weaponIndex = 0;

        for (int i = 0; i < abilities.Count; i++)
        {
            if (abilities[i] is WeaponAbility weapon)
            {
                weapon.SetActive(weaponActivationStates[weaponIndex++]);
            }
        }
    }