Improve resource contracts updates
This commit is contained in:
31
src/Grabber/BuildingContractGrabber.ts
Normal file
31
src/Grabber/BuildingContractGrabber.ts
Normal 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,
|
||||
});
|
||||
}
|
||||
}
|
26
src/Grabber/ForgeContractGrabber.ts
Normal file
26
src/Grabber/ForgeContractGrabber.ts
Normal 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,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
@ -1,3 +1,11 @@
|
||||
import { Scheduler } from '../Scheduler';
|
||||
|
||||
export abstract class Grabber {
|
||||
protected scheduler: Scheduler;
|
||||
|
||||
constructor(scheduler: Scheduler) {
|
||||
this.scheduler = scheduler;
|
||||
}
|
||||
|
||||
abstract grab(): void;
|
||||
}
|
||||
|
@ -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() {
|
||||
|
Reference in New Issue
Block a user