public List <AchievementInfo> AddStepAchievement(AchievementEvent eventAchievement, int step = 1) { if (!listeners.ContainsKey(eventAchievement) || listeners[eventAchievement].Count <= 0) { //Debug.LogWarning("No achievement is listening (anymore ?) to this event : " // + eventAchievement); return(null); } Completion[eventAchievement] += step; List <AchievementInfo> unsubscribers = new List <AchievementInfo>(); foreach (var l in listeners[eventAchievement]) { if (l.EventNotification(eventAchievement)) { unsubscribers.Add(l); } } List <AchievementInfo> returnValue = new List <AchievementInfo>(); foreach (var achInfo in unsubscribers) { if (achInfo.IsComplete()) { returnValue.Add(achInfo); } this.Unsubscribe(eventAchievement, achInfo); } return((returnValue.Count > 0) ? returnValue : null); }
public int[] getCompletion(AchievementEvent ev) { int[] values = new int[2]; values[0] = manager.Completion[ev]; values[1] = this.Aim[ev]; return(values); }
public bool EventNotification(AchievementEvent ev) { // return value indicate if the achievement must unsubscrib from the event if (manager.Completion[ev] >= Aim[ev]) { return(true); } return(false); }
public void Subscribe(AchievementEvent listen, AchievementInfo ach) { if (!listeners.ContainsKey(listen)) { listeners.Add(listen, new List <AchievementInfo>()); Completion.Add(listen, 0); } listeners[listen].Add(ach); }
public void Unsubscribe(AchievementEvent listen, AchievementInfo ach) { var list = listeners[listen]; list.Remove(ach); if (list.Count <= 0) { listeners.Remove(listen); } else { listeners[listen] = list; } }
public void callAchievement(AchievementEvent achEvent, int step = 1) { List <AchievementInfo> endedAchievements = SProfilePlayer.getInstance().AchievementsManager.AddStepAchievement(achEvent, step); // hack fix to prevent bug when quitting the game if (achEvent == AchievementEvent.quit) { return; } if (endedAchievements != null) { foreach (var achInfo in endedAchievements) { AchievementPopUp.GetComponent <AchievementPopUpScript>().AddAchievement(achInfo); } } }
internal static void AchievementEventCreated(AchievementEventViewModel achievementEventViewModel) { AchievementEvent?.Invoke(achievementEventViewModel); }
public AchievementEventArgs(object sender, AchievementEvent aEvent) { _sender = sender; _achievementEvent = aEvent; }