Add village resources view to dashboard

This commit is contained in:
2020-04-16 13:07:26 +03:00
parent 29b55158d6
commit fc75b007c8
14 changed files with 180 additions and 56 deletions

View File

@ -1,6 +1,6 @@
import { Args } from '../Common';
import { Task } from '../Storage/TaskQueue';
import { GameState } from '../Storage/GameState';
import { DataStorage } from '../Storage/DataStorage';
import { Scheduler } from '../Scheduler';
const actionMap: { [name: string]: Function | undefined } = {};
@ -9,20 +9,18 @@ export function registerAction(constructor: Function) {
actionMap[constructor.name] = constructor;
}
export function createAction(name: string, state: GameState, scheduler: Scheduler): ActionController | undefined {
export function createAction(name: string, scheduler: Scheduler): ActionController | undefined {
const storedFunction = actionMap[name];
if (storedFunction === undefined) {
return undefined;
}
const constructor = (storedFunction as unknown) as typeof ActionController;
return new constructor(state, scheduler);
return new constructor(scheduler);
}
export class ActionController {
protected state: GameState;
protected scheduler: Scheduler;
constructor(state: GameState, scheduler: Scheduler) {
this.state = state;
constructor(scheduler: Scheduler) {
this.scheduler = scheduler;
}

View File

@ -8,10 +8,10 @@ import { HeroAllResources } from '../Game';
@registerAction
export class BalanceHeroResourcesAction extends ActionController {
async run(args: Args, task: Task): Promise<any> {
const resources = grabResources().asList();
const resourcesAsList = grabResources().asList();
const currentType = grabCurrentHeroResource();
const sorted = resources.sort((x, y) => x.value - y.value);
const sorted = resourcesAsList.sort((x, y) => x.value - y.value);
const min = sorted[0];
const max = sorted[sorted.length - 1];
const delta = max.value - min.value;

View File

@ -16,6 +16,6 @@ export class GrabHeroAttributesAction extends ActionController {
let normalized = text.replace(/[^0-9]/g, '');
const value = getNumber(normalized);
this.state.set('hero', { health: value });
// this.state.set('hero', { health: value });
}
}

View File

@ -28,7 +28,7 @@ export class SendOnAdventureAction extends ActionController {
adventures.sort((x, y) => x.level - y.level);
const easiest = adventures.shift();
const hero = this.state.get('hero') || {};
const hero = { health: 0 };
console.log('EASIEST', easiest);
console.log('HERO', hero);

View File

@ -0,0 +1,16 @@
import { ActionController, registerAction } from './ActionController';
import { Args } from '../Common';
import { Task } from '../Storage/TaskQueue';
import { grabResources } from '../Page/ResourcesBlock';
import { grabActiveVillageId } from '../Page/VillageBlock';
import { VillageState } from '../Storage/VillageState';
@registerAction
export class StoreVillageState extends ActionController {
async run(args: Args, task: Task): Promise<any> {
const villageId = grabActiveVillageId();
const resources = grabResources();
const state = new VillageState(villageId);
state.storeResources(resources);
}
}