implemented increments

This commit is contained in:
Rudis Muiznieks 2021-08-20 23:30:32 -05:00
parent 80c74ed86b
commit 39f5830046
6 changed files with 22 additions and 2 deletions

View file

@ -16,6 +16,9 @@ class GameState {
if (this._resources[rkey].advanceAction !== null) {
this._resources[rkey].advanceAction(time, this);
}
if (this._resources[rkey].inc > 0) {
this._resources[rkey].value += this._resources[rkey].inc * time / 1000;
}
}
}

View file

@ -10,6 +10,7 @@ interface IResource {
resourceType: ResourceType;
value: number;
inc: number;
max?: number;
cost: { [key: string]: number };

View file

@ -4,6 +4,7 @@ abstract class Purchasable implements IResource {
public readonly resourceType = ResourceType.Infrastructure;
public readonly max?: number = null;
public value: number = 0;
public inc: number = 0;
public clickText: string = 'Purchase';
public clickDescription: string = 'Purchase';
@ -20,6 +21,7 @@ abstract class Purchasable implements IResource {
if (this.max !== null && this.value >= this.max) return;
if (state.deductCost(this.cost)) {
this.value += 1;
this.purchaseEffect(state);
if (this._costMultiplier !== null
&& Object.keys(this._costMultiplier !== null)) {
for (const rkey of Object.keys(this._costMultiplier)) {
@ -36,4 +38,8 @@ abstract class Purchasable implements IResource {
public isUnlocked (state: GameState): boolean {
return false;
}
protected purchaseEffect (state: GameState) {
return;
}
}

View file

@ -8,6 +8,7 @@ class Religion implements IResource {
public readonly clickAction: () => void = null;
public readonly advanceAction: (time: number) => void = null;
public readonly cost: { [key: string]: number } = null;
public readonly inc: number = 0;
constructor (
public readonly name: string,

View file

@ -14,10 +14,14 @@ class SavingsBonds extends Purchasable {
public isUnlocked (state: GameState): boolean {
if (this._isUnlocked) return true;
if (state.getResource('money').value >= 25) {
if (state.getResource('money').value >= this.cost.money) {
this._isUnlocked = true;
return true;
}
return false;
}
protected purchaseEffect (state: GameState) {
state.getResource('money').inc += 0.25;
}
}

View file

@ -48,8 +48,13 @@ class DebugRenderer implements IRenderer {
const elV = el.getElementsByClassName('value')[0];
const elT = el.getElementsByClassName('max')[0];
elV.innerHTML = this.formatNumber(resource.value, 1);
elT.innerHTML = resource.max !== null ? ` / ${this.formatNumber(resource.max, 2)}` : '';
elT.innerHTML = resource.max !== null ? ` / ${this.formatNumber(resource.max, 1)}` : '';
if (this._handleClick) {
if (resource.inc > 0) {
console.log(`${resource.name} inc ${resource.inc} to ${this.formatNumber(resource.inc, 1)}`); // tslint:disable-line
const elI = el.getElementsByClassName('inc')[0];
elI.innerHTML = ` +${this.formatNumber(resource.inc, 1)}/s`;
}
const elC = el.getElementsByClassName('cost');
if (elC.length > 0) {
elC[0].innerHTML = this.getCostStr(resource, state);