Search in sources :

Example 31 with Entity

use of main.entity.Entity in project Eidolons by IDemiurge.

the class ListObjRenderer method getListCellRendererComponent.

@Override
public Component getListCellRendererComponent(JList<? extends String> list, String value, int index, boolean isSelected, boolean cellHasFocus) {
    if (TYPE == null) {
        return getLabel(value, isSelected);
    }
    Entity type = null;
    if (value != null) {
        type = DataManager.getType(value.toString(), TYPE);
    }
    if (type == null) {
        return new JLabel(value.toString());
    }
    ListItem<Entity> item = new ListItem<>(type, isSelected, cellHasFocus, 0);
    // item.setIcon(ListRenderer.getCompIcon(type, isSelected));
    if (mods != null) {
        Component component = item;
        for (LC_MODS sub : mods) {
            switch(sub) {
                case TEXT_DISPLAYED:
                    component = SwingMaster.decorateWithText(type.getName(), Color.black, component, "pos 0 20");
                    break;
                default:
                    break;
            }
        }
        return component;
    }
    return item;
}
Also used : Entity(main.entity.Entity) LC_MODS(main.swing.generic.components.editors.lists.GenericListChooser.LC_MODS) ListItem(main.swing.generic.components.list.ListItem)

Example 32 with Entity

use of main.entity.Entity in project Eidolons by IDemiurge.

the class PriorityManagerImpl method getSummonPriority.

@Override
public int getSummonPriority(Action action) {
    // TODO precalculate summoned unit power, its initiative, its
    // positioning...
    ObjType summoned = AI_SpellMaster.getSummonedUnit(action.getActive(), action.getRef());
    Integer unitXp = 0;
    if (summoned == null) {
        return 0;
    }
    try {
        SummonEffect summonEffect = (SummonEffect) EffectFinder.getEffectsOfClass(action.getActive().getAbilities(), SummonEffect.class).get(0);
        unitXp = summonEffect.getSummonedUnitXp().getInt(action.getRef());
        if (summonEffect instanceof RaiseEffect) {
            RaiseEffect raiseEffect = (RaiseEffect) summonEffect;
            unitXp += raiseEffect.getCorpse().getIntParam(PARAMS.TOTAL_XP) / 5;
            // TODO for items!
            Obj weapon = raiseEffect.getCorpse().getRef().getObj(KEYS.WEAPON);
            if (weapon != null) {
                unitXp += weapon.getIntParam(PARAMS.GOLD_COST) / 5;
            }
            Obj armor = raiseEffect.getCorpse().getRef().getObj(KEYS.ARMOR);
            if (armor != null) {
                unitXp += armor.getIntParam(PARAMS.GOLD_COST) / 5;
            }
            Obj weapon2 = raiseEffect.getCorpse().getRef().getObj(KEYS.OFFHAND);
            if (weapon2 != null) {
                unitXp += weapon2.getIntParam(PARAMS.GOLD_COST) / 5;
            }
        }
    } catch (Exception e) {
        main.system.ExceptionMaster.printStackTrace(e);
    }
    int power = summoned.getIntParam(PARAMS.POWER) + unitXp / DC_Formulas.POWER_XP_FACTOR;
    setBasePriority(power);
    if (summoned.getOBJ_TYPE_ENUM() == DC_TYPE.BF_OBJ) {
    }
    // getUnitPriority(targetObj)
    // try to getOrCreate as close to enemies as possible...
    Coordinates coordinate = action.getRef().getTargetObj().getCoordinates();
    boolean prefer_melee = UnitAnalyzer.isMeleePreferred(summoned);
    if (prefer_melee) {
        prefer_melee = UnitAnalyzer.isOffensePreferred(summoned);
    }
    // TODO special for forcefield - add consts per enemy path blocked
    for (Entity entity : !prefer_melee ? Analyzer.getAllies(getUnitAi()) : Analyzer.getAdjacentEnemies(getUnit(), false)) {
        // getOrCreate distance?
        if (entity instanceof Obj) {
            Obj obj = (Obj) entity;
            int distance = Math.max(1, PositionMaster.getDistance(coordinate, obj.getCoordinates()));
            // if (prefer_melee)
            addMultiplier(getUnitPriority(obj) / distance, obj.getName() + "'s proximity");
        }
    }
    // create unit quietly? precalc its best moves?
    applyMultiplier(getConstInt(AiConst.SUMMON_PRIORITY_MOD), "SUMMON_PRIORITY_MOD");
    // AI_SUMMON_PRIORITY_MOD!
    return priority;
}
Also used : SummonEffect(eidolons.ability.effects.oneshot.unit.SummonEffect) Entity(main.entity.Entity) RaiseEffect(eidolons.ability.effects.oneshot.unit.RaiseEffect) ObjType(main.entity.type.ObjType) DC_WeaponObj(eidolons.entity.item.DC_WeaponObj) DC_SpellObj(eidolons.entity.active.DC_SpellObj) DC_Obj(eidolons.entity.obj.DC_Obj) DC_ActiveObj(eidolons.entity.active.DC_ActiveObj) DC_HeroAttachedObj(eidolons.entity.obj.attach.DC_HeroAttachedObj) Obj(main.entity.obj.Obj) Coordinates(main.game.bf.Coordinates)

Example 33 with Entity

use of main.entity.Entity in project Eidolons by IDemiurge.

the class ListMaster method getEntityList.

public static List<Entity> getEntityList(List members) {
    List<Entity> list = new ArrayList<>();
    for (Object o : members) {
        if (o instanceof Entity) {
            Entity entity = (Entity) o;
            list.add(entity);
        }
    }
    return list;
}
Also used : Entity(main.entity.Entity)

Example 34 with Entity

use of main.entity.Entity in project Eidolons by IDemiurge.

the class DialogMaster method entityChoice.

public static Entity entityChoice(List<? extends Entity> types) {
    int i = 0;
    ImageIcon[] array = new ImageIcon[types.size()];
    for (Entity t : types) {
        ImageIcon icon = t.getIcon();
        if (icon.getIconHeight() > GuiManager.getBfObjSize()) {
            icon = new ImageIcon(ImageManager.getSizedVersion(icon.getImage(), GuiManager.getBfObjSize()));
        }
        array[i] = icon;
        i++;
    }
    int index = JOptionPane.showOptionDialog(null, "Select type: ", "Choose...", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, array, array[0]);
    if (index == -1) {
        return null;
    }
    return types.get(index);
}
Also used : Entity(main.entity.Entity)

Example 35 with Entity

use of main.entity.Entity in project Eidolons by IDemiurge.

the class SituationAnalyzer method getMeleeDangerFactor.

public int getMeleeDangerFactor(Unit unit, boolean adjacentOnly, boolean now) {
    List<? extends Entity> units = (adjacentOnly) ? Analyzer.getMeleeEnemies(unit) : Analyzer.getVisibleEnemies(unit.getAI());
    int factor = 0;
    for (Entity e : units) {
        Unit enemy = (Unit) e;
        int meleeThreat = getThreatAnalyzer().getMeleeThreat(enemy, now);
        factor += meleeThreat;
        LogMaster.log(LOG_CHANNEL.AI_DEBUG, "Melee threat " + meleeThreat + " from " + enemy.getName());
    }
    int mod = getConstInt(AiConst.DANGER_MELEE_BASE) - ParamPriorityAnalyzer.getUnitLifeFactor(unit);
    LogMaster.log(LOG_CHANNEL.AI_DEBUG, "Melee threat mod " + mod + " for " + unit.getName());
    if (mod != 0) {
        factor = factor * mod / 100;
    }
    LogMaster.log(LOG_CHANNEL.AI_DEBUG, "Melee threat factor " + factor + " for " + unit.getName());
    return factor;
}
Also used : Entity(main.entity.Entity) Unit(eidolons.entity.obj.unit.Unit)

Aggregations

Entity (main.entity.Entity)41 ObjType (main.entity.type.ObjType)11 Unit (eidolons.entity.obj.unit.Unit)7 PARAMETER (main.content.values.parameters.PARAMETER)5 Obj (main.entity.obj.Obj)5 OBJ_TYPE (main.content.OBJ_TYPE)4 Ref (main.entity.Ref)4 DC_ActiveObj (eidolons.entity.active.DC_ActiveObj)3 DC_PagedInfoPanel (eidolons.swing.components.panels.page.info.DC_PagedInfoPanel)3 ArrayList (java.util.ArrayList)3 DC_TYPE (main.content.DC_TYPE)3 ITEM_SLOT (main.content.enums.entity.ItemEnums.ITEM_SLOT)3 DC_SpellObj (eidolons.entity.active.DC_SpellObj)2 DC_WeaponObj (eidolons.entity.item.DC_WeaponObj)2 LinkedList (java.util.LinkedList)2 ActiveObj (main.entity.obj.ActiveObj)2 ArcaneEntity (main.logic.ArcaneEntity)2 AtlasRegion (com.badlogic.gdx.graphics.g2d.TextureAtlas.AtlasRegion)1 Vector2 (com.badlogic.gdx.math.Vector2)1 ActionGenerator (eidolons.ability.ActionGenerator)1