Example #1
0
    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);
    }
Example #2
0
    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;
    }
Example #3
0
    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;
    }
Example #4
0
    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);
    }
Example #5
0
    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);
    }