travian/src/Grabber/VillageOverviewPageGrabber.ts
2020-05-26 22:29:41 +03:00

36 lines
1.2 KiB
TypeScript

import { Grabber } from './Grabber';
import { grabBuildingQueueInfo, grabResourcesPerformance } from '../Page/VillageBlock';
import { parseLocation, timestamp } from '../utils';
import { GrabError } from '../Errors';
import { BuildingQueueInfo } from '../Game';
import { ProductionQueue } from '../Core/ProductionQueue';
export class VillageOverviewPageGrabber extends Grabber {
grab(): void {
const p = parseLocation();
if (p.pathname !== '/dorf1.php') {
return;
}
this.storage.storeResourcesPerformance(grabResourcesPerformance());
this.storage.storeBuildingQueueInfo(this.grabBuildingQueueInfoOrDefault());
const buildingQueueInfo = this.grabBuildingQueueInfoOrDefault();
const buildingEndTime = buildingQueueInfo.seconds
? buildingQueueInfo.seconds + timestamp()
: 0;
this.storage.storeQueueTaskEnding(ProductionQueue.Building, buildingEndTime);
}
private grabBuildingQueueInfoOrDefault() {
try {
return grabBuildingQueueInfo();
} catch (e) {
if (e instanceof GrabError) {
return new BuildingQueueInfo(0);
}
throw e;
}
}
}