public bool ChangeSoldierPosition(PlayerSoldier soldier)
    {
        soldier.gameObject.SetActive(false);
        Vector2      worldPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        RaycastHit2D hit        = Physics2D.Raycast(worldPoint, Vector2.zero);

        soldier.gameObject.SetActive(true);
        if (hit.collider != null && hit.collider.tag == "BuildTile")     //Check if user clicked on build site
        {
            Tile tile = hit.transform.gameObject.GetComponent <Tile>();
            soldier.GetComponent <SpriteRenderer>().sortingOrder = tile.Row + 1;
            soldier.CurrentTile.UnmarkTileInUse();
            soldier.CurrentTile.Soldier = null;
            soldier.CurrentTile         = tile;
            soldier.CurrentTile.Soldier = soldier;
            soldier.transform.position  = new Vector2(tile.transform.position.x + soldier.OffsetX, tile.transform.position.y + soldier.OffsetY);
            tile.MarkTileInUse();
            return(true);
        }
        else if (hit.collider != null && (hit.collider.tag == "Zombie" || hit.collider.tag == "Bomb" || hit.collider.tag == "Flag"))
        {
            PlayerSoldier otherSoldier = hit.transform.gameObject.GetComponent <PlayerSoldier>();
            soldier.GetComponent <SpriteRenderer>().sortingOrder      = otherSoldier.CurrentTile.Row + 1;
            otherSoldier.GetComponent <SpriteRenderer>().sortingOrder = soldier.CurrentTile.Row + 1;


            soldier.CurrentTile.Soldier      = otherSoldier;
            otherSoldier.CurrentTile.Soldier = soldier;

            var tmpTile = soldier.CurrentTile;
            soldier.CurrentTile      = otherSoldier.CurrentTile;
            otherSoldier.CurrentTile = tmpTile;

            var tmpPos = soldier.OriginPosition;
            soldier.transform.position      = new Vector2(soldier.CurrentTile.transform.position.x + soldier.OffsetX, soldier.CurrentTile.transform.position.y + soldier.OffsetY);
            otherSoldier.transform.position = new Vector2(otherSoldier.CurrentTile.transform.position.x + otherSoldier.OffsetX, otherSoldier.CurrentTile.transform.position.y + otherSoldier.OffsetY);;
            return(true);
        }
        else if (hit.collider != null && hit.collider.tag == "Trash" && !(soldier is Flag))
        {
            soldier.CurrentTile.UnmarkTileInUse();
            SoldierManager.Instance.LocalPlayerList.Remove(soldier);
            MenuLogic.Instance.SellSoldier(soldier.Price);

            if (soldier is Bomb)
            {
                NumOfBombs--;
                GameView.EnableButton("Btn_Bomb");
            }
            else if (soldier.Rank == Globals.RANK_OF_SAPPER)
            {
                NumOfSappers--;
                GameView.EnableButton("Btn_Zombie9");
            }
            SoundManager.Instance.SFX.PlayOneShot(SoundManager.Instance.SoldierSold);
            Destroy(soldier.gameObject);
        }
        return(false);
    }
    public void PlaceSoldier(Tile tile, PlayerSoldier soldier, bool isEnemy = false)
    {
        PlayerSoldier newSoldier = Instantiate(soldier, transform);

        if (isEnemy)
        {
            newSoldier.FlipSide();
            EnemyList.Add(newSoldier);
        }
        else
        {
            LocalPlayerList.Add(newSoldier);
        }
        newSoldier.transform.position = new Vector3(tile.transform.position.x + newSoldier.OffsetX,
                                                    tile.transform.position.y + newSoldier.OffsetY);
        newSoldier.GetComponent <SpriteRenderer>().sortingOrder = tile.Row + 1;
        newSoldier.CurrentTile         = tile;
        newSoldier.CurrentTile.Soldier = newSoldier;
        tile.MarkTileInUse();
    }