1
0
Fork 0
spacetac/src/game/EffectTemplate.ts

48 lines
1.3 KiB
TypeScript

module SpaceTac.Game {
"use strict";
// Modifier for a value of a BaseEffect subclass
export class EffectTemplateModifier {
// Value name
name: string;
// Range of values (similar to ranges in LootTemplate)
range: Range;
// Basic constructor
constructor(name: string, range: Range) {
this.name = name;
this.range = range;
}
}
// Template used to generate a BaseEffect
export class EffectTemplate {
// Basic instance of the effect
effect: BaseEffect;
// Effect value modifiers
modifiers: EffectTemplateModifier[];
// Basic constructor
constructor(effect: BaseEffect) {
this.effect = effect;
this.modifiers = [];
}
// Add a value modifier for the effect
addModifier(name: string, range: Range) {
this.modifiers.push(new EffectTemplateModifier(name, range));
}
// Generate an effect with a given power
generateFixed(power: number): BaseEffect {
var effect = Tools.copyObject(this.effect);
this.modifiers.forEach((modifier: EffectTemplateModifier) => {
effect[modifier.name] = modifier.range.getProportional(power);
});
return effect;
}
}
}