Add state grabbers
This commit is contained in:
parent
fc75b007c8
commit
c3428afabb
@ -1,16 +1,12 @@
|
|||||||
import { ActionController, registerAction } from './ActionController';
|
import { ActionController, registerAction } from './ActionController';
|
||||||
import { Args } from '../Common';
|
import { Args } from '../Common';
|
||||||
import { Task } from '../Storage/TaskQueue';
|
import { Task } from '../Storage/TaskQueue';
|
||||||
import { grabResources } from '../Page/ResourcesBlock';
|
import { StateGrabberManager } from '../State/StateGrabberManager';
|
||||||
import { grabActiveVillageId } from '../Page/VillageBlock';
|
|
||||||
import { VillageState } from '../Storage/VillageState';
|
|
||||||
|
|
||||||
@registerAction
|
@registerAction
|
||||||
export class StoreVillageState extends ActionController {
|
export class StoreVillageState extends ActionController {
|
||||||
async run(args: Args, task: Task): Promise<any> {
|
async run(args: Args, task: Task): Promise<any> {
|
||||||
const villageId = grabActiveVillageId();
|
const manager = new StateGrabberManager();
|
||||||
const resources = grabResources();
|
manager.grab();
|
||||||
const state = new VillageState(villageId);
|
|
||||||
state.storeResources(resources);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import * as URLParse from 'url-parse';
|
import * as URLParse from 'url-parse';
|
||||||
import { getNumber, toNumber, uniqId, waitForLoad } from '../utils';
|
import { getNumber, uniqId, waitForLoad } from '../utils';
|
||||||
import { Scheduler } from '../Scheduler';
|
import { Scheduler } from '../Scheduler';
|
||||||
import { BuildPage } from '../Page/BuildPage';
|
import { BuildPage } from '../Page/BuildPage';
|
||||||
import { UpgradeBuildingTask } from '../Task/UpgradeBuildingTask';
|
import { UpgradeBuildingTask } from '../Task/UpgradeBuildingTask';
|
||||||
@ -15,7 +15,8 @@ import DashboardApp from './Components/DashboardApp.vue';
|
|||||||
import { ResourcesToLevel } from '../Task/ResourcesToLevel';
|
import { ResourcesToLevel } from '../Task/ResourcesToLevel';
|
||||||
import { Logger } from '../Logger';
|
import { Logger } from '../Logger';
|
||||||
import { Resources } from '../Game';
|
import { Resources } from '../Game';
|
||||||
import { VillageState } from '../Storage/VillageState';
|
import { VillageState } from '../State/VillageState';
|
||||||
|
import { StateGrabberManager } from '../State/StateGrabberManager';
|
||||||
|
|
||||||
interface QuickAction {
|
interface QuickAction {
|
||||||
label: string;
|
label: string;
|
||||||
@ -26,10 +27,12 @@ export class Dashboard {
|
|||||||
private readonly version: string;
|
private readonly version: string;
|
||||||
private scheduler: Scheduler;
|
private scheduler: Scheduler;
|
||||||
private readonly logger;
|
private readonly logger;
|
||||||
|
private grabbers: StateGrabberManager;
|
||||||
|
|
||||||
constructor(version: string, scheduler: Scheduler) {
|
constructor(version: string, scheduler: Scheduler) {
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.scheduler = scheduler;
|
this.scheduler = scheduler;
|
||||||
|
this.grabbers = new StateGrabberManager();
|
||||||
this.logger = new Logger(this.constructor.name);
|
this.logger = new Logger(this.constructor.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,6 +44,8 @@ export class Dashboard {
|
|||||||
|
|
||||||
const villageId = grabActiveVillageId();
|
const villageId = grabActiveVillageId();
|
||||||
|
|
||||||
|
this.grabbers.grab();
|
||||||
|
|
||||||
const scheduler = this.scheduler;
|
const scheduler = this.scheduler;
|
||||||
const quickActions: QuickAction[] = [];
|
const quickActions: QuickAction[] = [];
|
||||||
|
|
||||||
|
@ -12,17 +12,20 @@ import { BalanceHeroResourcesTask } from './Task/BalanceHeroResourcesTask';
|
|||||||
import { Logger } from './Logger';
|
import { Logger } from './Logger';
|
||||||
import { BuildBuildingTask } from './Task/BuildBuildingTask';
|
import { BuildBuildingTask } from './Task/BuildBuildingTask';
|
||||||
import { GrabVillageState } from './Task/GrabVillageState';
|
import { GrabVillageState } from './Task/GrabVillageState';
|
||||||
|
import { StateGrabberManager } from './State/StateGrabberManager';
|
||||||
|
|
||||||
export class Scheduler {
|
export class Scheduler {
|
||||||
private readonly version: string;
|
private readonly version: string;
|
||||||
private taskQueue: TaskQueue;
|
private taskQueue: TaskQueue;
|
||||||
private actionQueue: ActionQueue;
|
private actionQueue: ActionQueue;
|
||||||
|
private grabbers: StateGrabberManager;
|
||||||
private logger: Logger;
|
private logger: Logger;
|
||||||
|
|
||||||
constructor(version: string) {
|
constructor(version: string) {
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.taskQueue = new TaskQueue();
|
this.taskQueue = new TaskQueue();
|
||||||
this.actionQueue = new ActionQueue();
|
this.actionQueue = new ActionQueue();
|
||||||
|
this.grabbers = new StateGrabberManager();
|
||||||
this.logger = new Logger(this.constructor.name);
|
this.logger = new Logger(this.constructor.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,6 +92,7 @@ export class Scheduler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async processActionCommand(cmd: Command, task: Task) {
|
private async processActionCommand(cmd: Command, task: Task) {
|
||||||
|
this.runGrabbers();
|
||||||
const actionController = createAction(cmd.name, this);
|
const actionController = createAction(cmd.name, this);
|
||||||
this.logger.log('PROCESS ACTION', cmd.name, actionController);
|
this.logger.log('PROCESS ACTION', cmd.name, actionController);
|
||||||
if (actionController) {
|
if (actionController) {
|
||||||
@ -146,6 +150,15 @@ export class Scheduler {
|
|||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private runGrabbers() {
|
||||||
|
try {
|
||||||
|
this.logger.log('Rug grabbers');
|
||||||
|
this.grabbers.grab();
|
||||||
|
} catch (e) {
|
||||||
|
this.logger.warn('Grabbers fails with', e.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
getTaskItems(): TaskList {
|
getTaskItems(): TaskList {
|
||||||
return this.taskQueue.seeItems();
|
return this.taskQueue.seeItems();
|
||||||
}
|
}
|
||||||
|
13
src/State/ResourceGrabber.ts
Normal file
13
src/State/ResourceGrabber.ts
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import { StateGrabber } from './StateGrabber';
|
||||||
|
import { grabActiveVillageId } from '../Page/VillageBlock';
|
||||||
|
import { grabResources } from '../Page/ResourcesBlock';
|
||||||
|
import { VillageState } from './VillageState';
|
||||||
|
|
||||||
|
export class ResourceGrabber extends StateGrabber {
|
||||||
|
grab(): void {
|
||||||
|
const villageId = grabActiveVillageId();
|
||||||
|
const resources = grabResources();
|
||||||
|
const state = new VillageState(villageId);
|
||||||
|
state.storeResources(resources);
|
||||||
|
}
|
||||||
|
}
|
3
src/State/StateGrabber.ts
Normal file
3
src/State/StateGrabber.ts
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
export abstract class StateGrabber {
|
||||||
|
abstract grab(): void;
|
||||||
|
}
|
17
src/State/StateGrabberManager.ts
Normal file
17
src/State/StateGrabberManager.ts
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import { StateGrabber } from './StateGrabber';
|
||||||
|
import { ResourceGrabber } from './ResourceGrabber';
|
||||||
|
|
||||||
|
export class StateGrabberManager {
|
||||||
|
private grabbers: Array<StateGrabber> = [];
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.grabbers = [];
|
||||||
|
this.grabbers.push(new ResourceGrabber());
|
||||||
|
}
|
||||||
|
|
||||||
|
grab() {
|
||||||
|
for (let grabber of this.grabbers) {
|
||||||
|
grabber.grab();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
import { DataStorage } from './DataStorage';
|
import { DataStorage } from '../Storage/DataStorage';
|
||||||
import { Resources } from '../Game';
|
import { Resources } from '../Game';
|
||||||
|
|
||||||
export class VillageState {
|
export class VillageState {
|
Loading…
Reference in New Issue
Block a user