1
0
Fork 0

Improved distance display for move actions

This commit is contained in:
Michaël Lemaire 2017-09-10 22:20:29 +02:00
parent 1f8eb2d86d
commit 8c1bd3c2ea
2 changed files with 15 additions and 11 deletions

View File

@ -170,7 +170,7 @@ module TS.SpaceTac {
expect(action.getEffectsDescription()).toEqual("Move: 58km per power point (safety: 12km)");
action = new MoveAction(new Equipment(), 58, 12, 80);
expect(action.getEffectsDescription()).toEqual("Move: 58km per power point (safety: 12km, maneuvrability influence: 80%)");
expect(action.getEffectsDescription()).toEqual("Move: 12-58km per power point (safety: 12km)");
});
});
}

View File

@ -51,13 +51,22 @@ module TS.SpaceTac {
return ship.getValue("power") * this.getDistanceByActionPoint(ship);
}
/**
* Get the distance range that may be traveled with 1 action point
*/
getDistanceRangeByActionPoint(): IntegerRange {
let min_distance = Math.ceil(this.distance_per_power * (1 - this.maneuvrability_factor * 0.01));
return new IntegerRange(min_distance, this.distance_per_power);
}
/**
* Get the distance that may be traveled with 1 action point
*/
getDistanceByActionPoint(ship: Ship): number {
let maneuvrability = Math.max(ship.getAttribute("maneuvrability"), 0);
let factor = maneuvrability / (maneuvrability + 2);
return Math.ceil(this.distance_per_power * (1 - this.maneuvrability_factor * 0.01 * (1 - factor)));
let range = this.getDistanceRangeByActionPoint();
return range.getProportional(factor);
}
/**
@ -98,17 +107,12 @@ module TS.SpaceTac {
}
getEffectsDescription(): string {
let result = `Move: ${this.distance_per_power}km per power point`;
let range = this.getDistanceRangeByActionPoint();
let rangeinfo = (range.max == range.min) ? `${range.min}` : `${range.min}-${range.max}`;
let result = `Move: ${rangeinfo}km per power point`;
let precisions = [];
if (this.safety_distance) {
precisions.push(`safety: ${this.safety_distance}km`);
}
if (this.maneuvrability_factor) {
precisions.push(`maneuvrability influence: ${this.maneuvrability_factor}%`);
}
if (precisions.length) {
result += ` (${precisions.join(", ")})`;
result += ` (safety: ${this.safety_distance}km)`;
}
return result;