示例#1
0
    private void Start()
    {
        health = maxHealth;
        fuel   = maxFuel;

        ShipHealthUpdated?.Invoke(health);
        ShipFuelUpdated?.Invoke(fuel);

        ShipUpgradeManager.FuelCapUpgraded          += OnUpgradeFuelCap;
        ShipUpgradeManager.FuelDrainUpgraded        += OnFuelDrainUpgraded;
        ShipUpgradeManager.DamageMultiplierUpgraded += OnDamageMultiplierUpgraded;
    }
示例#2
0
    public void DrainFuel(float fuelUsed)
    {
        fuel -= fuelUsed;

        if (fuel <= 0)
        {
            fuel    = 0;
            isEmpty = true;
            ShipOutOfFuel?.Invoke(isEmpty);
        }

        ShipFuelUpdated?.Invoke(fuel);
    }
示例#3
0
    private IEnumerator HandleRespawn(float timer)
    {
        yield return(new WaitForSeconds(timer));

        health = maxHealth;
        fuel   = maxFuel;
        transform.parent.position = respawnPoint.position;
        transform.parent.rotation = respawnPoint.rotation;
        isDead = false;

        ShipHealthUpdated?.Invoke(health);
        ShipFuelUpdated?.Invoke(fuel);
        ShipHasRespawned?.Invoke();
    }
示例#4
0
    // Repairs and Refuels the ship each call. Checks if both fuel and health are
    // full, and returns true if R&R is complete, and false if R&R needs to continue.
    public bool RepairAndRefuel()
    {
        health = Mathf.Clamp(health + repairPerTick, 0, maxHealth);
        fuel   = Mathf.Clamp(fuel + refuelPerTick, 0, maxFuel);
        ShipFuelUpdated?.Invoke(fuel);
        ShipHealthUpdated?.Invoke(health);

        if (health == maxHealth && fuel == maxFuel)
        {
            return(true);
        }
        else
        {
            return(false);
        }
    }