Refactored Augmentation implementation to Typescript, and to have the multiplier information in the actrual Augmentation object

This commit is contained in:
danielyxie
2019-01-15 05:11:14 -08:00
parent bcb231a966
commit 6d8d25e0bb
30 changed files with 982 additions and 925 deletions
+45
View File
@@ -0,0 +1,45 @@
/**
* Implements the Resleeve class, which defines a new body
* that the player can "re-sleeve" into.
*/
import { Person } from "../Person";
import { Augmentation } from "../../Augmentation/Augmentation";
import { Augmentations } from "../../Augmentation/Augmentations";
import { CONSTANTS } from "../../Constants";
export class Resleeve extends Person {
constructor() {
super();
}
getCost(): number {
// Each experience point adds this to the cost
const CostPerExp: number = 5;
// Final cost is multiplied by # Augs ^ this constant
const NumAugsExponent: number = 1.05;
// Get total exp in this re-sleeve
let totalExp: number = this.hacking_exp +
this.strength_exp +
this.defense_exp +
this.dexterity_exp +
this.agility_exp +
this.charisma_exp;
// Get total base Augmentation cost for this re-sleeve
let totalAugmentationCost: number = 0;
for (let i = 0; i < this.augmentations.length; ++i) {
const aug: Augmentation | null = Augmentations[this.augmentations[i]];
if (aug == null) {
console.error(`Could not find Augmentation ${this.augmentations[i]}`);
continue;
}
totalAugmentationCost += aug!.baseCost;
}
return (totalExp * CostPerExp) + (totalAugmentationCost * Math.pow(this.augmentations.length, NumAugsExponent));
}
}