﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class GameManager : SingletonBase<GameManager>
{
    public Transform uiRoot = null;
    public bool hardMode = false;

    public static Transform UIRoot
    {
        get
        {
            return gameManager.uiRoot;
        }
    }

    public static bool HardMode
    {
        get
        {
            return gameManager.hardMode;
        }
    }

    public static void Log(object message, Object context = null)
    {
        Debug.Log(message, context ? context : instance);
    }

    public static void Exit()
    {
#if UNITY_EDITOR
        UnityEditor.EditorApplication.isPlaying = false;
#elif UNITY_WEBGL
        Application.OpenURL(Application.absoluteURL);
#else
        Application.Quit();
#endif
    }

    private static GameManager gameManager;

    protected override void Awake()
    {
        base.Awake();

        gameManager = instance as GameManager;
    }

    private void OnEnable()
    {
        Action.OnPerformed += ParseActions;
    }

    private void OnDisable()
    {
        Action.OnPerformed -= ParseActions;
    }

    private void ParseActions(Action action)
    {
        if (action is HardModeAction)
        {
            hardMode = (action as HardModeAction).hardMode;
        }

        if (action is QuitAction)
        {
            Exit();
        }
    }
}
