Example #1
0
    public void Eat(int actionSlimeId)
    {
        RawSlime actionSlime = FindSlimeById(actionSlimeId);

        actionSlime.GrowSlime();

        SpendActions(1);
    }
Example #2
0
    public void Move(int actionSlimeId, Vector2 tileVector)
    {
        RawSlime actionSlime = FindSlimeById(actionSlimeId);
        TileData toMove      = matrix.getTile((int)tileVector.x, (int)tileVector.y);

        actionSlime.SetTile(toMove);

        SpendActions(1);
    }
Example #3
0
    public void Split(int actionSlimeId, Vector2 tileVector)
    {
        RawSlime actionSlime = FindSlimeById(actionSlimeId);
        TileData toSplit     = matrix.getTile((int)tileVector.x, (int)tileVector.y);

        actionSlime.Split(toSplit);

        SpendActions(1);
    }
Example #4
0
    public void Conquer(int actionSlimeId, Vector2 tileVector)
    {
        RawSlime actionSlime = FindSlimeById(actionSlimeId);
        TileData toConquer   = matrix.getTile((int)tileVector.x, (int)tileVector.y);

        actionSlime.GetPlayer().Conquer(toConquer);

        SpendActions(1);
    }
Example #5
0
    public void Fusion(int actionSlimeId, int targetSlimeId)
    {
        RawSlime actionSlime       = FindSlimeById(actionSlimeId);
        RawSlime fusionTargetSlime = FindSlimeById(targetSlimeId);

        fusionTargetSlime.SetMass(actionSlime.GetMass() + fusionTargetSlime.GetMass());
        fusionTargetSlime.GetPlayer().RemoveSlime(actionSlime);

        SpendActions(1);
    }
Example #6
0
    public List <AIRawSlimeAction> GetMoveActions(RawSlime slime)
    {
        // Devolvemos las acciones de movimiento que puede hacer esa slime
        List <AIRawSlimeAction> actions = new List <AIRawSlimeAction>();

        foreach (TileData tile in GetPossibleMovements(slime))
        {
            actions.Add(new AIRawSlimeAction(slime.GetId(), ActionType.MOVE, tile.getPosition()));
        }
        return(actions);
    }
Example #7
0
    public RawSlime Split(TileData toSplit)
    {
        float newmass = (mass / 2.0f);

        this.mass = newmass;
        RawSlime newSlime = new RawSlime(newmass, elementType, element, toSplit);

        newSlime.SetPlayer(player);
        player.AddSlime(newSlime);
        return(newSlime);
    }
Example #8
0
    public List <AIRawSlimeAction> GetFusionActions(RawSlime slime)
    {
        // Devolvemos las acciones de fusionarse que puede hacer con esa slime
        List <AIRawSlimeAction> actions = new List <AIRawSlimeAction>();

        foreach (RawSlime sl in GetFusionTargets(slime))
        {
            actions.Add(new AIRawSlimeAction(slime.GetId(), ActionType.FUSION, sl.GetId()));
        }
        return(actions);
    }
Example #9
0
    public List <TileData> GetSplitRangeTiles(RawSlime slime)
    {
        List <TileData> splitTiles = new List <TileData> ();

        foreach (TileData td in matrix.getNeighbours(slime.GetTileData(), true))
        {
            if (td.GetRawSlimeOnTop() == null)
            {
                splitTiles.Add(td);
            }
        }
        return(splitTiles);
    }
Example #10
0
    public List <AIRawSlimeAction> GetAttackActions(RawSlime slime)
    {
        // Devolvemos las acciones que puede hacer para atacar a otro jugador con ESA slime
        List <AIRawSlimeAction> actions = new List <AIRawSlimeAction>();

        if (slime.canAttack)
        {
            foreach (RawSlime toAttack in GetSlimesInAttackRange(slime))
            {
                actions.Add(new AIRawSlimeAction(slime.GetId(), ActionType.ATTACK, toAttack.GetId()));
            }
        }
        return(actions);
    }
Example #11
0
    public RawPlayer GetRawCopy()
    {
        RawPlayer       rawPlayer = new RawPlayer(id, actions, statsCoreInfo, statsCoreInfo.slimeCountActionGain);
        List <RawSlime> rawSlimes = new List <RawSlime>();

        foreach (Slime sl in slimes)
        {
            RawSlime rawSl = sl.GetRawCopy();
            rawSl.SetPlayer(rawPlayer);
            rawSlimes.Add(rawSl);
        }
        rawPlayer.SetSlimes(rawSlimes);
        return(rawPlayer);
    }
Example #12
0
    public RawPlayer GetCopy()
    {
        RawPlayer       rawPlayer = new RawPlayer(id, turnActions, statsCoreInfo, actionsPerSlime);
        List <RawSlime> rawSlimes = new List <RawSlime>();

        foreach (RawSlime sl in slimes)
        {
            RawSlime rawSl = sl.GetCopy();
            rawSl.SetPlayer(rawPlayer);
            rawSlimes.Add(rawSl);
        }
        rawPlayer.SetSlimes(rawSlimes);
        return(rawPlayer);
    }
Example #13
0
    public List <AIRawSlimeAction> GetSplitActions(RawSlime slime)
    {
        // Devolvemos las acciones de dividirse que puede hacer con esa slime
        List <AIRawSlimeAction> actions = new List <AIRawSlimeAction>();

        if (slime.canSplit)
        {
            foreach (TileData tile in GetSplitRangeTiles(slime))
            {
                actions.Add(new AIRawSlimeAction(slime.GetId(), ActionType.SPLIT, tile.getPosition()));
            }
        }
        return(actions);
    }
Example #14
0
    public List <RawSlime> GetFusionTargets(RawSlime slime)
    {
        List <RawSlime> fusionSlimes = new List <RawSlime> ();

        foreach (TileData tile in matrix.getNeighbours(slime.GetTileData(), true))
        {
            RawSlime overSlime = tile.GetRawSlimeOnTop();
            if (overSlime != null && overSlime.GetPlayer() == slime.GetPlayer())
            {
                fusionSlimes.Add(overSlime);
            }
        }
        return(fusionSlimes);
    }
Example #15
0
    public List <AIRawSlimeAction> GetConquerActions(RawSlime slime)
    {
        // Devolvemos la accion de conquerir el terreno sobre el que esta esa slime
        List <AIRawSlimeAction> actions = new List <AIRawSlimeAction>();

        // Si no l'ha conquerit ja, pot conquerirla.
        if (!slime.GetPlayer().GetConqueredTiles().Contains(slime.GetActualTile()))
        {
            actions.Add(new AIRawSlimeAction(slime.GetId(), ActionType.CONQUER, slime.GetActualTile().getPosition()));
        }
        else if (slime.canGrow)
        {
            actions.Add(new AIRawSlimeAction(slime.GetId(), ActionType.EAT, slime.GetId()));
        }
        return(actions);
    }
Example #16
0
    public int GetDistanceToCloserEnemy(RawSlime slime)
    {
        int     distance = Int16.MaxValue;
        Vector2 myPos    = slime.GetActualTile().getPosition();

        foreach (RawPlayer p in players)
        {
            if (p != slime.GetPlayer())
            {
                foreach (RawSlime s in p.GetSlimes())
                {
                    Vector2 slPos = s.GetActualTile().getPosition();
                    distance = Mathf.Min(distance, Matrix.GetDistance(slPos, myPos));
                }
            }
        }
        return(distance);
    }
Example #17
0
    public void Attack(int actionSlimeId, int targetSlimeId)
    {
        RawSlime actionSlime = FindSlimeById(actionSlimeId);
        RawSlime targetSlime = FindSlimeById(targetSlimeId);

        int damage = actionSlime.getDamage;

        if (actionSlime.changeMass((int)-actionSlime.GetMass() * actionSlime.attackDrain) <= 0)
        {
            actionSlime.GetPlayer().RemoveSlime(actionSlime);
        }
        if (targetSlime.changeMass((int)-damage * targetSlime.GetDamageReduction()) <= 0)
        {
            targetSlime.GetPlayer().RemoveSlime(targetSlime);

            /*Debug.Log("DEAD");
             * Debug.Log(targetSlime.GetPlayer());*/
        }

        SpendActions(1);
    }
Example #18
0
    public List <RawSlime> GetSlimesInAttackRange(RawSlime slime)
    {
        List <RawSlime> canAttack = new List <RawSlime> ();
        Vector2         myPos     = slime.GetActualTile().getPosition();

        foreach (RawPlayer p in players)
        {
            if (p != slime.GetPlayer())
            {
                foreach (RawSlime s in p.GetSlimes())
                {
                    Vector2 slPos = s.GetActualTile().getPosition();
                    if (Matrix.GetDistance(slPos, myPos) <= slime.GetAttackRange())
                    {
                        canAttack.Add(s);
                    }
                }
            }
        }
        return(canAttack);
    }
Example #19
0
    public List <TileData> GetPossibleMovements(RawSlime slime)
    {
        List <TileData> moves = new List <TileData> ();

        if (matrix == null)
        {
            Debug.Log("MATRIX NULL");
        }
        if (slime == null)
        {
            Debug.Log("SLIME NULL");
        }
        if (slime.GetPlayer().statsCoreInfo == null)
        {
            Debug.Log("NULL");
        }
        Dictionary <TileData, List <TileData> > possible = matrix.possibleCoordinatesAndPath((int)slime.GetActualTile().getPosition().x, (int)slime.GetActualTile().getPosition().y, slime.GetMovementRange());

        foreach (TileData move in possible.Keys)
        {
            moves.Add(move);
        }
        return(moves);
    }
Example #20
0
 public void SetSlimeOnTop(RawSlime slimeTop)
 {
     this.rawSlimeOnTop = slimeTop;
 }
Example #21
0
 public void AddSlime(RawSlime slime)
 {
     this.slimes.Add(slime);
 }
Example #22
0
 public void RemoveSlime(RawSlime sl)
 {
     sl.GetTileData().SetSlimeOnTop((RawSlime)null);
     this.slimes.Remove(sl);
 }