Improve resource contracts updates

This commit is contained in:
2020-05-02 18:40:12 +03:00
parent 53b325eee2
commit d7809818ea
12 changed files with 181 additions and 75 deletions

View File

@ -0,0 +1,31 @@
import { Grabber } from './Grabber';
import { grabActiveVillageId } from '../Page/VillageBlock';
import { getBuildingPageAttributes, isBuildingPage } from '../Page/PageDetectors';
import { grabContractResources, hasContractResources } from '../Page/BuildingPage/BuildingPage';
import { ContractType } from '../Scheduler';
export class BuildingContractGrabber extends Grabber {
grab(): void {
if (!isBuildingPage()) {
return;
}
const building = getBuildingPageAttributes();
if (!building.buildTypeId) {
return;
}
if (!hasContractResources()) {
return;
}
const villageId = grabActiveVillageId();
const contract = grabContractResources();
this.scheduler.updateResources(contract, {
type: ContractType.UpgradeBuilding,
villageId,
buildId: building.buildId,
});
}
}

View File

@ -0,0 +1,26 @@
import { Grabber } from './Grabber';
import { grabActiveVillageId } from '../Page/VillageBlock';
import { getBuildingPageAttributes, isForgePage } from '../Page/PageDetectors';
import { ContractType } from '../Scheduler';
import { grabImprovementContracts } from '../Page/BuildingPage/ForgePage';
export class ForgeContractGrabber extends Grabber {
grab(): void {
if (!isForgePage()) {
return;
}
const villageId = grabActiveVillageId();
const { buildId } = getBuildingPageAttributes();
const contracts = grabImprovementContracts();
for (let { resources, unitId } of contracts) {
this.scheduler.updateResources(resources, {
type: ContractType.ImproveTrooper,
villageId,
buildId,
unitId,
});
}
}
}

View File

@ -1,3 +1,11 @@
import { Scheduler } from '../Scheduler';
export abstract class Grabber {
protected scheduler: Scheduler;
constructor(scheduler: Scheduler) {
this.scheduler = scheduler;
}
abstract grab(): void;
}

View File

@ -3,16 +3,21 @@ import { VillageResourceGrabber } from './VillageResourceGrabber';
import { VillageOverviewPageGrabber } from './VillageOverviewPageGrabber';
import { HeroPageGrabber } from './HeroPageGrabber';
import { MarketPageGrabber } from './MarketPageGrabber';
import { Scheduler } from '../Scheduler';
import { BuildingContractGrabber } from './BuildingContractGrabber';
import { ForgeContractGrabber } from './ForgeContractGrabber';
export class GrabberManager {
private readonly grabbers: Array<Grabber> = [];
constructor() {
constructor(scheduler: Scheduler) {
this.grabbers = [];
this.grabbers.push(new VillageResourceGrabber());
this.grabbers.push(new VillageOverviewPageGrabber());
this.grabbers.push(new HeroPageGrabber());
this.grabbers.push(new MarketPageGrabber());
this.grabbers.push(new VillageResourceGrabber(scheduler));
this.grabbers.push(new VillageOverviewPageGrabber(scheduler));
this.grabbers.push(new HeroPageGrabber(scheduler));
this.grabbers.push(new MarketPageGrabber(scheduler));
this.grabbers.push(new BuildingContractGrabber(scheduler));
this.grabbers.push(new ForgeContractGrabber(scheduler));
}
grab() {