configurable values to make the game go faster while testing
This commit is contained in:
parent
e6b75fdccd
commit
f16fb1fcbf
|
@ -22,6 +22,12 @@ function gameLoop (state: GameState, renderer: IRenderer): void {
|
||||||
// run with default config at startup
|
// run with default config at startup
|
||||||
((): void => {
|
((): void => {
|
||||||
const config: GameConfig = new GameConfig();
|
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 renderer: IRenderer = new DebugRenderer();
|
||||||
const state: GameState = config.generateState();
|
const state: GameState = config.generateState();
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,10 @@ class GameConfig {
|
||||||
public relOtherShare: number = 0.02;
|
public relOtherShare: number = 0.02;
|
||||||
public relNoneShare: number = 0.16;
|
public relNoneShare: number = 0.16;
|
||||||
|
|
||||||
|
public baseTitheAmount: number = 10;
|
||||||
|
public baseCryptoReturnAmount: number = 1;
|
||||||
|
public baseCredibilityRestoreRate: number = 0.25;
|
||||||
|
|
||||||
public generateState (): GameState {
|
public generateState (): GameState {
|
||||||
const state: GameState = new GameState();
|
const state: GameState = new GameState();
|
||||||
|
|
||||||
|
@ -60,16 +64,18 @@ class GameConfig {
|
||||||
'Non-Religious', 'Atheists and agnostics.',
|
'Non-Religious', 'Atheists and agnostics.',
|
||||||
this.relNoneShare * this.worldPopulation));
|
this.relNoneShare * this.worldPopulation));
|
||||||
|
|
||||||
// add hidden resources
|
|
||||||
state.addResource('creds', new Credibility());
|
|
||||||
|
|
||||||
// add resources
|
// 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('crpto', new CryptoCurrency());
|
||||||
state.addResource('tents', new Tent());
|
state.addResource('tents', new Tent());
|
||||||
state.addResource('house', new House());
|
state.addResource('house', new House());
|
||||||
state.addResource('cmpnd', new Compound());
|
state.addResource('cmpnd', new Compound());
|
||||||
|
|
||||||
|
// add passive resources
|
||||||
|
state.addResource('creds', new Credibility(
|
||||||
|
this.baseCredibilityRestoreRate));
|
||||||
|
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
class Compound extends Infrastructure {
|
class Compound extends Infrastructure {
|
||||||
constructor () {
|
constructor () {
|
||||||
super('Compounds',
|
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.cost.money = 15000;
|
||||||
this._costMultiplier.money = 1.5;
|
this._costMultiplier.money = 1.5;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
class Credibility extends Passive {
|
class Credibility extends Passive {
|
||||||
private _lastValue: number = 100;
|
private _lastValue: number = 100;
|
||||||
|
|
||||||
constructor () {
|
constructor (
|
||||||
|
private _baseRestoreRate: number) {
|
||||||
super(
|
super(
|
||||||
'Credibility',
|
'Credibility',
|
||||||
'Affects your ability to recruit and retain followers.',
|
'Affects your ability to recruit and retain followers.',
|
||||||
|
@ -15,6 +16,6 @@ class Credibility extends Passive {
|
||||||
}
|
}
|
||||||
|
|
||||||
public inc (state: GameState): number {
|
public inc (state: GameState): number {
|
||||||
return 0.25;
|
return this._baseRestoreRate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ class House extends Infrastructure {
|
||||||
super('Houses',
|
super('Houses',
|
||||||
'Provides room to house 10 followers.');
|
'Provides room to house 10 followers.');
|
||||||
this.cost.money = 150000;
|
this.cost.money = 150000;
|
||||||
|
this._baseMax = 0;
|
||||||
this._costMultiplier.money = 1.1;
|
this._costMultiplier.money = 1.1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,11 +8,13 @@ class Money extends Purchasable {
|
||||||
|
|
||||||
constructor (
|
constructor (
|
||||||
public value: number,
|
public value: number,
|
||||||
|
private readonly _baseTitheAmount: number,
|
||||||
|
private readonly _baseCryptoReturnAmount: number
|
||||||
) {
|
) {
|
||||||
super('Money', 'Used to purchase goods and services.');
|
super('Money', 'Used to purchase goods and services.');
|
||||||
this.clickText = 'Collect Tithes';
|
this.clickText = 'Collect Tithes';
|
||||||
this.clickDescription = 'Voluntary contributions from followers.';
|
this.clickDescription = 'Voluntary contributions from followers.';
|
||||||
this._baseMax = 1000000;
|
this._baseMax = 500000;
|
||||||
}
|
}
|
||||||
|
|
||||||
public isUnlocked (state: GameState): boolean {
|
public isUnlocked (state: GameState): boolean {
|
||||||
|
@ -21,7 +23,7 @@ class Money extends Purchasable {
|
||||||
|
|
||||||
public inc (state: GameState): number {
|
public inc (state: GameState): number {
|
||||||
// crypto currency
|
// crypto currency
|
||||||
return state.getResource('crpto').value * 0.5;
|
return state.getResource('crpto').value * this._baseCryptoReturnAmount;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected _purchaseAmount (state: GameState): number {
|
protected _purchaseAmount (state: GameState): number {
|
||||||
|
@ -36,7 +38,7 @@ class Money extends Purchasable {
|
||||||
state.getResource('creds').value -= lost;
|
state.getResource('creds').value -= lost;
|
||||||
}
|
}
|
||||||
// each follower gives you $10
|
// each follower gives you $10
|
||||||
const tithings: number = plorg.value * 10;
|
const tithings: number = plorg.value * this._baseTitheAmount;
|
||||||
this._lastCollectionTime = state.now;
|
this._lastCollectionTime = state.now;
|
||||||
return tithings;
|
return tithings;
|
||||||
}
|
}
|
||||||
|
@ -45,4 +47,10 @@ class Money extends Purchasable {
|
||||||
const followers: number = state.getResource('plorg').value;
|
const followers: number = state.getResource('plorg').value;
|
||||||
return `You collected $${amount} from ${followers} followers.`;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ class Tent extends Infrastructure {
|
||||||
super('Tents',
|
super('Tents',
|
||||||
'Provides room to house 2 followers.');
|
'Provides room to house 2 followers.');
|
||||||
this.cost.money = 250;
|
this.cost.money = 250;
|
||||||
this._costMultiplier.money = 1.1;
|
this._costMultiplier.money = 1.05;
|
||||||
this._baseMax = 5;
|
this._baseMax = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,8 @@ class DebugRenderer implements IRenderer {
|
||||||
el.getElementsByClassName('resource-btn');
|
el.getElementsByClassName('resource-btn');
|
||||||
if (elB.length > 0) {
|
if (elB.length > 0) {
|
||||||
const enabled: boolean = state.isPurchasable(resource.cost)
|
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');
|
if (enabled) elB[0].removeAttribute('disabled');
|
||||||
else elB[0].setAttribute('disabled', 'disabled');
|
else elB[0].setAttribute('disabled', 'disabled');
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue