|
@@ -11,7 +11,8 @@ namespace KairoEngine.Achievements
|
|
|
[HideMonoScript]
|
|
|
public class AchievementsController : SerializedMonoBehaviour
|
|
|
{
|
|
|
- public string achievementCompletedEvent = "AchievementCompletedEvent";
|
|
|
+ public string achievementUnlockedEvent = "AchievementUnlockedEvent";
|
|
|
+ public string achievementLockedEvent = "AchievementLockedEvent";
|
|
|
|
|
|
public bool CheckOnStart = true;
|
|
|
public bool checkOnInterval = true;
|
|
@@ -47,6 +48,8 @@ namespace KairoEngine.Achievements
|
|
|
if(CheckOnStart) CheckAchievements();
|
|
|
if(checkOnInterval) StartCheckTimer();
|
|
|
});
|
|
|
+ GenericEvents.StartListening("UnlockAchievement", UnlockAchievement);
|
|
|
+ GenericEvents.StartListening("LockAchievement", LockAchievement);
|
|
|
|
|
|
}
|
|
|
|
|
@@ -65,8 +68,8 @@ namespace KairoEngine.Achievements
|
|
|
if(achievementsStatus[i].achievement.HasAchieved())
|
|
|
{
|
|
|
Debug.Log($"Achievement Unlocked: {achievementsStatus[i].achievement.title}");
|
|
|
- GenericEvents.Trigger(achievementCompletedEvent, achievementsStatus[i].achievement.identifier);
|
|
|
achievementsStatus[i].unlocked = true;
|
|
|
+ GenericEvents.Trigger(achievementUnlockedEvent, achievementsStatus[i].achievement.identifier);
|
|
|
PlayerPrefs.SetInt($"ACHIEVEMENT_{achievementsStatus[i].achievement.identifier}", 1);
|
|
|
}
|
|
|
}
|
|
@@ -81,7 +84,38 @@ namespace KairoEngine.Achievements
|
|
|
StartCheckTimer();
|
|
|
}
|
|
|
});
|
|
|
-
|
|
|
+ }
|
|
|
+
|
|
|
+ public void UnlockAchievement(string identifier)
|
|
|
+ {
|
|
|
+ if(debug) Debug.Log($"Unlocking achievement {identifier}");
|
|
|
+ if(library == null) return;
|
|
|
+ for (int i = 0; i < achievementsStatus.Count; i++)
|
|
|
+ {
|
|
|
+ if(achievementsStatus[i].achievement.identifier == identifier)
|
|
|
+ {
|
|
|
+ if(achievementsStatus[i].unlocked == true) return;
|
|
|
+ achievementsStatus[i].unlocked = true;
|
|
|
+ GenericEvents.Trigger(achievementUnlockedEvent, achievementsStatus[i].achievement.identifier);
|
|
|
+ PlayerPrefs.SetInt($"ACHIEVEMENT_{achievementsStatus[i].achievement.identifier}", 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void LockAchievement(string identifier)
|
|
|
+ {
|
|
|
+ if(debug) Debug.Log($"Locking achievement {identifier}");
|
|
|
+ if(library == null) return;
|
|
|
+ for (int i = 0; i < achievementsStatus.Count; i++)
|
|
|
+ {
|
|
|
+ if(achievementsStatus[i].achievement.identifier == identifier)
|
|
|
+ {
|
|
|
+ if(achievementsStatus[i].unlocked == false) return;
|
|
|
+ achievementsStatus[i].unlocked = false;
|
|
|
+ GenericEvents.Trigger(achievementLockedEvent, achievementsStatus[i].achievement.identifier);
|
|
|
+ PlayerPrefs.SetInt($"ACHIEVEMENT_{achievementsStatus[i].achievement.identifier}", 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|