debug renderer improvements
This commit is contained in:
parent
3ada821430
commit
314806f647
|
@ -4,6 +4,10 @@ body, html {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
.footer {
|
||||||
|
border: 2px solid black;
|
||||||
|
padding: 0.25em 0.5em;
|
||||||
|
}
|
||||||
#irreligious-game {
|
#irreligious-game {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
|
@ -40,7 +44,7 @@ body, html {
|
||||||
margin: 0 0.5em 0.5em 0;
|
margin: 0 0.5em 0.5em 0;
|
||||||
}
|
}
|
||||||
.resource.locked {
|
.resource.locked {
|
||||||
display: none;
|
opacity: 0.25;
|
||||||
}
|
}
|
||||||
#resource-container-religion .resource {
|
#resource-container-religion .resource {
|
||||||
background-color: #ccf;
|
background-color: #ccf;
|
||||||
|
|
|
@ -77,8 +77,8 @@ class GameConfig {
|
||||||
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('chrch', new Church());
|
state.addResource('chrch', new Church());
|
||||||
|
state.addResource('cmpnd', new Compound());
|
||||||
|
|
||||||
// add passive resources
|
// add passive resources
|
||||||
state.addResource('creds', new Credibility());
|
state.addResource('creds', new Credibility());
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
class GameState {
|
class GameState {
|
||||||
private _versionMaj: number = 0;
|
private readonly _versionMaj: number = 0;
|
||||||
private _versionMin: number = 1;
|
private readonly _versionMin: number = 1;
|
||||||
|
|
||||||
public config: GameConfig;
|
public config: GameConfig;
|
||||||
|
|
||||||
|
@ -71,6 +71,8 @@ class GameState {
|
||||||
}
|
}
|
||||||
|
|
||||||
public performClick (resourceKey: string): void {
|
public performClick (resourceKey: string): void {
|
||||||
|
if (!this._resources[resourceKey].isUnlocked(this)) return;
|
||||||
|
|
||||||
if (this._resources[resourceKey].clickAction !== null) {
|
if (this._resources[resourceKey].clickAction !== null) {
|
||||||
this._resources[resourceKey].clickAction(this);
|
this._resources[resourceKey].clickAction(this);
|
||||||
for (const callback of this.onResourceClick) {
|
for (const callback of this.onResourceClick) {
|
||||||
|
@ -172,4 +174,11 @@ class GameState {
|
||||||
console.log('No save game was found.');
|
console.log('No save game was found.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public reset (): void {
|
||||||
|
const newState: GameState = this.config.generateState();
|
||||||
|
localStorage.clear();
|
||||||
|
this._resources = newState._resources;
|
||||||
|
this.log('Reset all game resources.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,21 @@ class Church extends Infrastructure {
|
||||||
constructor () {
|
constructor () {
|
||||||
super('Churches',
|
super('Churches',
|
||||||
'Preaching grounds for 2 pastors.');
|
'Preaching grounds for 2 pastors.');
|
||||||
this.cost.money = 10000;
|
this.cost.money = 150000;
|
||||||
this._costMultiplier.money = 1.01;
|
this._costMultiplier.money = 1.01;
|
||||||
this._baseMax = 2;
|
}
|
||||||
|
|
||||||
|
public max (state: GameState): number {
|
||||||
|
// one church per compound
|
||||||
|
return state.getResource('cmpnd').value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public isUnlocked (state: GameState): boolean {
|
||||||
|
if (this._isUnlocked) return true;
|
||||||
|
const compounds: IResource = state.getResource('cmpnd');
|
||||||
|
if (compounds.value > 0) {
|
||||||
|
this._isUnlocked = true;
|
||||||
|
}
|
||||||
|
return this._isUnlocked;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
class Compound extends Infrastructure {
|
class Compound extends Infrastructure {
|
||||||
constructor () {
|
constructor () {
|
||||||
super('Compounds',
|
super('Compounds',
|
||||||
'Provides space for tents and houses and a place to hide more money.');
|
'Provides space for tents, houses, and churches 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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,15 +4,12 @@ class House extends Infrastructure {
|
||||||
constructor () {
|
constructor () {
|
||||||
super('Houses',
|
super('Houses',
|
||||||
'Provides room to house 10 followers.');
|
'Provides room to house 10 followers.');
|
||||||
this.cost.money = 150000;
|
this.cost.money = 75000;
|
||||||
this._baseMax = 0;
|
this._costMultiplier.money = 1.01;
|
||||||
this._costMultiplier.money = 1.1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public max (state: GameState): number {
|
public max (state: GameState): number {
|
||||||
let max: number = this._baseMax;
|
return state.getResource('cmpnd').value * 2;
|
||||||
max += state.getResource('cmpnd').value * 2;
|
|
||||||
return max;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public isUnlocked (state: GameState): boolean {
|
public isUnlocked (state: GameState): boolean {
|
||||||
|
|
|
@ -52,6 +52,7 @@ class PlayerOrg implements IResource {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._lastRecruitmentLog = 0; // always log on click
|
||||||
this.addValue(1, state);
|
this.addValue(1, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ class Tent extends Infrastructure {
|
||||||
}
|
}
|
||||||
|
|
||||||
public max (state: GameState): number {
|
public max (state: GameState): number {
|
||||||
|
// ten extra tents per compound
|
||||||
let max: number = this._baseMax;
|
let max: number = this._baseMax;
|
||||||
max += state.getResource('cmpnd').value * 10;
|
max += state.getResource('cmpnd').value * 10;
|
||||||
return max;
|
return max;
|
||||||
|
|
|
@ -75,14 +75,26 @@ class DebugRenderer implements IRenderer {
|
||||||
state.performClick(rkey));
|
state.performClick(rkey));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// create tools footer
|
||||||
|
const footer: HTMLElement = document.createElement('div');
|
||||||
|
footer.className = 'footer';
|
||||||
|
footer.innerHTML = `
|
||||||
|
<button id='dbg-btn-reset'>Reset Game</button>
|
||||||
|
`;
|
||||||
|
resDiv.appendChild(footer);
|
||||||
|
document.getElementById('dbg-btn-reset')
|
||||||
|
.addEventListener('click', (): void => {
|
||||||
|
state.reset();
|
||||||
|
this._handleClick = true;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
for (const rkey of rkeys) {
|
for (const rkey of rkeys) {
|
||||||
const resource: IResource = state.getResource(rkey);
|
const resource: IResource = state.getResource(rkey);
|
||||||
const container: HTMLElement = document
|
const container: HTMLElement = document
|
||||||
.getElementById(`resource-container-${resource.resourceType}`);
|
.getElementById(`resource-container-${resource.resourceType}`);
|
||||||
if (resource.isUnlocked(state)) {
|
|
||||||
const el: HTMLElement = document
|
const el: HTMLElement = document
|
||||||
.getElementById(`resource-details-${rkey}`);
|
.getElementById(`resource-details-${rkey}`);
|
||||||
|
if (resource.isUnlocked(state)) {
|
||||||
if (el.className !== 'resource') el.className = 'resource';
|
if (el.className !== 'resource') el.className = 'resource';
|
||||||
const elV: Element =
|
const elV: Element =
|
||||||
el.getElementsByClassName('resource-value')[0];
|
el.getElementsByClassName('resource-value')[0];
|
||||||
|
@ -105,19 +117,22 @@ class DebugRenderer implements IRenderer {
|
||||||
if (enabled) elB[0].removeAttribute('disabled');
|
if (enabled) elB[0].removeAttribute('disabled');
|
||||||
else elB[0].setAttribute('disabled', 'disabled');
|
else elB[0].setAttribute('disabled', 'disabled');
|
||||||
}
|
}
|
||||||
if (this._handleClick) {
|
|
||||||
if (resource.inc !== null && resource.inc(state) > 0) {
|
if (resource.inc !== null && resource.inc(state) > 0) {
|
||||||
const elI: Element =
|
const elI: Element =
|
||||||
el.getElementsByClassName('resource-inc')[0];
|
el.getElementsByClassName('resource-inc')[0];
|
||||||
elI.innerHTML =
|
elI.innerHTML =
|
||||||
` +${state.formatNumber(resource.inc(state))}/s`;
|
` +${state.formatNumber(resource.inc(state))}/s`;
|
||||||
}
|
}
|
||||||
|
if (this._handleClick) {
|
||||||
const elC: HTMLCollectionOf<Element> =
|
const elC: HTMLCollectionOf<Element> =
|
||||||
el.getElementsByClassName('resource-cost');
|
el.getElementsByClassName('resource-cost');
|
||||||
if (elC.length > 0) {
|
if (elC.length > 0) {
|
||||||
elC[0].innerHTML = this._getCostStr(resource, state);
|
elC[0].innerHTML = this._getCostStr(resource, state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (el.className !== 'resource locked')
|
||||||
|
el.className = 'resource locked';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this._handleClick = false;
|
this._handleClick = false;
|
||||||
|
|
Reference in New Issue