Rewrite task queue

This commit is contained in:
2020-03-31 11:51:47 +03:00
parent e215b5ca93
commit 017433fdf9
17 changed files with 253 additions and 199 deletions

View File

@ -1,3 +0,0 @@
export default abstract class Action {
abstract async run(args);
}

View File

@ -0,0 +1,6 @@
import { Args } from '../Common';
import { Task } from '../Storage/TaskQueue';
export default abstract class ActionController {
abstract async run(args: Args, task: Task);
}

View File

@ -1,9 +1,11 @@
import Action from './Action';
import ActionController from './ActionController';
import { Args } from '../Common';
import { Task } from '../Storage/TaskQueue';
export default class GoToBuildingAction extends Action {
export default class GoToBuildingAction extends ActionController {
static NAME = 'go_to_building';
async run(args): Promise<any> {
async run(args: Args, task: Task): Promise<any> {
window.location.assign('/build.php?id=' + args.id);
return null;
}

View File

@ -1,8 +1,10 @@
import Action from './Action';
import ActionController from './ActionController';
import { Args } from '../Common';
import { Task } from '../Storage/TaskQueue';
export default class GoToResourceFieldsAction extends Action {
export default class GoToResourceFieldsAction extends ActionController {
static NAME = 'go_to_resource_fields';
async run(): Promise<any> {
async run(args: Args, task: Task): Promise<any> {
window.location.assign('/dorf1.php');
}
}

View File

@ -1,10 +1,11 @@
import Action from './Action';
import ActionController from './ActionController';
import { Args } from '../Common';
import { Task } from '../Storage/TaskQueue';
export default class StoreRemainingBuildTimeAction extends Action {
export default class StoreRemainingBuildTimeAction extends ActionController {
static NAME = 'store_remaining_build_time';
async run(args: Args): Promise<any> {
async run(args: Args, task: Task): Promise<any> {
const timer = jQuery('.buildDuration .timer');
// if (timer.length === 1) {
// const remainingSeconds = +timer.val();

View File

@ -1,9 +1,10 @@
import Action from './Action';
import ActionController from './ActionController';
import { Args } from '../Common';
import { TryLaterError } from '../Errors';
import Scheduler from '../Scheduler';
import { Task } from '../Storage/TaskQueue';
export default class UpgradeBuildingAction extends Action {
export default class UpgradeBuildingAction extends ActionController {
static NAME = 'upgrade_building';
private scheduler: Scheduler;
@ -12,12 +13,12 @@ export default class UpgradeBuildingAction extends Action {
this.scheduler = scheduler;
}
async run(args: Args): Promise<any> {
async run(args: Args, task: Task): Promise<any> {
const btn = jQuery(
'.upgradeButtonsContainer .section1 button.green.build'
);
if (btn.length === 1) {
this.scheduler.completeCurrentTask();
this.scheduler.completeTask(task.id);
btn.trigger('click');
} else {
throw new TryLaterError(60, 'No upgrade button, try later');