use of eidolons.content.PARAMS in project Eidolons by IDemiurge.
the class UnitLevelManager method spendPoints.
public Integer spendPoints(Entity newType, boolean attrs) {
PARAMS pointsParam = (attrs) ? PARAMS.ATTR_POINTS : PARAMS.MASTERY_POINTS;
Integer points = newType.getIntParam(pointsParam);
return spendPoints(points, newType, attrs);
}
use of eidolons.content.PARAMS in project Eidolons by IDemiurge.
the class UnitLevelManager method spendPoints.
public Integer spendPoints(int points, Entity newType, boolean attrs) {
String progression = newType.getProperty((attrs) ? PROPS.ATTRIBUTE_PROGRESSION : PROPS.MASTERY_PROGRESSION);
if (StringMaster.isEmpty(progression)) {
// TODO set for
progression = generateProgression(newType, attrs);
newType.setProperty((attrs) ? PROPS.ATTRIBUTE_PROGRESSION : PROPS.MASTERY_PROGRESSION, // type?
progression);
}
List<String> list = StringMaster.openContainer(progression);
PARAMS pointsParam = (attrs) ? PARAMS.ATTR_POINTS : PARAMS.MASTERY_POINTS;
if (list.isEmpty()) {
return points;
}
Loop.startLoop(50);
while (points > 0 && !Loop.loopEnded()) // for (String valueName : list)
{
PARAMETER param = null;
try {
param = getRandomParameter(attrs, newType);
} catch (Exception e) {
}
if (param == null) {
continue;
}
int cost = PointMaster.getPointCost(newType.getIntParam(param), newType, param);
if (points >= cost) {
newType.modifyParameter(param, 1);
points -= cost;
}
}
newType.setParam(pointsParam, points);
return points;
}
use of eidolons.content.PARAMS in project Eidolons by IDemiurge.
the class UnitDataSource method getStatsValueContainers.
private List<List<ValueContainer>> getStatsValueContainers(PARAMS[][] unitInfoParamsGeneral) {
List<List<ValueContainer>> values = new ArrayList<>();
Arrays.stream(unitInfoParamsGeneral).forEach(ps -> values.add(Arrays.stream(ps).map(p -> {
String value = unit.getStrParam(p);
String name = p.getName();
ValueContainer valueContainer = new ValueContainer(name, value);
ValueTooltip valueTooltip = new ValueTooltip();
valueTooltip.setUserObject(Arrays.asList(new ValueContainer(name, value)));
valueContainer.addListener(valueTooltip.getController());
return valueContainer;
}).collect(Collectors.toList())));
return values;
}
use of eidolons.content.PARAMS in project Eidolons by IDemiurge.
the class UnitDataSource method getWeaponValueContainer.
private ValueContainer getWeaponValueContainer(DC_WeaponObj weapon) {
TextureRegion image;
if (weapon != null) {
image = getOrCreateR(weapon.getImagePath());
} else {
image = getOrCreateR(CELL_TYPE.WEAPON_MAIN.getSlotImagePath());
}
ValueContainer valueContainer = new ValueContainer(image);
if (weapon != null) {
List<ValueContainer> list = new ArrayList<>();
for (int i = 0; i < WEAPON_DC_INFO_PARAMS.length; i++) {
PARAMS p = WEAPON_DC_INFO_PARAMS[i];
String value = String.valueOf(weapon.getIntParam(p));
String name = p.getName();
final ValueContainer tooltipContainer = new ValueContainer(name, value);
tooltipContainer.pad(10);
list.add(tooltipContainer);
}
Tooltip tooltip = new WeaponTooltip();
tooltip.setUserObject(new WeaponToolTipDataSource() {
@Override
public List<ValueContainer> getMainParams() {
return list;
}
@Override
public List<ValueContainer> getBuffs() {
return weapon.getBuffs().stream().filter(obj -> StringUtils.isNoneEmpty(obj.getType().getProperty(G_PROPS.IMAGE))).map(AttackTooltipFactory.getObjValueContainerMapper()).collect(Collectors.toList());
}
});
valueContainer.addListener(tooltip.getController());
}
return valueContainer;
}
use of eidolons.content.PARAMS in project Eidolons by IDemiurge.
the class AttackTooltipFactory method createAttackTooltip.
public static AttackTooltip createAttackTooltip(DC_UnitAction el, boolean precalc, boolean costs, boolean additionalInfo, boolean combatMode, DC_Obj target) {
Pair<PARAMS, PARAMS> pair = ACTION_TOOLTIPS_PARAMS_MAP.get(ACTION_TOOLTIP_HEADER_KEY);
String name = ActionTooltipMaster.getStringForTableValue(ACTION_TOOLTIP_HEADER_KEY, el);
final String leftImage = ActionTooltipMaster.getIconPathForTableRow(pair.getLeft());
final String rightImage = ActionTooltipMaster.getIconPathForTableRow(pair.getRight());
MultiValueContainer head = new MultiValueContainer(name, leftImage, rightImage);
VALUE[] baseKeys = ACTION_TOOLTIP_BASE_KEYS;
final List<MultiValueContainer> base = extractActionValues(el, baseKeys);
baseKeys = ACTION_TOOLTIP_RANGE_KEYS;
final List<MultiValueContainer> range = extractActionValues(el, baseKeys);
List /*<List<MultiValueContainer>>*/
textsList = new ArrayList<>();
for (PARAMS[] params : ACTION_TOOLTIP_PARAMS_TEXT) {
textsList.add(Arrays.stream(params).map(p -> {
String textForTableValue = ActionTooltipMaster.getTextForTableValue(p, el);
textForTableValue = TextWrapper.wrapWithNewLine(textForTableValue, 50);
if (StringUtils.isEmpty(textForTableValue)) {
return null;
} else {
return new MultiValueContainer(textForTableValue, "");
}
}).filter(Objects::nonNull).collect(Collectors.toList()));
}
AttackTooltip toolTip = new AttackTooltip(el);
ValueContainer precalcRow = createPrecalcRow(precalc, el, target);
toolTip.setUserObject(new ActionTooltipSource() {
@Override
public MultiValueContainer getHead() {
return head;
}
@Override
public List<MultiValueContainer> getBase() {
return base;
}
@Override
public List<MultiValueContainer> getRange() {
return range;
}
@Override
public List<List<ValueContainer>> getText() {
return textsList;
}
@Override
public CostTableSource getCostsSource() {
return () -> ActionCostSourceImpl.getActionCostList(el);
}
@Override
public ValueContainer getPrecalcRow() {
return precalcRow;
}
});
return toolTip;
}
Aggregations