Search in sources :

Example 6 with DC_Cell

use of eidolons.entity.obj.DC_Cell in project Eidolons by IDemiurge.

the class MiniGrid method objRemoved.

public void objRemoved(DC_Obj obj) {
    if (obj instanceof Unit) {
        Unit unit = (Unit) obj;
        if (unit.isOverlaying()) {
            for (MiniObjComp c : overlayingObjComps) {
                if (c.getObj().equals(obj)) {
                    overlayingObjComps.remove(c);
                    comp.remove(c.getComp());
                    break;
                }
            }
            return;
        }
    }
    DC_Cell cell = dungeon.getGame().getCellByCoordinate(obj.getCoordinates());
    if (cell == null) {
        return;
    }
    // compMap.getOrCreate(obj.getCoordinates()).removeObj(obj);
    if (compMap.get(obj.getCoordinates()).getObjects().size() <= 1) {
        objAdded(cell);
    }
}
Also used : DC_Cell(eidolons.entity.obj.DC_Cell) Unit(eidolons.entity.obj.unit.Unit)

Example 7 with DC_Cell

use of eidolons.entity.obj.DC_Cell in project Eidolons by IDemiurge.

the class WanderAi method getWanderCells.

public static List<? extends DC_Obj> getWanderCells(UnitAI ai) {
    DIRECTION d = ai.getGroup().getWanderDirection();
    // permittedCells = ai.getGroup().getWanderBlocks();
    List<DC_Obj> list = new ArrayList<>();
    for (DC_Cell cell : Analyzer.getCells(ai, false, false, true)) {
        if (d != null) {
            if (DirectionMaster.getRelativeDirection(cell, ai.getUnit()) != d) {
                continue;
            }
        }
        if (PositionMaster.getDistance(cell, ai.getUnit()) <= ai.getMaxWanderDistance()) {
            list.add(cell);
        }
    }
    if (list.isEmpty()) {
    // change direction?
    }
    return list;
}
Also used : DC_Obj(eidolons.entity.obj.DC_Obj) DC_Cell(eidolons.entity.obj.DC_Cell) DIRECTION(main.game.bf.Coordinates.DIRECTION) FACING_DIRECTION(main.game.bf.Coordinates.FACING_DIRECTION) ArrayList(java.util.ArrayList)

Example 8 with DC_Cell

use of eidolons.entity.obj.DC_Cell in project Eidolons by IDemiurge.

the class PathChoiceMaster method getChoices.

List<Choice> getChoices(ActionPath path, Coordinates c_coordinate, Coordinates targetCoordinate, FACING_DIRECTION c_facing) {
    Chronos.mark("Finding choices for " + path);
    pathBuilder.adjustUnit();
    List<Choice> choices = new ArrayList<>();
    for (Coordinates c : getDefaultCoordinateTargets(path, c_coordinate)) {
        Choice stdMoveChoice = constructStdMoveChoice(c, c_coordinate, c_facing);
        if (stdMoveChoice != null) {
            choices.add(stdMoveChoice);
        }
    }
    Chronos.mark("Finding custom choices for " + path);
    List<Choice> specialChoices = new ArrayList<>();
    if (ListMaster.isNotEmpty(moveActions)) {
        for (DC_ActiveObj a : moveActions) {
            if (!a.canBeActivated()) {
                if (firstStep) {
                    if (!ReasonMaster.checkReasonCannotActivate(a, PARAMS.C_N_OF_ACTIONS.getName())) {
                        // exception for AP TODO
                        continue;
                    }
                }
            }
            if (path.hasAction(a)) {
                if (a.getIntParam(PARAMS.COOLDOWN) >= 0) {
                    continue;
                }
            }
            Targeting targeting = a.getTargeting();
            Collection<Obj> objects = null;
            if (targeting instanceof FixedTargeting) {
                Targeting t = a.getAbilities().getTargeting();
                if (t != null) {
                    objects = t.getFilter().getObjects(a.getRef());
                }
                Effect e = a.getAbilities().getEffects().getEffects().get(0);
                e.setRef(unit.getRef());
                if (e instanceof SelfMoveEffect) {
                    try {
                        Coordinates coordinates = ((SelfMoveEffect) e).getCoordinates();
                        if (coordinates != null) {
                            objects = new ArrayList<>(Arrays.asList(unit.getGame().getCellByCoordinate(coordinates)));
                        }
                    } catch (Exception ex) {
                        main.system.ExceptionMaster.printStackTrace(ex);
                    }
                }
            } else {
                pathBuilder.adjustUnit();
                objects = targeting.getFilter().getObjects(a.getRef());
            }
            if (objects != null) {
                List<Choice> choicesForAction = new ArrayList<>();
                for (Object obj : objects) {
                    if (obj instanceof DC_Cell) {
                        Coordinates coordinates = ((DC_Cell) obj).getCoordinates();
                        // if (a.getName().equals("Clumsy Leap"))
                        if (PositionMaster.getDistance(coordinates, c_coordinate) > Math.max(1, a.getIntParam(PARAMS.RANGE))) {
                            continue;
                        }
                        if (PositionMaster.getDistance(coordinates, targetCoordinate) > PositionMaster.getDistance(c_coordinate, targetCoordinate)) {
                            // TODO will this not eliminate good
                            continue;
                        }
                        // choices?
                        Ref ref = unit.getRef().getCopy();
                        ref.setTarget(((DC_Cell) obj).getId());
                        Choice choice = new Choice(coordinates, c_coordinate, new Action(a, ref));
                        choicesForAction.add(choice);
                    }
                }
                Chronos.mark("Filter custom choices for " + a);
                specialChoices.addAll(filterSpecialMoveChoices(choicesForAction, a, c_coordinate, path));
                Chronos.logTimeElapsedForMark("Filter custom choices for " + a);
            }
        // if (choices.size() > 1)
        }
    }
    Chronos.logTimeElapsedForMark("Finding custom choices for " + path);
    choices.addAll(specialChoices);
    Chronos.mark("Sort choices");
    sortChoices(choices);
    Chronos.logTimeElapsedForMark("Sort choices");
    // resetUnit();// TODO is that right?
    Chronos.logTimeElapsedForMark("Finding choices for " + path);
    // Chronos.logTimeElapsedForMark("Sorting choices for " + path);
    return choices;
}
Also used : Action(eidolons.game.battlecraft.ai.elements.actions.Action) DC_UnitAction(eidolons.entity.active.DC_UnitAction) FixedTargeting(main.elements.targeting.FixedTargeting) Targeting(main.elements.targeting.Targeting) Coordinates(main.game.bf.Coordinates) Ref(main.entity.Ref) FixedTargeting(main.elements.targeting.FixedTargeting) DC_Cell(eidolons.entity.obj.DC_Cell) DC_ActiveObj(eidolons.entity.active.DC_ActiveObj) Obj(main.entity.obj.Obj) SelfMoveEffect(eidolons.ability.effects.oneshot.move.SelfMoveEffect) SelfMoveEffect(eidolons.ability.effects.oneshot.move.SelfMoveEffect) Effect(main.ability.effects.Effect) DC_ActiveObj(eidolons.entity.active.DC_ActiveObj)

Example 9 with DC_Cell

use of eidolons.entity.obj.DC_Cell in project Eidolons by IDemiurge.

the class PriorityManagerImpl method getAttackPriority.

@Override
public int getAttackPriority(ActionSequence as) {
    Action action = as.getLastAction();
    if (action.getTarget() instanceof DC_Cell) {
        return 0;
    }
    Unit targetObj = (Unit) action.getTarget();
    DC_ActiveObj active = action.getActive();
    return getAttackPriority(active, targetObj);
}
Also used : Action(eidolons.game.battlecraft.ai.elements.actions.Action) AiQuickItemAction(eidolons.game.battlecraft.ai.elements.actions.AiQuickItemAction) DC_UnitAction(eidolons.entity.active.DC_UnitAction) DC_QuickItemAction(eidolons.entity.active.DC_QuickItemAction) DC_Cell(eidolons.entity.obj.DC_Cell) Unit(eidolons.entity.obj.unit.Unit) DC_ActiveObj(eidolons.entity.active.DC_ActiveObj)

Example 10 with DC_Cell

use of eidolons.entity.obj.DC_Cell in project Eidolons by IDemiurge.

the class SightMaster method getBlockedList.

// TODO
private Collection<Coordinates> getBlockedList(DequeImpl<Coordinates> list, BattleFieldObject source, FACING_DIRECTION facing) {
    Collection<Coordinates> removeList = new ArrayList<>();
    for (Coordinates c : list) {
        DC_Cell cell = master.getGame().getMaster().getCellByCoordinate(c);
        Boolean clearShot = !isBlocked(cell, source);
        if (!clearShot) {
            removeList.add(c);
        }
    }
    return removeList;
}
Also used : DC_Cell(eidolons.entity.obj.DC_Cell) Coordinates(main.game.bf.Coordinates)

Aggregations

DC_Cell (eidolons.entity.obj.DC_Cell)23 Coordinates (main.game.bf.Coordinates)11 Unit (eidolons.entity.obj.unit.Unit)10 DC_Obj (eidolons.entity.obj.DC_Obj)6 DC_ActiveObj (eidolons.entity.active.DC_ActiveObj)5 ArrayList (java.util.ArrayList)5 Obj (main.entity.obj.Obj)5 BattleFieldObject (eidolons.entity.obj.BattleFieldObject)3 Ref (main.entity.Ref)3 DC_SpellObj (eidolons.entity.active.DC_SpellObj)2 DC_UnitAction (eidolons.entity.active.DC_UnitAction)2 Action (eidolons.game.battlecraft.ai.elements.actions.Action)2 UNIT_VISION (main.content.enums.rules.VisionEnums.UNIT_VISION)2 DIRECTION (main.game.bf.Coordinates.DIRECTION)2 Label (com.badlogic.gdx.scenes.scene2d.ui.Label)1 AddBuffEffect (eidolons.ability.effects.attachment.AddBuffEffect)1 ModifyPropertyEffect (eidolons.ability.effects.common.ModifyPropertyEffect)1 SelfMoveEffect (eidolons.ability.effects.oneshot.move.SelfMoveEffect)1 DC_QuickItemAction (eidolons.entity.active.DC_QuickItemAction)1 DC_HeroItemObj (eidolons.entity.item.DC_HeroItemObj)1