//State Related Methods////////////////////
 public void SetState(Type state)
 {
     if (_currentState.GetType() == state)
     {
         return;
     }
     Debug.Log("Player Changing from: " + _currentState.GetType() + " to: " + state);
     _currentState.EndState();
     _currentState = _states[state];
     _currentState.BeginState();
 }
        public override void Start()
        {
            //Basics///////////////////////////////
            base.Start();
            Position           = CurrentNode.Position;
            _properHighlighter = GetComponent <ProperHighlighter>();
            _animator          = GetComponentInChildren <Animator>();

            //Setting up the Cache/////////////////
            _states = new Dictionary <Type, PlayerStateBase>();
            _states.Add(typeof(PlayerStateIdle), new PlayerStateIdle(this));
            _states.Add(typeof(PlayerStateWalking), new PlayerStateWalking(this));
            _states.Add(typeof(PlayerStateInteractionEnemy), new PlayerStateInteractionEnemy(this));
            _states.Add(typeof(PlayerStateInteractionBuilding), new PlayerStateInteractionBuilding(this));
            _states.Add(typeof(PlayerStateInteractionNPC), new PlayerStateInteractionNPC(this));
            _states.Add(typeof(PlayerStateInteractionProp), new PlayerStateInteractionProp(this));

            //Starting First State Manually////////
            _currentState = _states[typeof(PlayerStateIdle)];
            _currentState.BeginState();
        }