1
0
Fork 0
spacetac/src/game/effects/ValueEffect.ts

41 lines
1 KiB
TypeScript

/// <reference path="BaseEffect.ts"/>
module TS.SpaceTac.Game {
/**
* Effect to add (or subtract if negative) an amount to a ship value.
*
* The effect is immediate and permanent.
*/
export class ValueEffect extends BaseEffect {
// Affected value
valuetype: keyof ShipValues;
// Value to add (or subtract if negative)
value: number;
constructor(valuetype: keyof ShipValues, value: number) {
super("value");
this.valuetype = valuetype;
this.value = value;
}
applyOnShip(ship: Ship): boolean {
return ship.setValue(this.valuetype, this.value, true);
}
isBeneficial(): boolean {
return this.value >= 0;
}
getFullCode(): string {
return `${this.code}-${this.valuetype}`;
}
getDescription(): string {
let attrname = SHIP_VALUES[this.valuetype].name;
return `${attrname} ${this.value > 0 ? "+" : "-"}${Math.abs(this.value)}`;
}
}
}