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

namespace GamingIsLove.Footsteps
{
	[AddComponentMenu("Footstepper/ORK Player Footstepper")]
	public class ORKPlayerFootstepper : Footstepper
	{
		[Header("ORK Player Settings")]
		[Tooltip("Select in which mode this footstepper operates for non-player game objects:\n" +
			"- Enabled: Uses both audio clips and prefabs from footstep sources.\n" +
			"- Disabled: Isn't used at all.\n" +
			"- Only Audio: Only uses audio clips from footstep sources.\n" +
			"- Only Prefab: Only uses prefabs from footstep sources.\n")]
		public FootstepperMode nonPlayerMode = FootstepperMode.Disabled;

		[Tooltip("Select a the root game object if the footstepper is added on a child object.\n" +
			"This is needed to identify if this game object is the ORK player.")]
		public GameObject rootGameObject;

		public virtual bool IsPlayer
		{
			get { return (this.rootGameObject != null ? this.rootGameObject : this.gameObject) == ORK.Game.GetPlayer(); }
		}

		public override bool IsEnabled
		{
			get
			{
				return this.IsPlayer ?
					FootstepperMode.Disabled != this.mode :
					FootstepperMode.Disabled != this.nonPlayerMode;
			}
		}

		public override bool IsAudioEnabled
		{
			get
			{
				return this.IsPlayer ?
					(FootstepperMode.Enabled == this.mode || FootstepperMode.OnlyAudio == this.mode) :
					(FootstepperMode.Enabled == this.nonPlayerMode || FootstepperMode.OnlyAudio == this.nonPlayerMode);
			}
		}

		public override bool IsPrefabEnabled
		{
			get
			{
				return this.IsPlayer ?
					(FootstepperMode.Enabled == this.mode || FootstepperMode.OnlyPrefab == this.mode) :
					(FootstepperMode.Enabled == this.nonPlayerMode || FootstepperMode.OnlyPrefab == this.nonPlayerMode);
			}
		}
	}
}
