use of eidolons.libgdx.gui.generic.ValueContainer 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.libgdx.gui.generic.ValueContainer 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;
}
use of eidolons.libgdx.gui.generic.ValueContainer in project Eidolons by IDemiurge.
the class WeaponTooltip method initTableValues.
private TablePanel initTableValues(List<ValueContainer> valueContainers) {
TablePanel table = new TablePanel();
final int size = valueContainers.size();
int halfSize = size / 2;
if (size % 2 != 0) {
halfSize++;
}
for (int i = 0; i < halfSize; i++) {
ValueContainer valueContainer = valueContainers.get(i);
valueContainer.cropName();
valueContainer.setNameAlignment(Align.left);
valueContainer.setBorder(getOrCreateR("UI/components/infopanel/simple_value_border.png"));
table.addElement(valueContainer);
final int i1 = i + halfSize;
if (i1 < valueContainers.size()) {
valueContainer = valueContainers.get(i1);
valueContainer.cropName();
valueContainer.setNameAlignment(Align.left);
valueContainer.setBorder(getOrCreateR("UI/components/infopanel/simple_value_border.png"));
table.addElement(valueContainer);
}
table.row();
}
return table;
}
use of eidolons.libgdx.gui.generic.ValueContainer in project Eidolons by IDemiurge.
the class InventoryWithAction method updateAct.
@Override
public void updateAct(float delta) {
if (getUserObject() == null)
return;
super.updateAct(delta);
final InventoryDataSource source = (InventoryDataSource) getUserObject();
if (ExplorationMaster.isExplorationOn()) {
actionPointsText.setActor(new ValueContainer("Free Mode", ""));
} else {
actionPointsText.setActor(new ValueContainer("Actions available:", source.getOperationsString()));
}
initButtonListeners();
}
use of eidolons.libgdx.gui.generic.ValueContainer in project Eidolons by IDemiurge.
the class RingSlotsPanel method afterUpdateAct.
// @Override
// public void clear() {
//
// }
@Override
public void afterUpdateAct(float delta) {
if (getUserObject() == null)
return;
clear();
super.afterUpdateAct(delta);
final List<InventoryValueContainer> rings = ((EquipDataSource) getUserObject()).rings();
int a = 0;
for (int i = 0; i < 8; i++) {
if (i % 2 == (left ? 1 : 0)) {
continue;
}
a++;
ValueContainer valueContainer = rings.get(i);
if (valueContainer == null) {
valueContainer = new ValueContainer(getOrCreateR(CELL_TYPE.RING.getSlotImagePath()));
}
add(valueContainer).expand(0, 0);
if ((a) % 2 == 0) {
row();
}
}
}
Aggregations