public void RetrieveToken(bool force)
    {
        if (force)
        {
            HoldingToken = true;
            HoldingTokenChanged?.Invoke(true);
            var throne = GameController.Instance.Thrones.FirstOrDefault(t => t.HasToken);
            if (throne == null)
            {
                return;
            }

            throne.AddRemoveToken(false);
        }
        else if (!HoldingToken)
        {
            var throne = GameController.Instance.Thrones.FirstOrDefault(t => t.HasToken && !t.IsMoving);
            if (throne != null)
            {
                throne.AddRemoveToken(false);
                HoldingToken = true;
                HoldingTokenChanged?.Invoke(true);
                if (!throne.IsMoving)
                {
                    GameController.Instance.Player.Movement.TeleportToBlock(throne.TeleportBlock);
                }
            }
        }
    }
 public void SetUnlockedToken()
 {
     UnlockedToken = true;
     TokenUnlocked?.Invoke();
     HoldingToken = true;
     HoldingTokenChanged?.Invoke(true);
 }
 public void PlaceToken()
 {
     if (HoldingToken)
     {
         var throne = GetNearbyThrone();
         throne.AddRemoveToken(true);
         HoldingToken = false;
         HoldingTokenChanged?.Invoke(false);
     }
 }