You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CrowdControl/Assets/Feel/MMTools/Tools/MMAchievements/Scripts/MMAchievementRules.cs

81 lines
2.6 KiB
C#

2 months ago
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
namespace MoreMountains.Tools
{
/// <summary>
/// That class is meant to be extended to implement the achievement rules specific to your game.
/// </summary>
public abstract class MMAchievementRules : MonoBehaviour, MMEventListener<MMGameEvent>
{
public MMAchievementList AchievementList;
[MMInspectorButton("PrintCurrentStatus")]
public bool PrintCurrentStatusBtn;
public virtual void PrintCurrentStatus()
{
foreach (MMAchievement achievement in MMAchievementManager.AchievementsList)
{
string status = achievement.UnlockedStatus ? "unlocked" : "locked";
Debug.Log("["+achievement.AchievementID + "] "+achievement.Title+", status : "+status+", progress : "+achievement.ProgressCurrent+"/"+achievement.ProgressTarget);
}
}
/// <summary>
/// On Awake, loads the achievement list and the saved file
/// </summary>
protected virtual void Awake()
{
// we load the list of achievements, stored in a ScriptableObject in our Resources folder.
MMAchievementManager.LoadAchievementList (AchievementList);
// we load our saved file, to update that list with the saved values.
MMAchievementManager.LoadSavedAchievements ();
}
/// <summary>
/// On enable, we start listening for MMGameEvents. You may want to extend that to listen to other types of events.
/// </summary>
protected virtual void OnEnable()
{
this.MMEventStartListening<MMGameEvent>();
}
/// <summary>
/// On disable, we stop listening for MMGameEvents. You may want to extend that to stop listening to other types of events.
/// </summary>
protected virtual void OnDisable()
{
this.MMEventStopListening<MMGameEvent>();
}
/// <summary>
/// When we catch an MMGameEvent, we do stuff based on its name
/// </summary>
/// <param name="gameEvent">Game event.</param>
public virtual void OnMMEvent(MMGameEvent gameEvent)
{
switch (gameEvent.EventName)
{
case "Save":
MMAchievementManager.SaveAchievements ();
break;
/*
// These are just examples of how you could catch a GameStart MMGameEvent and trigger the potential unlock of a corresponding achievement
case "GameStart":
MMAchievementManager.UnlockAchievement("theFirestarter");
break;
case "LifeLost":
MMAchievementManager.UnlockAchievement("theEndOfEverything");
break;
case "Pause":
MMAchievementManager.UnlockAchievement("timeStop");
break;
case "Jump":
MMAchievementManager.UnlockAchievement ("aSmallStepForMan");
MMAchievementManager.AddProgress ("toInfinityAndBeyond", 1);
break;*/
}
}
}
}