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;
}
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;
}
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;
}
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);
}
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;
}
Aggregations