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(); }