2025-02-07 19:51:51 +01:00

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];
}
}