//public void ProcNotification(Achievement achi)
    //{
    //    StartCoroutine(ProcNotification_Internal(achi));
    //}



    private IEnumerator ProcNotification_Internal(ExtendedAchievmentInfo achi)
    {
        if (currentAchievments.Count >= 5)
        {
            currentAchievments.Remove(achi);
            Debug.Log($"break overheaded achievment, count => {currentAchievments.Count}");
            yield break;
        }
        else
        {
            currentAchievments.Remove(achi);
            Debug.Log($"processed achievment, count => {currentAchievments.Count}");
        }

        NotificationContainer.SetActive(false);
        yield return(new WaitForEndOfFrame());

        Name.text       = achi.Name;
        RewardText.text = achi.RewardText;
        Points.text     = achi.Points.ToString();
        Image.sprite    = achi.Icon;

        NotificationContainer.SetActive(true);
        yield return(new WaitForSeconds(4.5f));
    }
Example #2
0
    public void AddXP(int xp)
    {
        Services.PlayerService.AddXP(xp);

        if (AddXpEvent != null)
        {
            AddXpEvent.Invoke(xp);
        }

        if (Services.PlayerService.CurrentXP >= Services.PlayerService.XPLevelLimit)
        {
            int c = 0;
            do
            {
                Services.PlayerService.AddLevel(1);
                Services.PlayerService.RemoveXP(Services.PlayerService.XPLevelLimit);

                //_pdata.Level++;
                //_pdata.CurrentXP -= _pdata.XPLevelLimit;
                c++;
            } while (Services.PlayerService.CurrentXP >= Services.PlayerService.XPLevelLimit);


            var achiInfo = new ExtendedAchievmentInfo(id: -1,
                                                      name: $"Level {Services.PlayerService.Level}",
                                                      iconSprite: SpriteDB.SpriteRefs["lvlUp"],
                                                      rewardType: RewardType.None,
                                                      rewardValue: 0,
                                                      points: 10 * c);
            achiInfo.CustomText = "Grats!";
            GameEvents.OnGeneratorAchievmentsReceived(-1, new List <ExtendedAchievmentInfo> {
                achiInfo
            });

            //_pdata.AvailableRewards += c;
            Services.RewardsService.AddAvailableRewards(c);


            PortraitDetails.Stars      = Services.PlayerService.Level / 100;
            PortraitDetails.MaxElement = (int)(((Services.PlayerService.Level - (PortraitDetails.Stars * 100)) / 100f) * MaxLevelElements);

            //_pdata.XPLevelLimit = GetXPLimit(_pdata.Level);
            Services.PlayerService.AddXPLevelLimit(GetXPLimit(Services.PlayerService.Level));
        }
    }