You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

56 lines
1.1 KiB

using System;
using UnityEngine;
public abstract class GameMod : MonoBehaviour
{
public enum Result
{
Success, Timeout, Dead, Quit, MissionFail
}
[SerializeField] GameModProperty property;
bool isInitialized = false;
public uint ModID => property.id;
public event Action<Result> OnDone;
private void Awake()
{
gameObject.SetActive(false);
}
public void StartMod()
{
if (!isInitialized)
{
OnInitialize();
isInitialized = true;
}
Logger.Log("Start Dungeon " + GetType().Name);
OnStartMod();
gameObject.SetActive(true);
}
public void EndMod()
{
Logger.Log("End Dungeon " + GetType().Name);
OnEndMod();
gameObject.SetActive(false);
}
private void Update()
{
if (!isInitialized) return;
OnUpdate();
}
protected abstract void OnInitialize();
protected abstract void OnStartMod();
protected abstract void OnUpdate();
protected abstract void OnEndMod();
protected void FireOnDone(Result result) => OnDone?.Invoke(result);
}