//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)); }
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)); } }