Exemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            lastTimeClosed = DateTime.Now.Subtract(DateTime.MinValue).TotalSeconds;
            Application.Quit();
        }
        targetMultiplierCounter *= multiplierDecelerationFactor;
        actualMultiplierCounter  = actualMultiplierCounter * smoothFactor + targetMultiplierCounter * (1.0f - smoothFactor);
        multiplier = (int)(actualMultiplierCounter / 30.0f) + 1;
        if (actualMultiplierCounter > multiplierCountLimit)
        {
            actualMultiplierCounter = multiplierCountLimit;
        }
        if (multiplier > maxMultiplier)
        {
            multiplier = maxMultiplier;
        }
        if (currentPlanet.traveledDistance >= currentPlanet.distanceToTravel)
        {
            return;
        }

        newAdditionalSpeed *= decelerationFactor;

        if (boostComp.GetBoostStatus())
        {
            //boost = clicker.GetCurrentValue () * (double)maxMultiplier;
            boost = baseSpeed * 0.1f;
        }
        else
        {
            boost = 0;
        }

        targetSpeed = baseSpeed + newAdditionalSpeed + boost;

        actualSpeed = actualSpeed * smoothFactor + targetSpeed * (1 - smoothFactor);

        distance += (actualSpeed * Time.deltaTime);
        points   += (actualSpeed * Time.deltaTime) * pointsDistanceMultiplier;
        currentPlanet.MovePlanet(targetSpeed * Time.deltaTime);
        //pretty stuff should be handled by gui instead
        //currentSpeed = Mathf.Round ((float)currentSpeed);
        //distance = Mathf.Round ((float)distance);

        if (Time.time - lastAccelerationTime > 1.0f)
        {
            clicksPerSecond = 1.0f;
        }
        CalculateETA();
    }