public List <Tile> showSelectedSlime(Slime slime) { List <Tile> selectedSlimeTile = new List <Tile> (); selectedSlimeTile.Add(slime.GetActualTile()); slime.GetActualTile().tileUILayer.sprite = TileSprite; slime.GetActualTile().tileUILayer.color = selectedColor; currentUIRenderer.Add(slime.GetActualTile().tileUILayer); return(selectedSlimeTile); }
public void SetTrajectorySlimes(Slime shooter, Slime toAttack) { this.source = shooter; this.target = toAttack; Vector2 startPosition = shooter.GetActualTile().GetTileData().GetRealWorldPosition(); transform.position = startPosition; this.endPos = toAttack.GetActualTile().GetTileData().GetRealWorldPosition(); direction = (this.endPos - startPosition).normalized; }
private void FusionSlime(Slime fusionTarget) { RemoveSlime(selectedSlime); //players[currentPlayer].updateActions(); selectedSlime.GetActualTile().SetSlimeOnTop(null); fusionTarget.SetMass((int)(selectedSlime.GetMass() + fusionTarget.GetMass()), true); Destroy(selectedSlime.gameObject); playerActions++; status = GameControllerStatus.CHECKINGLOGIC; }
public virtual List <Tile> GetPossibleMovements(Slime slime) { ArrayList tiles = new ArrayList(); ArrayList distance = new ArrayList(); List <Tile> visited = new List <Tile> (); //List<Tile> moveTiles = new List<Tile> (); int moveRange = slime.GetMovementRange(); List <Vector2> directions = new List <Vector2> { new Vector2(0, -1), new Vector2(1, -1), new Vector2(1, 0), new Vector2(0, 1), new Vector2(-1, 1), new Vector2(-1, 0) }; tiles.Add(slime.GetActualTile()); distance.Add(0); int counter = 0; while (tiles.Count > 0) { Tile t = (Tile)tiles[0]; tiles.RemoveAt(0); int prevD = (int)distance[0]; distance.RemoveAt(0); counter++; visited.Add(t); foreach (Vector2 vec in directions) { int x = (int)(t.getPosition().x + vec.x); int y = (int)(t.getPosition().y + vec.y); Tile newT = MapDrawer.GetTileAt(x, y); if (!visited.Contains(newT) && !tiles.Contains(newT) && newT != null && prevD + 1 <= moveRange && !newT.GetTileData().isBlocking()) { tiles.Add(newT); distance.Add(prevD + 1); } } } visited.RemoveAt(0); return(visited); }
public virtual List <Tile> GetSlimesInAttackRange(Slime slime) { List <Tile> canAttack = new List <Tile> (); Vector2 myPos = slime.GetActualTile().getPosition(); foreach (Player p in players) { if (p != slime.GetPlayer()) { foreach (Slime s in p.GetSlimes()) { Vector2 slPos = s.GetActualTile().getPosition(); if (Matrix.GetDistance(slPos, myPos) <= slime.GetAttackRange()) { canAttack.Add(s.actualTile); } } } } return(canAttack); }