Exemple #1
0
    public void UpgradeQuantumTunnel()
    {
        if (skillsData.quantumTunnelPoints >= PlayerSkillsData.QUANTUMTUNNEL_MAX_POINTS)
        {
            toast.ShowToast("Already at max level", null, 2f);
            return;
        }

        if (quantumTunnelUpgradeCost <= currencyData.gravityPoints)
        {
            if (skillsData != null)
            {
                skillsData.quantumTunnelPoints++;
                currencyData.gravityPoints -= quantumTunnelUpgradeCost;
                quantumTunnelUpgradeCost    = GameplayMath.GetInstance().GetCostFromInitCost(skillsData.quantumTunnelPoints, INIT_QUANTUMTUNNEL_COST, GameplayMath.DEFAULT_RATIO);
            }
            SaveManager.GetInstance().SavePersistentData(skillsData, SaveManager.SKILLSDATA_PATH);
            SaveManager.GetInstance().SavePersistentData(currencyData, SaveManager.CURRENCY_PATH);
            UpdateUI();
        }
        else
        {
            toast.ShowToast("Not enough Gravity Points", null, 1.5f);
        }
    }
Exemple #2
0
    public void UpgradeSolarFlare()
    {
        if (skillsData.solarflarePoints >= PlayerSkillsData.SOLARFLARE_MAX_POINTS)
        {
            toast.ShowToast("Already at max level", null, 2f);
            return;
        }

        if (solarflareUpgradeCost <= currencyData.gravityPoints)
        {
            if (skillsData != null)
            {
                skillsData.solarflarePoints++;
                currencyData.gravityPoints -= solarflareUpgradeCost;
                solarflareUpgradeCost       = GameplayMath.GetInstance().GetCostFromInitCost(skillsData.solarflarePoints, INIT_SOLARFLARE_COST, GameplayMath.DEFAULT_RATIO);
            }
            SaveManager.GetInstance().SavePersistentData(skillsData, SaveManager.SKILLSDATA_PATH);
            SaveManager.GetInstance().SavePersistentData(currencyData, SaveManager.CURRENCY_PATH);
            UpdateUI();
        }
        else
        {
            toast.ShowToast("Not enough Gravity Points", null, 1.5f);
        }
    }
Exemple #3
0
 public void UpgradeGRB()
 {
     if (skillsData.gammaRayBurstPoints == PlayerSkillsData.GRB_MAX_POINTS - 1)
     {
         toast.ShowToast("Visit the store to unlock GRB LVL 4", null, 2f);
         return;
     }
     else if (skillsData.gammaRayBurstPoints >= PlayerSkillsData.GRB_MAX_POINTS)
     {
         toast.ShowToast("GRB already at max level", null, 1.5f);
         return;
     }
     if (GRBUpgradeCost <= currencyData.gravityPoints)
     {
         if (skillsData != null)
         {
             skillsData.gammaRayBurstPoints++;
             currencyData.gravityPoints -= GRBUpgradeCost;
             GRBUpgradeCost              = GameplayMath.GetInstance().GetGRBCost(skillsData.gammaRayBurstPoints);
         }
         SaveManager.GetInstance().SavePersistentData(skillsData, SaveManager.SKILLSDATA_PATH);
         SaveManager.GetInstance().SavePersistentData(currencyData, SaveManager.CURRENCY_PATH);
         UpdateUI();
         UpdateGRBEffect();
     }
     else
     {
         toast.ShowToast("Not enough Gravity Points", null, 1.5f);
     }
 }
Exemple #4
0
    private void Start()
    {
        playerData = SaveManager.GetInstance().LoadPersistentData(SaveManager.PLAYER_DATA).GetData <PlayerData>();

        thrustForceUpgradeCost = GameplayMath.GetInstance().GetCostFromInitCost(playerData.thrustForcePoints, INIT_THRUST_COST, GameplayMath.DEFAULT_RATIO);
        resilienceUpgradeCost  = GameplayMath.GetInstance().GetCostFromInitCost(playerData.GetHealthPoints(), INIT_HEALTH_COST, GameplayMath.RESILIENCE_RATIO);

        SaveObject objectData;

        objectData   = SaveManager.GetInstance().LoadPersistentData(SaveManager.CURRENCY_PATH);
        currencyData = objectData.GetData <CurrencyData>();
        skillsData   = SaveManager.GetInstance().LoadPersistentData(SaveManager.SKILLSDATA_PATH).GetData <PlayerSkillsData>();

        PlayerAspectData aspect = SaveManager.GetInstance().LoadPersistentData(SaveManager.ASPECTDATA_PATH).GetData <PlayerAspectData>();

        previewSphere = Instantiate(PersistentPrefs.GetInstance().GetAspectWithId(aspect.equippedSkinId).prefab);
        previewSphere.transform.SetParent(playerPreviewParent);
        previewSphere.transform.localScale    = new Vector3(200, 200, 200);
        previewSphere.transform.localPosition = new Vector3(0, 0, -1);

        antigravityUpgradeCost   = GameplayMath.GetInstance().GetCostFromInitCost(skillsData.antigravityPoints, INIT_ANTIGRAVITY_COST, GameplayMath.DEFAULT_RATIO);
        quantumTunnelUpgradeCost = GameplayMath.GetInstance().GetCostFromInitCost(skillsData.quantumTunnelPoints, INIT_QUANTUMTUNNEL_COST, GameplayMath.DEFAULT_RATIO);
        solarflareUpgradeCost    = GameplayMath.GetInstance().GetCostFromInitCost(skillsData.solarflarePoints, INIT_SOLARFLARE_COST, GameplayMath.DEFAULT_RATIO);
        GRBUpgradeCost           = GameplayMath.GetInstance().GetGRBCost(skillsData.gammaRayBurstPoints);

        UpdateUI();
        UpdateGRBEffect();
    }
Exemple #5
0
    public void LevelCompleted()
    {
        Time.timeScale = 1f;
        isGameOver     = true;
        attemptUsed    = true;

        obstacleSpawner.PauseSpawnTimer(true);
        extraSpawner.PauseSpawnTimer(true);

        LevelsData levelsData = SaveManager.GetInstance().LoadPersistentData(SaveManager.LEVELSDATA_PATH).GetData <LevelsData>();

        levelsData.UnlockLevel(currentLevel.id + 1);
        levelsData.UpdateLevelScore(currentLevel.id, (int)sessionScore);
        SaveManager.GetInstance().SavePersistentData <LevelsData>(levelsData, SaveManager.LEVELSDATA_PATH);

        sessionGravityPoints = GameplayMath.GetInstance().GetGravityPointsFromSession(sessionScore, playerManager.properTime, currentLevel);

        GradeObtained obt = CheckForGradeBonusGP();

        currencyData.gravityPoints = sessionGravityPoints + currentGravityPoints;
        SaveManager.GetInstance().SavePersistentData <CurrencyData>(currencyData, SaveManager.CURRENCY_PATH);

        CheckForPlayerLevelUp(obt);

        HUDManager.GetInstance().EnableHighGravityFieldPanel(false);
        HUDManager.GetInstance().DisplayLevelCompletedPanel();
    }
Exemple #6
0
    //

    public override void SetupObstacle()
    {
        int layerMask = LayerMask.GetMask("Obstacles");

        Collider[] colliders = Physics.OverlapSphere(transform.position, targetScale / 2, layerMask);
        if (colliders.Length > 1)
        {
            base.DeactivateObstacle();
            return;
        }

        density = Random.Range(minDensity, maxDensity);
        mass    = GameplayMath.GetInstance().GetObstacleMass(this);

        SphereCollider dangerZone   = SharedUtilities.GetInstance().GetFirstComponentInChildrenWithTag <SphereCollider>(gameObject, "DangerZone");
        SphereCollider gravityField = SharedUtilities.GetInstance().GetFirstComponentInChildrenWithTag <SphereCollider>(gameObject, "GravityField");

        gravityField.radius = 0.3E-2f * Mathf.Sqrt(mass) / targetScale;

        if (gravityField.radius <= 0.8f)
        {
            gravityField.radius = 2f;
        }

        dangerZone.radius = gravityField.radius / 14f;
        if (dangerZone.radius <= 0.6f)
        {
            dangerZone.radius = 0.62f;
        }

        base.SetupObstacle();
    }
Exemple #7
0
 public static GameplayMath GetInstance()
 {
     if (instance == null)
     {
         instance = new GameplayMath();
     }
     return(instance);
 }
Exemple #8
0
    public int CalculateLevel(int gravityPoints, GameMode.GradeObtained obt)
    {
        PlayerData data = SaveManager.GetInstance().LoadPersistentData(SaveManager.PLAYER_DATA).GetData <PlayerData>();
        int        exp  = GameplayMath.GetInstance().GetExp(gravityPoints, obt);
        int        res  = data.CalculateLevel(exp);

        SaveManager.GetInstance().SavePersistentData <PlayerData>(data, SaveManager.PLAYER_DATA);
        return(res);
    }
Exemple #9
0
    //Collision and triggers
    private void OnCollisionEnter(Collision collision)
    {
        if (gameMode.isGameOver)
        {
            return;
        }

        if (collision.collider.tag == "Obstacle")
        {
            movementManager.ResetMovementSpeed();
            dangerZoneCount--;
            GameObstacle obstacle = collision.gameObject.GetComponent <GameObstacle>();
            gravityFieldsGens.Remove(obstacle);

            if (dangerZoneCount == 0)
            {
                hudManagerInstance.EnableHighGravityFieldPanel(false);
            }

            CameraShaker.Instance.ShakeOnce(shakeMagnitude, shakeRoughness, shakeFadeInTime, shakeFadeOutTime);

            if (!extraManager.isShielded)
            {
                float damage = 0;
                switch (obstacle.type)
                {
                case Obstacle.ObstacleType.PLANET:
                    damage = 60f;
                    break;

                case Obstacle.ObstacleType.STAR:
                    damage = 80f;
                    break;

                case Obstacle.ObstacleType.WHITE_DWARF:
                    damage = 120f;
                    break;

                case Obstacle.ObstacleType.NEUTRON_STAR:
                    damage = 160f;
                    break;
                }
                TakeDamage(damage);
            }
            else
            {
                extraManager.DestroyShield();
                gameMode.BonusScore(GameplayMath.GetInstance().GetBonusPointsFromObstacleMass(obstacle.mass));
                skillManager.sessionObstaclesDestroyed++;
            }
            sessionObstaclesHit++;
        }
    }
Exemple #10
0
 void OnTriggerStay(Collider other)
 {
     if (other.tag.Equals("Player") && !playerManager.gameMode.isGameOver)
     {
         if (Time.timeSinceLevelLoad >= currentTime + dealTime)
         {
             float distanceFromCentre = Vector3.Magnitude(other.transform.position);
             float damage             = GameplayMath.GetInstance().GetDamageWithDistance(distanceFromCentre);
             playerManager.TakeDamage(damage);
             currentTime = Time.timeSinceLevelLoad;
         }
     }
 }
Exemple #11
0
    private void Start()
    {
        playerManager = gameObject.GetComponent <PlayerManager>();
        skillsData    = SaveManager.GetInstance().LoadPersistentData(SaveManager.SKILLSDATA_PATH).GetData <PlayerSkillsData>();

        unscaledGammaRayRadius = GameplayMath.GetInstance().GetGRBUnscaledRadius(skillsData.gammaRayBurstPoints);
        UpdateGRBEffect();
        antigravityCooldown   = GameplayMath.GetInstance().GetAntigravityCooldown(skillsData.antigravityPoints);
        quantumtunnelCooldown = GameplayMath.GetInstance().GetQuantumTunnelCooldown(skillsData.quantumTunnelPoints);
        solarflareCooldown    = GameplayMath.GetInstance().GetSolarflareCooldown(skillsData.solarflarePoints);
        solarflareRadius      = GameplayMath.GetInstance().GetSolarflareRadius(skillsData.solarflarePoints);
        scaledGammaRayRadius  = unscaledGammaRayRadius * ((transform.localScale.x + transform.localScale.y + transform.localScale.z) / 3);
        hudManager            = HUDManager.GetInstance();
    }
Exemple #12
0
    private IEnumerator GammaRayBurst_C()
    {
        StartCoroutine(GammaRayAsyncLoad_C());
        yield return(new WaitForSeconds(1.5f));

        if (channelGammaRaySys)
        {
            channelGammaRaySys.Stop();
        }

        Vector3 exceptionCentre = new Vector3(transform.position.x, transform.position.y, playerManager.gameMode.randZSpawn.x);

        playerManager.gameMode.NotifySpawnException(exceptionCentre, scaledGammaRayRadius, scaledGammaRayRadius, 1f, GameplayMath.GetInstance().GetGRBSpawnExceptionTime(skillsData.gammaRayBurstPoints));

        InstantiateEffect(GRBEffect);
        hudManager.CoolDownSkill(Skill.GAMMARAY_BURST, GameplayMath.GetInstance().GetGRBCooldown(skillsData.gammaRayBurstPoints));

        RaycastHit[] hitColliders = Physics.SphereCastAll(transform.position, scaledGammaRayRadius, new Vector3(0f, 0f, 1f), gammaRayLength, mask);

        int   castedObstacles = 0;
        float bonusScore      = 0;
        int   length          = hitColliders.Length;

        for (int i = 0; i < length; i++)
        {
            GameObstacle obstacleToDestroy;
            obstacleToDestroy = hitColliders[i].transform.gameObject.GetComponent <GameObstacle>();
            if (obstacleToDestroy != null)
            {
                castedObstacles++;
                obstacleToDestroy.Destroy(true);
                bonusScore += GameplayMath.GetInstance().GetBonusPointsFromObstacleMass(obstacleToDestroy.mass);
                playerManager.gravityFieldsGens.Remove(obstacleToDestroy);
            }
        }
        playerManager.gameMode.BonusScore(bonusScore);
        sessionObstaclesDestroyed += castedObstacles;
        if (playerManager.level.category == Level.LevelCategory.OBSTACLES_DESTROY && sessionObstaclesDestroyed >= playerManager.level.targetObstaclesDestoryed)
        {
            playerManager.LevelCompleted();
        }

        playerManager.dangerZoneCount = playerManager.dangerZoneCount > castedObstacles ? playerManager.dangerZoneCount - (short)castedObstacles : 0;

        if (playerManager.dangerZoneCount <= 0)
        {
            hudManager.EnableHighGravityFieldPanel(false);
        }
    }
Exemple #13
0
    private void Start()
    {
        rigidbody     = GetComponent <Rigidbody>();
        playerManager = GetComponent <PlayerManager>();

        PlayerData playerData = SaveManager.GetInstance().LoadPersistentData(SaveManager.PLAYER_DATA).GetData <PlayerData>();

        if (playerData != null)
        {
            thrustForce = GameplayMath.GetInstance().GetPlayerThrustForceFromPoints(playerData.thrustForcePoints);
        }

        zAdjust       = Vector3.zero;
        relativeSpeed = (initialMovementSpeed * 0.9f) / maxSpeed;
    }
Exemple #14
0
    public void EndSession()
    {
        GradeObtained obt = GradeObtained.UNRANKED;

        isGameOver       = true;
        highScoreReached = false;

        obstacleSpawner.PauseSpawnTimer(true);
        extraSpawner.PauseSpawnTimer(true);

        sessionGravityPoints = GameplayMath.GetInstance().GetGravityPointsFromSession(sessionScore, playerManager.properTime, currentLevel);

        if (currentLevel.category == Level.LevelCategory.ENDLESS)
        {
            LevelsData data = SaveManager.GetInstance().LoadPersistentData(SaveManager.LEVELSDATA_PATH).GetData <LevelsData>();
            data.UpdateLevelScore(LevelsData.ENDLESS_ID, (int)sessionScore);
            SaveManager.GetInstance().SavePersistentData <LevelsData>(data, SaveManager.LEVELSDATA_PATH);

            obt = CheckForGradeBonusGP();

            if (attemptUsed)
            {
                sessionGravitons = 0;
            }
            else
            {
                sessionGravitons        = GameplayMath.GetInstance().GetGravitonsFromGame(playerManager.properTime, sessionScore);
                currencyData.gravitons += sessionGravitons;
            }
        }
        currencyData.gravityPoints = sessionGravityPoints + currentGravityPoints;
        SaveManager.GetInstance().SavePersistentData <CurrencyData>(currencyData, SaveManager.CURRENCY_PATH);

        CheckForPlayerLevelUp(obt);

        if (currentLevel.category == Level.LevelCategory.ENDLESS)
        {
            HUDManager.GetInstance().DisplayGameOverPanel(true, true);
        }
        else
        {
            HUDManager.GetInstance().DisplayGameOverPanel(false, false);
        }
        HUDManager.GetInstance().EnableHighGravityFieldPanel(false);
    }
Exemple #15
0
    private void OnTriggerStay(Collider other)
    {
        if (gameMode.isGameOver)
        {
            return;
        }

        if (other.gameObject.tag.Equals("Margins") && !isDead)
        {
            directionArrow.gameObject.SetActive(true);
            float   x       = transform.position.x;
            float   y       = transform.position.y;
            Vector3 moveDir = new Vector3(-x, -y, 0);
            moveDir.Normalize();
            directionArrow.transform.localPosition = moveDir * 3.5f;
            float degrees = GameplayMath.GetInstance().arctan(x, y);
            directionArrow.transform.rotation = Quaternion.Euler(new Vector3(0, 0, degrees));
        }
    }
Exemple #16
0
    private IEnumerator SolarFlare_C()
    {
        float animDuration = solarflareEffect.GetComponent <ParticleSystem>().main.duration;

        InstantiateEffect(solarflareEffect);

        hudManager.CoolDownSkill(Skill.SOLAR_FLARE, solarflareCooldown);
        yield return(new WaitForSeconds(animDuration));

        mask = LayerMask.GetMask("Obstacles");
        Collider[] hitColliders    = Physics.OverlapSphere(gameObject.transform.position, solarflareRadius, mask);
        int        castedObstacles = 0;
        float      bonusScore      = 0;
        int        length          = hitColliders.Length;

        for (int i = 0; i < length; i++)
        {
            GameObstacle obstacleToDestroy;
            obstacleToDestroy = hitColliders[i].transform.gameObject.GetComponent <GameObstacle>();
            if (obstacleToDestroy != null)
            {
                castedObstacles++;
                obstacleToDestroy.Destroy(true);
                bonusScore += GameplayMath.GetInstance().GetBonusPointsFromObstacleMass(obstacleToDestroy.mass);
                playerManager.gravityFieldsGens.Remove(obstacleToDestroy);
            }
        }
        playerManager.gameMode.BonusScore(bonusScore);

        sessionObstaclesDestroyed += castedObstacles;

        if (playerManager.level.category == Level.LevelCategory.OBSTACLES_DESTROY && sessionObstaclesDestroyed >= playerManager.level.targetObstaclesDestoryed)
        {
            playerManager.LevelCompleted();
        }

        playerManager.dangerZoneCount = playerManager.dangerZoneCount > castedObstacles ? playerManager.dangerZoneCount - (short)castedObstacles : 0;

        if (playerManager.dangerZoneCount <= 0)
        {
            hudManager.EnableHighGravityFieldPanel(false);
        }
    }
Exemple #17
0
 private IEnumerator UpdateTimeDistortion()
 {
     while (!gameMode.isGameOver)
     {
         if (isGravityTdActive)
         {
             float totTd  = 1f;
             int   length = gravityFieldsGens.Count;
             for (int i = 0; i < length; i++)
             {
                 totTd *= GameplayMath.GetInstance().GetGravityTd(gameObject, gravityFieldsGens[i]);
             }
             timeDistortion  = totTd > 1 ? totTd : 1f;
             scoreMultiplier = timeDistortion;
         }
         else
         {
             timeDistortion = 1f;
         }
         yield return(new WaitForSeconds(0.1f));
     }
 }
Exemple #18
0
    private IEnumerator AntiGravity_C()
    {
        float duration = GameplayMath.GetInstance().GetAntigravityDuration(skillsData.antigravityPoints);

        isAntiGravityActive = true;
        isGravitable        = false;

        GameObject antigravityEffRef = InstantiateEffect(antigravityEffect);

        Image cooldownOverlay = hudManager.antigravityBtn.GetComponentsInChildren <Image>()[1];

        cooldownOverlay.fillAmount = 1f;
        hudManager.antigravityBtn.GetComponent <Image>().raycastTarget = false;
        yield return(new WaitForSeconds(duration));

        Destroy(antigravityEffRef);

        isGravitable        = true;
        isAntiGravityActive = false;

        hudManager.CoolDownSkill(Skill.ANTI_GRAVITY, antigravityCooldown);
    }
Exemple #19
0
 public void UpgradeResilience()
 {
     if (playerData.GetHealthPoints() >= PlayerData.RESILIENCE_MAX_POINTS)
     {
         toast.ShowToast("Already at max level", null, 1.5f);
         return;
     }
     if (resilienceUpgradeCost <= currencyData.gravityPoints)
     {
         if (playerData != null)
         {
             playerData.IncreaseHealth();
             currencyData.gravityPoints -= resilienceUpgradeCost;
             resilienceUpgradeCost       = GameplayMath.GetInstance().GetCostFromInitCost(playerData.GetHealthPoints(), INIT_HEALTH_COST, GameplayMath.RESILIENCE_RATIO);
         }
         SaveManager.GetInstance().SavePersistentData(playerData, SaveManager.PLAYER_DATA);
         SaveManager.GetInstance().SavePersistentData(currencyData, SaveManager.CURRENCY_PATH);
         UpdateUI();
     }
     else
     {
         toast.ShowToast("Not enough Gravity Points", null, 1.5f);
     }
 }
Exemple #20
0
 public void UpgradeThrustForce()
 {
     if (playerData.thrustForcePoints >= PlayerData.THRUSTFORCE_MAX_POINTS)
     {
         toast.ShowToast("Already at max level", null, 1.5f);
         return;
     }
     if (thrustForceUpgradeCost <= currencyData.gravityPoints)
     {
         if (playerData != null)
         {
             playerData.thrustForcePoints++;
             currencyData.gravityPoints -= thrustForceUpgradeCost;
             thrustForceUpgradeCost      = GameplayMath.GetInstance().GetCostFromInitCost(playerData.thrustForcePoints, INIT_THRUST_COST, GameplayMath.DEFAULT_RATIO);
         }
         SaveManager.GetInstance().SavePersistentData(playerData, SaveManager.PLAYER_DATA);
         SaveManager.GetInstance().SavePersistentData(currencyData, SaveManager.CURRENCY_PATH);
         UpdateUI();
     }
     else
     {
         toast.ShowToast("Not enough Gravity Points", null, 1.5f);
     }
 }
Exemple #21
0
 private void Start()
 {
     gameplayMathInstance = GameplayMath.GetInstance();
 }
Exemple #22
0
 public void RelativeVelocityChange(float relativeSpeed)
 {
     this.relativeSpeed     = relativeSpeed;
     movementSpeed          = (relativeSpeed * maxSpeed) / maxRelativeSpeed;
     velocityTimeDistrotion = GameplayMath.GetInstance().GetSpeedTd(relativeSpeed);
 }
Exemple #23
0
 public void VelocityChange(float speed)
 {
     movementSpeed          = speed;
     relativeSpeed          = (movementSpeed * maxRelativeSpeed) / maxSpeed;
     velocityTimeDistrotion = GameplayMath.GetInstance().GetSpeedTd(relativeSpeed);
 }
Exemple #24
0
    private void UpdateUI()
    {
        if (currencyData.gravityPoints != -1)
        {
            gravityPointsText.text = currencyData.gravityPoints.ToString();
        }

        if (playerData.thrustForcePoints < PlayerData.THRUSTFORCE_MAX_POINTS)
        {
            thrustCostText.text = thrustForceUpgradeCost.ToString();
        }
        else
        {
            thrustCostText.gameObject.SetActive(false);
        }

        if (playerData.GetHealthPoints() < PlayerData.RESILIENCE_MAX_POINTS)
        {
            healthCostText.text = resilienceUpgradeCost.ToString();
        }
        else
        {
            healthCostText.gameObject.SetActive(false);
        }

        //ANTIGRAVITY
        if (skillsData.antigravityPoints < PlayerSkillsData.ANTIGRAVITY_MAX_POINTS)
        {
            antigravityCostText.text = antigravityUpgradeCost.ToString();
        }
        else
        {
            antigravityCostText.gameObject.SetActive(false);
        }
        //QUANTUM TUNNEL
        if (skillsData.quantumTunnelPoints < PlayerSkillsData.QUANTUMTUNNEL_MAX_POINTS)
        {
            quantumTunnelCostText.text = quantumTunnelUpgradeCost.ToString();
        }
        else
        {
            quantumTunnelCostText.gameObject.SetActive(false);
        }
        //SOLAR FLARE
        if (skillsData.solarflarePoints < PlayerSkillsData.SOLARFLARE_MAX_POINTS)
        {
            solarflareCostText.text = solarflareUpgradeCost.ToString();
        }
        else
        {
            solarflareCostText.gameObject.SetActive(false);
        }
        //GRB
        if (skillsData.gammaRayBurstPoints < PlayerSkillsData.GRB_MAX_POINTS - 1)
        {
            GRBCostText.text = GRBUpgradeCost.ToString();
        }
        else if (skillsData.gammaRayBurstPoints == PlayerSkillsData.GRB_MAX_POINTS - 1)
        {
            GRBCostText.text = "Visit the store to unlock <color=cyan><b>GRB level 4</b></color>";
        }
        else
        {
            GRBCostText.gameObject.SetActive(false);
        }

        if (playerData != null)
        {
            thrustPointsText.text   = playerData.thrustForcePoints.ToString();
            healthPointsText.text   = playerData.GetHealthPoints().ToString();
            thrustForceText.text    = "Thrust Force: " + GameplayMath.GetInstance().GetPlayerThrustForceFromPoints(playerData.thrustForcePoints).ToString("0.00");
            resilienceInfoText.text = "Resilience: " + playerData.resilience.ToString();
        }

        if (skillsData != null)
        {
            antigravityPointsText.text   = skillsData.antigravityPoints.ToString();
            quantumTunnelPointsText.text = skillsData.quantumTunnelPoints.ToString();
            solarflarePointsText.text    = skillsData.solarflarePoints.ToString();

            if (skillsData.antigravityPoints < PlayerSkillsData.ANTIGRAVITY_MAX_POINTS)
            {
                antigravityInfoText.text = "Duration: <b>" + GameplayMath.GetInstance().GetAntigravityDuration(skillsData.antigravityPoints).ToString("0.0") + "s</b>"
                                           + ", cooldown: <b>" + GameplayMath.GetInstance().GetAntigravityCooldown(skillsData.antigravityPoints).ToString("0.0") + "s</b>"
                                           + "\n<color=cyan>Next Upgrade: </color>\n"
                                           + "Duration: " + GameplayMath.GetInstance().GetAntigravityDuration(skillsData.antigravityPoints + 1).ToString("0.0") + "s"
                                           + ", cooldown: " + GameplayMath.GetInstance().GetAntigravityCooldown(skillsData.antigravityPoints + 1).ToString("0.0") + "s";
            }
            else
            {
                antigravityInfoText.text = "Duration: <b>" + GameplayMath.GetInstance().GetAntigravityDuration(skillsData.antigravityPoints).ToString("0.0") + "s</b>"
                                           + ", cooldown: <b>" + GameplayMath.GetInstance().GetAntigravityCooldown(skillsData.antigravityPoints).ToString("0.0") + "s</b>";
            }

            if (skillsData.quantumTunnelPoints < PlayerSkillsData.QUANTUMTUNNEL_MAX_POINTS)
            {
                quantumTunnelInfoText.text = "Cooldown: <b>" + GameplayMath.GetInstance().GetQuantumTunnelCooldown(skillsData.quantumTunnelPoints).ToString("0.0") + "s</b>"
                                             + "\n<color=cyan>Next Upgrade: </color>\n"
                                             + "Cooldown: " + GameplayMath.GetInstance().GetQuantumTunnelCooldown(skillsData.quantumTunnelPoints + 1).ToString("0.0") + "s";
            }
            else
            {
                quantumTunnelInfoText.text = "Cooldown: <b>" + GameplayMath.GetInstance().GetQuantumTunnelCooldown(skillsData.quantumTunnelPoints).ToString("0.0") + "s</b>";
            }

            if (skillsData.solarflarePoints < PlayerSkillsData.SOLARFLARE_MAX_POINTS)
            {
                solarflareInfoText.text = "Cooldown: <b>" + GameplayMath.GetInstance().GetSolarflareCooldown(skillsData.solarflarePoints).ToString("0.0") + "s</b>"
                                          + ", radius: <b>" + GameplayMath.GetInstance().GetSolarflareRadius(skillsData.solarflarePoints).ToString("0.0") + "</b>"
                                          + "\n<color=cyan>Next Upgrade: </color>\n"
                                          + "Cooldown: " + GameplayMath.GetInstance().GetSolarflareCooldown(skillsData.solarflarePoints + 1).ToString("0.0") + "s"
                                          + ", radius: " + GameplayMath.GetInstance().GetSolarflareRadius(skillsData.solarflarePoints + 1).ToString("0.0");
            }
            else
            {
                solarflareInfoText.text = "Cooldown: <b>" + GameplayMath.GetInstance().GetSolarflareCooldown(skillsData.solarflarePoints).ToString("0.0") + "s</b>"
                                          + ", radius: <b>" + GameplayMath.GetInstance().GetSolarflareRadius(skillsData.solarflarePoints).ToString("0.0") + "</b>";
            }

            if (skillsData.gammaRayBurstPoints < PlayerSkillsData.GRB_MAX_POINTS)
            {
                GRBInfoText.text = "Cooldown: <b>" + GameplayMath.GetInstance().GetGRBCooldown(skillsData.gammaRayBurstPoints).ToString("0.0") + "s</b>"
                                   + ", ray radius: <b>" + GameplayMath.GetInstance().GetGRBUnscaledRadius(skillsData.gammaRayBurstPoints).ToString() + "</b>"
                                   + "\n<color=cyan>Next Upgrade: </color>\n"
                                   + "Cooldown: <b>" + GameplayMath.GetInstance().GetGRBCooldown(skillsData.gammaRayBurstPoints + 1).ToString("0.0") + "s</b>"
                                   + ", ray radius: <b>" + GameplayMath.GetInstance().GetGRBUnscaledRadius(skillsData.gammaRayBurstPoints + 1).ToString() + "</b>";
            }
            else
            {
                GRBInfoText.text = "Cooldown: <b>" + GameplayMath.GetInstance().GetGRBCooldown(skillsData.gammaRayBurstPoints).ToString("0.0") + "s</b>"
                                   + ", ray radius: <b>" + GameplayMath.GetInstance().GetGRBUnscaledRadius(skillsData.gammaRayBurstPoints).ToString() + "</b>";
            }
        }
    }