configurable values to make the game go faster while testing

This commit is contained in:
Rudis Muiznieks 2021-08-21 21:35:42 -05:00
parent e6b75fdccd
commit f16fb1fcbf
8 changed files with 35 additions and 12 deletions

View File

@ -22,6 +22,12 @@ function gameLoop (state: GameState, renderer: IRenderer): void {
// run with default config at startup
((): void => {
const config: GameConfig = new GameConfig();
// debug values to make the game play faster while testing
config.baseTitheAmount = 1000;
config.baseCryptoReturnAmount = 100;
config.baseCredibilityRestoreRate = 5;
const renderer: IRenderer = new DebugRenderer();
const state: GameState = config.generateState();

View File

@ -21,6 +21,10 @@ class GameConfig {
public relOtherShare: number = 0.02;
public relNoneShare: number = 0.16;
public baseTitheAmount: number = 10;
public baseCryptoReturnAmount: number = 1;
public baseCredibilityRestoreRate: number = 0.25;
public generateState (): GameState {
const state: GameState = new GameState();
@ -60,16 +64,18 @@ class GameConfig {
'Non-Religious', 'Atheists and agnostics.',
this.relNoneShare * this.worldPopulation));
// add hidden resources
state.addResource('creds', new Credibility());
// add resources
state.addResource('money', new Money(3.50));
state.addResource('money', new Money(3.50,
this.baseTitheAmount, this.baseCryptoReturnAmount));
state.addResource('crpto', new CryptoCurrency());
state.addResource('tents', new Tent());
state.addResource('house', new House());
state.addResource('cmpnd', new Compound());
// add passive resources
state.addResource('creds', new Credibility(
this.baseCredibilityRestoreRate));
return state;
}
}

View File

@ -3,7 +3,7 @@
class Compound extends Infrastructure {
constructor () {
super('Compounds',
'Provides space for tents and houses.');
'Provides space for tents and houses and a place to hide more money.');
this.cost.money = 15000;
this._costMultiplier.money = 1.5;
}

View File

@ -3,7 +3,8 @@
class Credibility extends Passive {
private _lastValue: number = 100;
constructor () {
constructor (
private _baseRestoreRate: number) {
super(
'Credibility',
'Affects your ability to recruit and retain followers.',
@ -15,6 +16,6 @@ class Credibility extends Passive {
}
public inc (state: GameState): number {
return 0.25;
return this._baseRestoreRate;
}
}

View File

@ -5,6 +5,7 @@ class House extends Infrastructure {
super('Houses',
'Provides room to house 10 followers.');
this.cost.money = 150000;
this._baseMax = 0;
this._costMultiplier.money = 1.1;
}

View File

@ -8,11 +8,13 @@ class Money extends Purchasable {
constructor (
public value: number,
private readonly _baseTitheAmount: number,
private readonly _baseCryptoReturnAmount: number
) {
super('Money', 'Used to purchase goods and services.');
this.clickText = 'Collect Tithes';
this.clickDescription = 'Voluntary contributions from followers.';
this._baseMax = 1000000;
this._baseMax = 500000;
}
public isUnlocked (state: GameState): boolean {
@ -21,7 +23,7 @@ class Money extends Purchasable {
public inc (state: GameState): number {
// crypto currency
return state.getResource('crpto').value * 0.5;
return state.getResource('crpto').value * this._baseCryptoReturnAmount;
}
protected _purchaseAmount (state: GameState): number {
@ -36,7 +38,7 @@ class Money extends Purchasable {
state.getResource('creds').value -= lost;
}
// each follower gives you $10
const tithings: number = plorg.value * 10;
const tithings: number = plorg.value * this._baseTitheAmount;
this._lastCollectionTime = state.now;
return tithings;
}
@ -45,4 +47,10 @@ class Money extends Purchasable {
const followers: number = state.getResource('plorg').value;
return `You collected $${amount} from ${followers} followers.`;
}
public max (state: GameState): number | null {
let max: number = this._baseMax;
max += state.getResource('cmpnd').value * 500000;
return max;
}
}

View File

@ -5,7 +5,7 @@ class Tent extends Infrastructure {
super('Tents',
'Provides room to house 2 followers.');
this.cost.money = 250;
this._costMultiplier.money = 1.1;
this._costMultiplier.money = 1.05;
this._baseMax = 5;
}

View File

@ -91,7 +91,8 @@ class DebugRenderer implements IRenderer {
el.getElementsByClassName('resource-btn');
if (elB.length > 0) {
const enabled: boolean = state.isPurchasable(resource.cost)
&& resource.value < resource.max(state);
&& (resource.max(state) === null
|| resource.value < resource.max(state));
if (enabled) elB[0].removeAttribute('disabled');
else elB[0].setAttribute('disabled', 'disabled');
}