52 lines
1.8 KiB
TypeScript
52 lines
1.8 KiB
TypeScript
import * as PIXI from 'pixi.js';
|
|
import { GemType, GemDefinition, GenericGemImprovement } from '../Definitions';
|
|
import GameAssets from '../Assets';
|
|
import { Engine } from '../Bastion';
|
|
|
|
export default class Gem {
|
|
public texture: PIXI.Texture;
|
|
public level: number = 1;
|
|
public definition: GemDefinition;
|
|
public id: number | string;
|
|
constructor(gemType: GemType, doNotIncrement?: boolean) {
|
|
this.definition = GameAssets.Gems[gemType];
|
|
this.texture = this.definition.textures[0];
|
|
|
|
if (!doNotIncrement) {
|
|
this.id = Engine.latestGemId + 1;
|
|
Engine.latestGemId++;
|
|
} else this.id = '';
|
|
}
|
|
public currentGemImprovement() {
|
|
let totalGemImprovement: GenericGemImprovement = {
|
|
damageUp: 0,
|
|
attackSpeedUp: 0,
|
|
rangeUp: 0,
|
|
timeToLiveUp: 0,
|
|
pierceUp: 0,
|
|
gemValueUp: 0,
|
|
};
|
|
for (let i = 0; i < this.level; i++) {
|
|
const item = this.definition.genericImprovements[i];
|
|
totalGemImprovement.damageUp += item.damageUp;
|
|
totalGemImprovement.attackSpeedUp += item.attackSpeedUp;
|
|
totalGemImprovement.rangeUp += item.rangeUp;
|
|
totalGemImprovement.timeToLiveUp += item.timeToLiveUp;
|
|
totalGemImprovement.pierceUp += item.pierceUp;
|
|
totalGemImprovement.gemValueUp += item.gemValueUp;
|
|
}
|
|
return totalGemImprovement;
|
|
}
|
|
public currentGemResistanceModifications() {
|
|
return this.definition.gemResistanceModifications[this.level - 1];
|
|
}
|
|
public isMaxLevel() {
|
|
return this.level == this.definition.totalLevels;
|
|
}
|
|
public levelUp(howMuch) {
|
|
if (!howMuch) howMuch = 1;
|
|
this.level += howMuch;
|
|
this.texture = this.definition.textures[this.level - 1];
|
|
}
|
|
}
|