removed unnecessary type specifications
This commit is contained in:
parent
3e767b396b
commit
caf5152551
|
@ -15,6 +15,7 @@
|
||||||
"ignoreRegExpLiterals": true}],
|
"ignoreRegExpLiterals": true}],
|
||||||
"@typescript-eslint/triple-slash-reference": "off",
|
"@typescript-eslint/triple-slash-reference": "off",
|
||||||
"@typescript-eslint/no-unused-vars": "off",
|
"@typescript-eslint/no-unused-vars": "off",
|
||||||
|
"@typescript-eslint/no-inferrable-types": "warn",
|
||||||
"@typescript-eslint/array-type": ["warn", {"default": "array-simple"}],
|
"@typescript-eslint/array-type": ["warn", {"default": "array-simple"}],
|
||||||
"@typescript-eslint/consistent-indexed-object-style": ["warn", "index-signature"],
|
"@typescript-eslint/consistent-indexed-object-style": ["warn", "index-signature"],
|
||||||
"@typescript-eslint/consistent-type-assertions": ["warn", {
|
"@typescript-eslint/consistent-type-assertions": ["warn", {
|
||||||
|
|
|
@ -27,7 +27,7 @@ function startGame (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 = new GameConfig();
|
||||||
|
|
||||||
// debug values to make the game play faster while testing
|
// debug values to make the game play faster while testing
|
||||||
config.cfgTitheAmount = 1000;
|
config.cfgTitheAmount = 1000;
|
||||||
|
@ -36,8 +36,8 @@ function startGame (state: GameState, renderer: IRenderer): void {
|
||||||
config.cfgCredibilityRestoreRate = 5;
|
config.cfgCredibilityRestoreRate = 5;
|
||||||
config.cfgPastorRecruitRate = 0.5;
|
config.cfgPastorRecruitRate = 0.5;
|
||||||
|
|
||||||
const renderer: IRenderer = new DebugRenderer();
|
const renderer = new DebugRenderer();
|
||||||
const state: GameState = config.generateState();
|
const state = config.generateState();
|
||||||
|
|
||||||
// re-run main loop immediately on user clicks
|
// re-run main loop immediately on user clicks
|
||||||
state.onResourceClick.push((): void => {
|
state.onResourceClick.push((): void => {
|
||||||
|
|
|
@ -38,7 +38,7 @@ class GameConfig {
|
||||||
public cfgPastorRecruitRate = 0.01;
|
public cfgPastorRecruitRate = 0.01;
|
||||||
|
|
||||||
public generateState (): GameState {
|
public generateState (): GameState {
|
||||||
const state: GameState = new GameState(this);
|
const state = new GameState(this);
|
||||||
|
|
||||||
// create player organization
|
// create player organization
|
||||||
state.addResource('plorg', new PlayerOrg());
|
state.addResource('plorg', new PlayerOrg());
|
||||||
|
|
|
@ -7,11 +7,11 @@ class GameState {
|
||||||
|
|
||||||
public now = 0;
|
public now = 0;
|
||||||
|
|
||||||
private readonly _versionMaj: number = 0;
|
private readonly _versionMaj = 0;
|
||||||
private readonly _versionMin: number = 1;
|
private readonly _versionMin = 1;
|
||||||
|
|
||||||
private _timeSinceSave = 0;
|
private _timeSinceSave = 0;
|
||||||
private readonly _timeBetweenSaves: number = 10000;
|
private readonly _timeBetweenSaves = 10000;
|
||||||
|
|
||||||
private _resources: { [key: string]: IResource } = { };
|
private _resources: { [key: string]: IResource } = { };
|
||||||
private readonly _resourceKeys: string[] = [];
|
private readonly _resourceKeys: string[] = [];
|
||||||
|
|
|
@ -6,7 +6,7 @@ class DebugLogger implements ILogger {
|
||||||
}
|
}
|
||||||
|
|
||||||
public msg (text: string): void {
|
public msg (text: string): void {
|
||||||
const p: HTMLElement = document.createElement('p');
|
const p = document.createElement('p');
|
||||||
p.innerText = text;
|
p.innerText = text;
|
||||||
this._container.appendChild(p);
|
this._container.appendChild(p);
|
||||||
if (this._container.parentElement !== null) {
|
if (this._container.parentElement !== null) {
|
||||||
|
|
|
@ -9,7 +9,7 @@ class BuildingPermit extends Research {
|
||||||
|
|
||||||
public isUnlocked (state: GameState): boolean {
|
public isUnlocked (state: GameState): boolean {
|
||||||
if (this._isUnlocked) return true;
|
if (this._isUnlocked) return true;
|
||||||
const compounds: IResource = state.getResource('cmpnd');
|
const compounds = state.getResource('cmpnd');
|
||||||
if (compounds.value > 0) {
|
if (compounds.value > 0) {
|
||||||
this._isUnlocked = true;
|
this._isUnlocked = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ class Church extends Infrastructure {
|
||||||
|
|
||||||
public isUnlocked (state: GameState): boolean {
|
public isUnlocked (state: GameState): boolean {
|
||||||
if (this._isUnlocked) return true;
|
if (this._isUnlocked) return true;
|
||||||
const compounds: IResource = state.getResource('cmpnd');
|
const compounds = state.getResource('cmpnd');
|
||||||
if (compounds.value > 0) {
|
if (compounds.value > 0) {
|
||||||
this._isUnlocked = true;
|
this._isUnlocked = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ class Compound extends Infrastructure {
|
||||||
|
|
||||||
public isUnlocked (state: GameState): boolean {
|
public isUnlocked (state: GameState): boolean {
|
||||||
if (this._isUnlocked) return true;
|
if (this._isUnlocked) return true;
|
||||||
const tents: IResource = state.getResource('tents');
|
const tents = state.getResource('tents');
|
||||||
if (tents.value >= 5) {
|
if (tents.value >= 5) {
|
||||||
this._isUnlocked = true;
|
this._isUnlocked = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ class House extends Infrastructure {
|
||||||
|
|
||||||
public isUnlocked (state: GameState): boolean {
|
public isUnlocked (state: GameState): boolean {
|
||||||
if (this._isUnlocked) return true;
|
if (this._isUnlocked) return true;
|
||||||
const compounds: IResource = state.getResource('cmpnd');
|
const compounds = state.getResource('cmpnd');
|
||||||
if (compounds.value > 0) {
|
if (compounds.value > 0) {
|
||||||
this._isUnlocked = true;
|
this._isUnlocked = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/// <reference path="./Purchasable.ts" />
|
/// <reference path="./Purchasable.ts" />
|
||||||
|
|
||||||
abstract class Infrastructure extends Purchasable {
|
abstract class Infrastructure extends Purchasable {
|
||||||
public readonly resourceType: ResourceType = ResourceType.infrastructure;
|
public readonly resourceType = ResourceType.infrastructure;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
/// <reference path="./IResource.ts" />
|
/// <reference path="./IResource.ts" />
|
||||||
|
|
||||||
abstract class Job implements IResource {
|
abstract class Job implements IResource {
|
||||||
public readonly resourceType: ResourceType = ResourceType.job;
|
public readonly resourceType = ResourceType.job;
|
||||||
public readonly valueInWholeNumbers: boolean = true;
|
public readonly valueInWholeNumbers = true;
|
||||||
public readonly clickText: string = 'Hire';
|
public readonly clickText = 'Hire';
|
||||||
public readonly clickDescription: string = 'Promote one of your followers.';
|
public readonly clickDescription = 'Promote one of your followers.';
|
||||||
public value = 0;
|
public value = 0;
|
||||||
public readonly cost: { [key: string]: number } = { };
|
public readonly cost: { [key: string]: number } = { };
|
||||||
|
|
||||||
|
@ -49,15 +49,15 @@ abstract class Job implements IResource {
|
||||||
|
|
||||||
protected _availableJobs (state: GameState): number {
|
protected _availableJobs (state: GameState): number {
|
||||||
// number of followers minus the number of filled jobs
|
// number of followers minus the number of filled jobs
|
||||||
const followers: number = state.getResource('plorg').value;
|
const followers = state.getResource('plorg').value;
|
||||||
const hired: number = state.getResources().reduce(
|
const hired = state.getResources().reduce(
|
||||||
(tot: number, rkey: string): number => {
|
(tot: number, rkey: string): number => {
|
||||||
const res: IResource = state.getResource(rkey);
|
const res = state.getResource(rkey);
|
||||||
return res.resourceType === ResourceType.job
|
return res.resourceType === ResourceType.job
|
||||||
? tot + res.value
|
? tot + res.value
|
||||||
: tot;
|
: tot;
|
||||||
}, 0);
|
}, 0);
|
||||||
let max: number = followers - hired;
|
let max = followers - hired;
|
||||||
if (max < 0) max = 0;
|
if (max < 0) max = 0;
|
||||||
return max;
|
return max;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ class MegaChurch extends Infrastructure {
|
||||||
|
|
||||||
public isUnlocked (state: GameState): boolean {
|
public isUnlocked (state: GameState): boolean {
|
||||||
if (this._isUnlocked) return true;
|
if (this._isUnlocked) return true;
|
||||||
const permit: IResource = state.getResource('blpmt');
|
const permit = state.getResource('blpmt');
|
||||||
if (permit.value > 0) {
|
if (permit.value > 0) {
|
||||||
this._isUnlocked = true;
|
this._isUnlocked = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/// <reference path="./Purchasable.ts" />
|
/// <reference path="./Purchasable.ts" />
|
||||||
|
|
||||||
class Money extends Purchasable {
|
class Money extends Purchasable {
|
||||||
public readonly resourceType: ResourceType = ResourceType.consumable;
|
public readonly resourceType = ResourceType.consumable;
|
||||||
|
|
||||||
private _lastCollectionTime = 0;
|
private _lastCollectionTime = 0;
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ class Money extends Purchasable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public max: (state: GameState) => number = (state: GameState) => {
|
public max: (state: GameState) => number = (state: GameState) => {
|
||||||
let max: number = state.config.cfgStartingMoneyMax;
|
let max = state.config.cfgStartingMoneyMax;
|
||||||
max += state.getResource('cmpnd').value * 500000;
|
max += state.getResource('cmpnd').value * 500000;
|
||||||
return max;
|
return max;
|
||||||
};
|
};
|
||||||
|
@ -32,24 +32,24 @@ class Money extends Purchasable {
|
||||||
};
|
};
|
||||||
|
|
||||||
protected _purchaseAmount (state: GameState): number {
|
protected _purchaseAmount (state: GameState): number {
|
||||||
const plorg: IResource = state.getResource('plorg');
|
const plorg = state.getResource('plorg');
|
||||||
if (plorg.value === 0) {
|
if (plorg.value === 0) {
|
||||||
state.log('You have no followers to collect from!');
|
state.log('You have no followers to collect from!');
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
const diff: number = state.now - this._lastCollectionTime;
|
const diff = state.now - this._lastCollectionTime;
|
||||||
if (diff < state.config.cfgTimeBetweenTithes) {
|
if (diff < state.config.cfgTimeBetweenTithes) {
|
||||||
const lost: number = state.config.cfgTimeBetweenTithes / diff / 3;
|
const lost = state.config.cfgTimeBetweenTithes / diff / 3;
|
||||||
state.getResource('creds').addValue(lost * -1, state);
|
state.getResource('creds').addValue(lost * -1, state);
|
||||||
}
|
}
|
||||||
// each follower gives you $10
|
// each follower gives you $10
|
||||||
const tithings: number = plorg.value * state.config.cfgTitheAmount;
|
const tithings = plorg.value * state.config.cfgTitheAmount;
|
||||||
this._lastCollectionTime = state.now;
|
this._lastCollectionTime = state.now;
|
||||||
return tithings;
|
return tithings;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected _purchaseLog (amount: number, state: GameState): string {
|
protected _purchaseLog (amount: number, state: GameState): string {
|
||||||
const followers: number = state.getResource('plorg').value;
|
const followers = state.getResource('plorg').value;
|
||||||
return `You collected $${state.formatNumber(amount)} from ${state.formatNumber(followers)} followers.`;
|
return `You collected $${state.formatNumber(amount)} from ${state.formatNumber(followers)} followers.`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,19 @@
|
||||||
/// <reference path="./IResource.ts" />
|
/// <reference path="./IResource.ts" />
|
||||||
|
|
||||||
abstract class Passive implements IResource {
|
abstract class Passive implements IResource {
|
||||||
public readonly resourceType: ResourceType = ResourceType.passive;
|
public readonly resourceType = ResourceType.passive;
|
||||||
public readonly valueInWholeNumbers: boolean = false;
|
public readonly valueInWholeNumbers = false;
|
||||||
public readonly clickText: null = null;
|
public readonly clickText = null;
|
||||||
public readonly clickDescription: null = null;
|
public readonly clickDescription = null;
|
||||||
public value = 0;
|
public value = 0;
|
||||||
public readonly cost: null = null;
|
public readonly cost = null;
|
||||||
|
|
||||||
public readonly clickAction: null = null;
|
public readonly clickAction = null;
|
||||||
|
|
||||||
public max: ((state: GameState) => number) | null = null;
|
public max: ((state: GameState) => number) | null = null;
|
||||||
public inc: ((state: GameState) => number) | null = null;
|
public inc: ((state: GameState) => number) | null = null;
|
||||||
public advanceAction: ((time: number, state: GameState) => void) | null = null;
|
public advanceAction: (
|
||||||
|
(time: number, state: GameState) => void) | null = null;
|
||||||
|
|
||||||
constructor (
|
constructor (
|
||||||
public readonly name: string,
|
public readonly name: string,
|
||||||
|
|
|
@ -9,7 +9,7 @@ class Pastor extends Job {
|
||||||
}
|
}
|
||||||
|
|
||||||
public max: (state: GameState) => number = (state) => {
|
public max: (state: GameState) => number = (state) => {
|
||||||
let max: number = state.getResource('chrch').value * 2;
|
let max = state.getResource('chrch').value * 2;
|
||||||
max += state.getResource('mchch').value * 5;
|
max += state.getResource('mchch').value * 5;
|
||||||
return max;
|
return max;
|
||||||
};
|
};
|
||||||
|
@ -23,13 +23,13 @@ class Pastor extends Job {
|
||||||
public advanceAction (time: number, state: GameState): void {
|
public advanceAction (time: number, state: GameState): void {
|
||||||
this._timeSinceLastTithe += time;
|
this._timeSinceLastTithe += time;
|
||||||
if (this._timeSinceLastTithe >= state.config.cfgTimeBetweenTithes) {
|
if (this._timeSinceLastTithe >= state.config.cfgTimeBetweenTithes) {
|
||||||
const money: IResource = state.getResource('money');
|
const money = state.getResource('money');
|
||||||
const plorg: IResource = state.getResource('plorg');
|
const plorg = state.getResource('plorg');
|
||||||
// each pastor can collect from up to 100 followers
|
// each pastor can collect from up to 100 followers
|
||||||
let tithed: number = this.value * 100;
|
let tithed = this.value * 100;
|
||||||
if (Math.floor(plorg.value) < tithed)
|
if (Math.floor(plorg.value) < tithed)
|
||||||
tithed = Math.floor(plorg.value);
|
tithed = Math.floor(plorg.value);
|
||||||
let collected: number = tithed * state.config.cfgTitheAmount;
|
let collected = tithed * state.config.cfgTitheAmount;
|
||||||
if (money.max !== null && collected > money.max(state) - money.value)
|
if (money.max !== null && collected > money.max(state) - money.value)
|
||||||
collected = money.max(state) - money.value;
|
collected = money.max(state) - money.value;
|
||||||
if (collected > 0) {
|
if (collected > 0) {
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
/// <reference path="./IResource.ts" />
|
/// <reference path="./IResource.ts" />
|
||||||
|
|
||||||
class PlayerOrg implements IResource {
|
class PlayerOrg implements IResource {
|
||||||
public readonly resourceType: ResourceType = ResourceType.religion;
|
public readonly resourceType = ResourceType.religion;
|
||||||
public readonly name: string = 'Player';
|
public readonly name = 'Player';
|
||||||
public readonly description: string = 'In you they trust.';
|
public readonly description = 'In you they trust.';
|
||||||
public readonly valueInWholeNumbers: boolean = true;
|
public readonly valueInWholeNumbers = true;
|
||||||
public readonly clickText: string = 'Recruit';
|
public readonly clickText = 'Recruit';
|
||||||
public readonly clickDescription: string = 'Gather new followers.';
|
public readonly clickDescription = 'Gather new followers.';
|
||||||
public value = 0;
|
public value = 0;
|
||||||
public readonly cost: null = null;
|
public readonly cost = null;
|
||||||
|
|
||||||
private _timeSinceLastLost = 0;
|
private _timeSinceLastLost = 0;
|
||||||
private _lastRecruitmentLog = 0;
|
private _lastRecruitmentLog = 0;
|
||||||
|
@ -16,7 +16,7 @@ class PlayerOrg implements IResource {
|
||||||
private _followerDests: { [key: string]: number } = { };
|
private _followerDests: { [key: string]: number } = { };
|
||||||
|
|
||||||
public max (state: GameState): number {
|
public max (state: GameState): number {
|
||||||
let max: number = state.config.cfgStartingPlayerMax;
|
let max = state.config.cfgStartingPlayerMax;
|
||||||
max += state.getResource('tents').value * 2;
|
max += state.getResource('tents').value * 2;
|
||||||
max += state.getResource('house').value * 10;
|
max += state.getResource('house').value * 10;
|
||||||
return max;
|
return max;
|
||||||
|
@ -44,9 +44,9 @@ class PlayerOrg implements IResource {
|
||||||
}
|
}
|
||||||
|
|
||||||
// chance to fail increases as credibility decreases
|
// chance to fail increases as credibility decreases
|
||||||
const creds: IResource = state.getResource('creds');
|
const creds = state.getResource('creds');
|
||||||
if (creds.max !== null) {
|
if (creds.max !== null) {
|
||||||
const ratio: number = Math.ceil(creds.value) / creds.max(state);
|
const ratio = Math.ceil(creds.value) / creds.max(state);
|
||||||
if (Math.random() > ratio) {
|
if (Math.random() > ratio) {
|
||||||
state.log('Your recruitment efforts failed.');
|
state.log('Your recruitment efforts failed.');
|
||||||
return;
|
return;
|
||||||
|
@ -75,9 +75,9 @@ class PlayerOrg implements IResource {
|
||||||
} else {
|
} else {
|
||||||
// lost followers must return to other faiths
|
// lost followers must return to other faiths
|
||||||
for (let i = 0; i < diff * -1; i++) {
|
for (let i = 0; i < diff * -1; i++) {
|
||||||
const dest: [string, IResource] = this._getRandomReligion(state);
|
const dest = this._getRandomReligion(state);
|
||||||
dest[1].addValue(1, state);
|
dest[1].addValue(1, state);
|
||||||
const curFollowers: number = this._followerDests[dest[0]];
|
const curFollowers = this._followerDests[dest[0]];
|
||||||
this._followerDests[dest[0]] = !isNaN(curFollowers)
|
this._followerDests[dest[0]] = !isNaN(curFollowers)
|
||||||
? curFollowers + 1
|
? curFollowers + 1
|
||||||
: 1;
|
: 1;
|
||||||
|
@ -96,9 +96,9 @@ class PlayerOrg implements IResource {
|
||||||
if (this.value > 0) {
|
if (this.value > 0) {
|
||||||
const creds = state.getResource('creds');
|
const creds = state.getResource('creds');
|
||||||
if (creds.max !== null) {
|
if (creds.max !== null) {
|
||||||
const ratio: number = Math.ceil(creds.value) / creds.max(state);
|
const ratio = Math.ceil(creds.value) / creds.max(state);
|
||||||
if (Math.random() > ratio) {
|
if (Math.random() > ratio) {
|
||||||
const lost: number = Math.ceil(this.value / 25 * (1 - ratio));
|
const lost = Math.ceil(this.value / 25 * (1 - ratio));
|
||||||
this.addValue(lost * -1, state);
|
this.addValue(lost * -1, state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -115,7 +115,7 @@ class PlayerOrg implements IResource {
|
||||||
let total = 0;
|
let total = 0;
|
||||||
for (const rkey of Object.keys(this._followerDests)) {
|
for (const rkey of Object.keys(this._followerDests)) {
|
||||||
if (msg !== '') msg += ', ';
|
if (msg !== '') msg += ', ';
|
||||||
const religion: IResource = state.getResource(rkey);
|
const religion = state.getResource(rkey);
|
||||||
msg += `${state.formatNumber(this._followerDests[rkey])} to ${religion.name}`;
|
msg += `${state.formatNumber(this._followerDests[rkey])} to ${religion.name}`;
|
||||||
total += this._followerDests[rkey];
|
total += this._followerDests[rkey];
|
||||||
delete this._followerDests[rkey];
|
delete this._followerDests[rkey];
|
||||||
|
@ -127,7 +127,7 @@ class PlayerOrg implements IResource {
|
||||||
let total = 0;
|
let total = 0;
|
||||||
for (const rkey of Object.keys(this._followerSources)) {
|
for (const rkey of Object.keys(this._followerSources)) {
|
||||||
if (msg !== '') msg += ', ';
|
if (msg !== '') msg += ', ';
|
||||||
const religion: IResource = state.getResource(rkey);
|
const religion = state.getResource(rkey);
|
||||||
msg +=
|
msg +=
|
||||||
`${state.formatNumber(this._followerSources[rkey])} from ${religion.name}`;
|
`${state.formatNumber(this._followerSources[rkey])} from ${religion.name}`;
|
||||||
total += this._followerSources[rkey];
|
total += this._followerSources[rkey];
|
||||||
|
@ -140,9 +140,9 @@ class PlayerOrg implements IResource {
|
||||||
}
|
}
|
||||||
|
|
||||||
private _getRandomReligion (state: GameState): [string, IResource] {
|
private _getRandomReligion (state: GameState): [string, IResource] {
|
||||||
const religs: string[] = ['xtian', 'islam', 'hindu',
|
const religs = ['xtian', 'islam', 'hindu',
|
||||||
'buddh', 'sikhi', 'judah', 'other', 'agnos'];
|
'buddh', 'sikhi', 'judah', 'other', 'agnos'];
|
||||||
const source: string = religs[Math.floor(Math.random() * 8)];
|
const source = religs[Math.floor(Math.random() * 8)];
|
||||||
return [source, state.getResource(source)];
|
return [source, state.getResource(source)];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ abstract class Purchasable implements IResource {
|
||||||
public clickAction (state: GameState): void {
|
public clickAction (state: GameState): void {
|
||||||
if (this.max !== null && this.value >= this.max(state)) return;
|
if (this.max !== null && this.value >= this.max(state)) return;
|
||||||
if (state.deductCost(this.cost)) {
|
if (state.deductCost(this.cost)) {
|
||||||
const amount: number = this._purchaseAmount(state);
|
const amount = this._purchaseAmount(state);
|
||||||
if (amount > 0) {
|
if (amount > 0) {
|
||||||
this.value += amount;
|
this.value += amount;
|
||||||
state.log(this._purchaseLog(amount, state));
|
state.log(this._purchaseLog(amount, state));
|
||||||
|
@ -45,15 +45,15 @@ abstract class Purchasable implements IResource {
|
||||||
return this._isUnlocked;
|
return this._isUnlocked;
|
||||||
}
|
}
|
||||||
|
|
||||||
public advanceAction (time: number, state: GameState): void {
|
public advanceAction (_time: number, _state: GameState): void {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected _purchaseAmount (state: GameState): number {
|
protected _purchaseAmount (_state: GameState): number {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected _purchaseLog (amount: number, state: GameState): string {
|
protected _purchaseLog (amount: number, _state: GameState): string {
|
||||||
return `You purchased ${amount} x ${this.name}.`;
|
return `You purchased ${amount} x ${this.name}.`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
/// <reference path="./IResource.ts" />
|
/// <reference path="./IResource.ts" />
|
||||||
|
|
||||||
class Religion implements IResource {
|
class Religion implements IResource {
|
||||||
public readonly resourceType: ResourceType = ResourceType.religion;
|
public readonly resourceType = ResourceType.religion;
|
||||||
public readonly valueInWholeNumbers: boolean = true;
|
public readonly valueInWholeNumbers = true;
|
||||||
public readonly clickText: null = null;
|
public readonly clickText = null;
|
||||||
public readonly clickDescription: null = null;
|
public readonly clickDescription = null;
|
||||||
public readonly cost: null = null;
|
public readonly cost = null;
|
||||||
|
|
||||||
public readonly max: null = null;
|
public readonly max = null;
|
||||||
public readonly inc: null = null;
|
public readonly inc = null;
|
||||||
public readonly clickAction: null = null;
|
public readonly clickAction = null;
|
||||||
public readonly advanceAction: null = null;
|
public readonly advanceAction = null;
|
||||||
|
|
||||||
constructor (
|
constructor (
|
||||||
public readonly name: string,
|
public readonly name: string,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/// <reference path="./Purchasable.ts" />
|
/// <reference path="./Purchasable.ts" />
|
||||||
|
|
||||||
abstract class Research extends Purchasable {
|
abstract class Research extends Purchasable {
|
||||||
public readonly resourceType: ResourceType = ResourceType.research;
|
public readonly resourceType = ResourceType.research;
|
||||||
|
|
||||||
constructor (
|
constructor (
|
||||||
public readonly name: string,
|
public readonly name: string,
|
||||||
|
@ -13,5 +13,5 @@ abstract class Research extends Purchasable {
|
||||||
this.clickDescription = 'Complete this research.';
|
this.clickDescription = 'Complete this research.';
|
||||||
}
|
}
|
||||||
|
|
||||||
public max: (_state: GameState) => number = (_state) => 1;
|
public max: (state: GameState) => number = (_state) => 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ class Tent extends Infrastructure {
|
||||||
|
|
||||||
public max: (state: GameState) => number = (state) => {
|
public max: (state: GameState) => number = (state) => {
|
||||||
// ten extra tents per compound
|
// ten extra tents per compound
|
||||||
let max: number = state.config.cfgStartingTentMax;
|
let max = state.config.cfgStartingTentMax;
|
||||||
max += state.getResource('cmpnd').value * 10;
|
max += state.getResource('cmpnd').value * 10;
|
||||||
return max;
|
return max;
|
||||||
};
|
};
|
||||||
|
|
Reference in New Issue