Grab queue time for guild hall and forge

This commit is contained in:
2020-05-19 14:44:32 +03:00
parent 5611fe5713
commit 42feced06e
7 changed files with 74 additions and 7 deletions

View File

@ -2,15 +2,24 @@ 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';
import { grabImprovementContracts, grabRemainingSeconds } from '../Page/BuildingPage/ForgePage';
import { VillageStorage } from '../Storage/VillageStorage';
import { ProductionQueue } from '../Core/ProductionQueue';
import { timestamp } from '../utils';
export class ForgeContractGrabber extends Grabber {
export class ForgePageGrabber extends Grabber {
grab(): void {
if (!isForgePage()) {
return;
}
const villageId = grabActiveVillageId();
this.grabContracts(villageId);
this.grabTimer(villageId);
}
private grabContracts(villageId: number): void {
const { buildId } = getBuildingPageAttributes();
const contracts = grabImprovementContracts();
@ -23,4 +32,10 @@ export class ForgeContractGrabber extends Grabber {
});
}
}
private grabTimer(villageId: number): void {
const state = new VillageStorage(villageId);
const seconds = grabRemainingSeconds();
state.storeQueueTaskEnding(ProductionQueue.UpgradeUnit, seconds ? seconds + timestamp() : 0);
}
}

View File

@ -5,7 +5,8 @@ import { HeroPageGrabber } from './HeroPageGrabber';
import { MarketPageGrabber } from './MarketPageGrabber';
import { Scheduler } from '../Scheduler';
import { BuildingContractGrabber } from './BuildingContractGrabber';
import { ForgeContractGrabber } from './ForgeContractGrabber';
import { ForgePageGrabber } from './ForgePageGrabber';
import { GuildHallPageGrabber } from './GuildHallPageGrabber';
export class GrabberManager {
private readonly grabbers: Array<Grabber> = [];
@ -17,7 +18,8 @@ export class GrabberManager {
this.grabbers.push(new HeroPageGrabber(scheduler));
this.grabbers.push(new MarketPageGrabber(scheduler));
this.grabbers.push(new BuildingContractGrabber(scheduler));
this.grabbers.push(new ForgeContractGrabber(scheduler));
this.grabbers.push(new ForgePageGrabber(scheduler));
this.grabbers.push(new GuildHallPageGrabber(scheduler));
}
grab() {

View File

@ -0,0 +1,20 @@
import { Grabber } from './Grabber';
import { grabActiveVillageId } from '../Page/VillageBlock';
import { VillageStorage } from '../Storage/VillageStorage';
import { isGuildHallPage } from '../Page/PageDetectors';
import { grabRemainingSeconds } from '../Page/BuildingPage/GuildHallPage';
import { ProductionQueue } from '../Core/ProductionQueue';
import { timestamp } from '../utils';
export class GuildHallPageGrabber extends Grabber {
grab(): void {
if (!isGuildHallPage()) {
return;
}
const villageId = grabActiveVillageId();
const state = new VillageStorage(villageId);
const seconds = grabRemainingSeconds();
state.storeQueueTaskEnding(ProductionQueue.Celebration, seconds ? seconds + timestamp() : 0);
}
}