1
0
Fork 0
spacetac/src/ui/battle/ActionTooltip.ts

75 lines
3 KiB
TypeScript
Raw Normal View History

2017-09-24 22:23:22 +00:00
module TK.SpaceTac.UI {
2017-05-16 23:12:05 +00:00
/**
* Tooltip displaying action information
*/
export class ActionTooltip {
/**
* Fill the tooltip
*/
static fill(filler: TooltipFiller, ship: Ship, action: BaseAction, position: number) {
2017-10-10 22:32:46 +00:00
let builder = filler.styled({ size: 20 });
2015-03-03 00:00:00 +00:00
2017-10-10 22:32:46 +00:00
let icon = builder.image([`equipment-${action.equipment ? action.equipment.code : "---"}`, `action-${action.code}`]);
icon.scale.set(0.5);
2017-11-29 22:03:58 +00:00
builder.text(action.equipment ? action.equipment.name : action.getVerb(), 150, 0, { size: 24 });
2015-03-03 00:00:00 +00:00
2017-05-16 23:12:05 +00:00
let cost = "";
if (action instanceof MoveAction) {
if (ship.getValue("power") == 0) {
cost = "Not enough power";
} else {
cost = `Cost: 1 power per ${action.getDistanceByActionPoint(ship)}km`;
2017-05-16 23:12:05 +00:00
}
} else {
2017-05-16 23:12:05 +00:00
let power_usage = action.getActionPointsUsage(ship, null);
if (power_usage) {
if (ship.getValue("power") < power_usage) {
cost = "Not enough power";
} else if (power_usage > 0) {
2017-05-16 23:12:05 +00:00
cost = `Cost: ${power_usage} power`;
} else {
cost = `Recover: ${-power_usage} power`;
2017-05-16 23:12:05 +00:00
}
}
2017-05-16 23:12:05 +00:00
}
if (cost) {
2017-10-10 22:32:46 +00:00
builder.text(cost, 150, 40, { color: "#ffdd4b" });
2017-05-16 23:12:05 +00:00
}
2017-01-08 22:42:53 +00:00
2017-05-16 23:12:05 +00:00
if (action.equipment && action.equipment.cooldown.overheat) {
let cooldown = action.equipment.cooldown;
2017-05-22 16:29:04 +00:00
if (cooldown.heat > 0) {
2017-10-10 22:32:46 +00:00
builder.text("Cooling down ...", 150, 80, { color: "#c9604c" });
2017-05-22 16:29:04 +00:00
} else if (cooldown.willOverheat() && cost != "Not enough power") {
if (cooldown.cooling > 1) {
let turns = cooldown.cooling - 1;
2017-10-10 22:32:46 +00:00
builder.text(`Unavailable for ${turns} turn${turns > 1 ? "s" : ""} if used`, 150, 80, { color: "#c9604c" });
2017-05-16 23:12:05 +00:00
} else {
2017-10-10 22:32:46 +00:00
builder.text("Unavailable until next turn if used", 150, 80, { color: "#c9604c" });
2017-05-16 23:12:05 +00:00
}
}
} else if (action instanceof ToggleAction && action.activated) {
2017-10-10 22:32:46 +00:00
builder.text(`Activated`, 150, 80, { color: "#c9604c" });
2017-05-16 23:12:05 +00:00
}
let description = action.getEffectsDescription();
if (description) {
2017-10-10 22:32:46 +00:00
builder.text(description, 30, 170, { size: 16 });
2017-05-16 23:12:05 +00:00
}
2017-02-12 18:54:09 +00:00
2017-05-16 23:12:05 +00:00
let shortcut = "";
if (action instanceof EndTurnAction) {
shortcut = "[ space ]";
} else if (position == 9) {
shortcut = "[ 0 ]";
} else if (position >= 0 && position < 9) {
shortcut = `[ ${position + 1} ]`;
}
if (shortcut) {
2017-10-10 22:32:46 +00:00
builder.text(shortcut, 150, 120, { color: "#aaaaaa", size: 12 });
2015-03-03 00:00:00 +00:00
}
}
}
}