Add state grabbers
This commit is contained in:
		| @@ -1,16 +1,12 @@ | ||||
| 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'; | ||||
| import { StateGrabberManager } from '../State/StateGrabberManager'; | ||||
|  | ||||
| @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); | ||||
|         const manager = new StateGrabberManager(); | ||||
|         manager.grab(); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| import * as URLParse from 'url-parse'; | ||||
| import { getNumber, toNumber, uniqId, waitForLoad } from '../utils'; | ||||
| import { getNumber, uniqId, waitForLoad } from '../utils'; | ||||
| import { Scheduler } from '../Scheduler'; | ||||
| import { BuildPage } from '../Page/BuildPage'; | ||||
| import { UpgradeBuildingTask } from '../Task/UpgradeBuildingTask'; | ||||
| @@ -15,7 +15,8 @@ import DashboardApp from './Components/DashboardApp.vue'; | ||||
| import { ResourcesToLevel } from '../Task/ResourcesToLevel'; | ||||
| import { Logger } from '../Logger'; | ||||
| import { Resources } from '../Game'; | ||||
| import { VillageState } from '../Storage/VillageState'; | ||||
| import { VillageState } from '../State/VillageState'; | ||||
| import { StateGrabberManager } from '../State/StateGrabberManager'; | ||||
|  | ||||
| interface QuickAction { | ||||
|     label: string; | ||||
| @@ -26,10 +27,12 @@ export class Dashboard { | ||||
|     private readonly version: string; | ||||
|     private scheduler: Scheduler; | ||||
|     private readonly logger; | ||||
|     private grabbers: StateGrabberManager; | ||||
|  | ||||
|     constructor(version: string, scheduler: Scheduler) { | ||||
|         this.version = version; | ||||
|         this.scheduler = scheduler; | ||||
|         this.grabbers = new StateGrabberManager(); | ||||
|         this.logger = new Logger(this.constructor.name); | ||||
|     } | ||||
|  | ||||
| @@ -41,6 +44,8 @@ export class Dashboard { | ||||
|  | ||||
|         const villageId = grabActiveVillageId(); | ||||
|  | ||||
|         this.grabbers.grab(); | ||||
|  | ||||
|         const scheduler = this.scheduler; | ||||
|         const quickActions: QuickAction[] = []; | ||||
|  | ||||
|   | ||||
| @@ -12,17 +12,20 @@ import { BalanceHeroResourcesTask } from './Task/BalanceHeroResourcesTask'; | ||||
| import { Logger } from './Logger'; | ||||
| import { BuildBuildingTask } from './Task/BuildBuildingTask'; | ||||
| import { GrabVillageState } from './Task/GrabVillageState'; | ||||
| import { StateGrabberManager } from './State/StateGrabberManager'; | ||||
|  | ||||
| export class Scheduler { | ||||
|     private readonly version: string; | ||||
|     private taskQueue: TaskQueue; | ||||
|     private actionQueue: ActionQueue; | ||||
|     private grabbers: StateGrabberManager; | ||||
|     private logger: Logger; | ||||
|  | ||||
|     constructor(version: string) { | ||||
|         this.version = version; | ||||
|         this.taskQueue = new TaskQueue(); | ||||
|         this.actionQueue = new ActionQueue(); | ||||
|         this.grabbers = new StateGrabberManager(); | ||||
|         this.logger = new Logger(this.constructor.name); | ||||
|     } | ||||
|  | ||||
| @@ -89,6 +92,7 @@ export class Scheduler { | ||||
|     } | ||||
|  | ||||
|     private async processActionCommand(cmd: Command, task: Task) { | ||||
|         this.runGrabbers(); | ||||
|         const actionController = createAction(cmd.name, this); | ||||
|         this.logger.log('PROCESS ACTION', cmd.name, actionController); | ||||
|         if (actionController) { | ||||
| @@ -146,6 +150,15 @@ export class Scheduler { | ||||
|         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 { | ||||
|         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'; | ||||
| 
 | ||||
| export class VillageState { | ||||
		Reference in New Issue
	
	Block a user