Add "no implicit any" option and types
This commit is contained in:
		| @@ -11,7 +11,7 @@ import { VillageState } from '../State/VillageState'; | |||||||
| import { Args } from '../Queue/Args'; | import { Args } from '../Queue/Args'; | ||||||
| import { Task } from '../Queue/TaskProvider'; | import { Task } from '../Queue/TaskProvider'; | ||||||
|  |  | ||||||
| function err(msg): never { | function err(msg: string): never { | ||||||
|     throw new ActionError(msg); |     throw new ActionError(msg); | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -101,7 +101,7 @@ export class SendResourcesAction extends ActionController { | |||||||
|         return missing; |         return missing; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private getResourcesForTransfer(recipientVillageId): Resources { |     private getResourcesForTransfer(recipientVillageId: number): Resources { | ||||||
|         const senderResources = this.getSenderAvailableResources(); |         const senderResources = this.getSenderAvailableResources(); | ||||||
|         const recipientNeeds = this.getRecipientRequirements(recipientVillageId); |         const recipientNeeds = this.getRecipientRequirements(recipientVillageId); | ||||||
|         const prepared = senderResources.min(recipientNeeds); |         const prepared = senderResources.min(recipientNeeds); | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ export class Container { | |||||||
|         this.version = version; |         this.version = version; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private _scheduler; |     private _scheduler: Scheduler | undefined; | ||||||
|  |  | ||||||
|     get scheduler(): Scheduler { |     get scheduler(): Scheduler { | ||||||
|         this._scheduler = |         this._scheduler = | ||||||
| @@ -27,7 +27,7 @@ export class Container { | |||||||
|         return this._scheduler; |         return this._scheduler; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private _executor; |     private _executor: Executor | undefined; | ||||||
|  |  | ||||||
|     get executor(): Executor { |     get executor(): Executor { | ||||||
|         this._executor = |         this._executor = | ||||||
| @@ -38,7 +38,7 @@ export class Container { | |||||||
|         return this._executor; |         return this._executor; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private _controlPanel; |     private _controlPanel: ControlPanel | undefined; | ||||||
|  |  | ||||||
|     get controlPanel(): ControlPanel { |     get controlPanel(): ControlPanel { | ||||||
|         this._controlPanel = |         this._controlPanel = | ||||||
|   | |||||||
| @@ -15,12 +15,13 @@ import { ResourcesToLevel } from './Task/ResourcesToLevel'; | |||||||
| import { ConsoleLogger, Logger } from './Logger'; | import { ConsoleLogger, Logger } from './Logger'; | ||||||
| import { VillageState } from './State/VillageState'; | import { VillageState } from './State/VillageState'; | ||||||
| import { Resources } from './Core/Resources'; | import { Resources } from './Core/Resources'; | ||||||
| import { Village } from './Core/Village'; | import { Coordinates, Village } from './Core/Village'; | ||||||
| import { calcGatheringTimings } from './Core/GatheringTimings'; | import { calcGatheringTimings } from './Core/GatheringTimings'; | ||||||
| import { DataStorage } from './DataStorage'; | import { DataStorage } from './DataStorage'; | ||||||
| import { getBuildingPageAttributes, isBuildingPage } from './Page/PageDetectors'; | import { getBuildingPageAttributes, isBuildingPage } from './Page/PageDetectors'; | ||||||
| import { debounce } from 'debounce'; | import { debounce } from 'debounce'; | ||||||
| import { ExecutionState } from './State/ExecutionState'; | import { ExecutionState } from './State/ExecutionState'; | ||||||
|  | import { ResourceStorage } from './Core/ResourceStorage'; | ||||||
|  |  | ||||||
| interface QuickAction { | interface QuickAction { | ||||||
|     label: string; |     label: string; | ||||||
| @@ -42,7 +43,7 @@ export class ControlPanel { | |||||||
|         await waitForLoad(); |         await waitForLoad(); | ||||||
|  |  | ||||||
|         const p = parseLocation(); |         const p = parseLocation(); | ||||||
|         this.logger.log('PARSED LOCATION', p); |         this.logger.info('PARSED LOCATION', p); | ||||||
|  |  | ||||||
|         const villageId = grabActiveVillageId(); |         const villageId = grabActiveVillageId(); | ||||||
|  |  | ||||||
| @@ -51,7 +52,7 @@ export class ControlPanel { | |||||||
|  |  | ||||||
|         const executionState = new ExecutionState(); |         const executionState = new ExecutionState(); | ||||||
|  |  | ||||||
|         const state = { |         const state: any = { | ||||||
|             name: 'Dashboard', |             name: 'Dashboard', | ||||||
|             version: this.version, |             version: this.version, | ||||||
|             activeVillage: {}, |             activeVillage: {}, | ||||||
| @@ -125,7 +126,7 @@ export class ControlPanel { | |||||||
|         this.createControlPanel(state); |         this.createControlPanel(state); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private createControlPanel(state) { |     private createControlPanel(state: any) { | ||||||
|         const appId = `app-${uniqId()}`; |         const appId = `app-${uniqId()}`; | ||||||
|         jQuery('body').prepend(`<div id="${appId}"></div>`); |         jQuery('body').prepend(`<div id="${appId}"></div>`); | ||||||
|         new Vue({ |         new Vue({ | ||||||
| @@ -135,7 +136,7 @@ export class ControlPanel { | |||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private createDepositsQuickActions(villageId) { |     private createDepositsQuickActions(villageId: number) { | ||||||
|         const deposits = grabResourceDeposits(); |         const deposits = grabResourceDeposits(); | ||||||
|         if (deposits.length === 0) { |         if (deposits.length === 0) { | ||||||
|             return []; |             return []; | ||||||
| @@ -162,25 +163,25 @@ export class ControlPanel { | |||||||
| } | } | ||||||
|  |  | ||||||
| class VillageController { | class VillageController { | ||||||
|     public readonly id; |     public readonly id: number; | ||||||
|     public readonly name; |     public readonly name: string; | ||||||
|     public readonly crd; |     public readonly crd: Coordinates; | ||||||
|     public readonly active; |     public readonly active: boolean; | ||||||
|     public readonly lumber; |     public readonly lumber: number; | ||||||
|     public readonly clay; |     public readonly clay: number; | ||||||
|     public readonly iron; |     public readonly iron: number; | ||||||
|     public readonly crop; |     public readonly crop: number; | ||||||
|     public readonly resources; |     public readonly resources: Resources; | ||||||
|     public readonly performance; |     public readonly performance: Resources; | ||||||
|     public readonly requiredResources: Resources; |     public readonly requiredResources: Resources; | ||||||
|     public readonly requiredBalance: Resources; |     public readonly requiredBalance: Resources; | ||||||
|     public readonly totalRequiredResources: Resources; |     public readonly totalRequiredResources: Resources; | ||||||
|     public readonly totalRequiredBalance: Resources; |     public readonly totalRequiredBalance: Resources; | ||||||
|     public readonly incomingResources: Resources; |     public readonly incomingResources: Resources; | ||||||
|     public readonly storage; |     public readonly storage: ResourceStorage; | ||||||
|     public readonly warehouse; |     public readonly warehouse: number; | ||||||
|     public readonly granary; |     public readonly granary: number; | ||||||
|     public readonly buildRemainingSeconds; |     public readonly buildRemainingSeconds: number; | ||||||
|  |  | ||||||
|     constructor(village: Village, state: VillageState, scheduler: Scheduler) { |     constructor(village: Village, state: VillageState, scheduler: Scheduler) { | ||||||
|         const resources = state.getResources(); |         const resources = state.getResources(); | ||||||
|   | |||||||
| @@ -64,7 +64,7 @@ export class DataStorage { | |||||||
|         const fullKey = join(NAMESPACE, this.name, key); |         const fullKey = join(NAMESPACE, this.name, key); | ||||||
|         try { |         try { | ||||||
|             const serialized = storage.getItem(fullKey); |             const serialized = storage.getItem(fullKey); | ||||||
|             this.logger.log('GET', fullKey, serialized); |             this.logger.info('GET', fullKey, serialized); | ||||||
|             return JSON.parse(serialized || 'null'); |             return JSON.parse(serialized || 'null'); | ||||||
|         } catch (e) { |         } catch (e) { | ||||||
|             if (e instanceof SyntaxError) { |             if (e instanceof SyntaxError) { | ||||||
| @@ -97,7 +97,7 @@ export class DataStorage { | |||||||
|     set(key: string, value: any) { |     set(key: string, value: any) { | ||||||
|         const fullKey = join(NAMESPACE, this.name, key); |         const fullKey = join(NAMESPACE, this.name, key); | ||||||
|         let serialized = JSON.stringify(value); |         let serialized = JSON.stringify(value); | ||||||
|         this.logger.log('SET', fullKey, serialized); |         this.logger.info('SET', fullKey, serialized); | ||||||
|         storage.setItem(fullKey, serialized); |         storage.setItem(fullKey, serialized); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -72,14 +72,14 @@ export class Executor { | |||||||
|  |  | ||||||
|         // текущего таска нет, очищаем очередь действий по таску |         // текущего таска нет, очищаем очередь действий по таску | ||||||
|         if (!task) { |         if (!task) { | ||||||
|             this.logger.log('NO ACTIVE TASK'); |             this.logger.info('NO ACTIVE TASK'); | ||||||
|             this.scheduler.clearActions(); |             this.scheduler.clearActions(); | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         const actionCommand = this.scheduler.nextAction(); |         const actionCommand = this.scheduler.nextAction(); | ||||||
|  |  | ||||||
|         this.logger.log('CURRENT JOB', 'TASK', task, 'ACTION', actionCommand); |         this.logger.info('CURRENT JOB', 'TASK', task, 'ACTION', actionCommand); | ||||||
|  |  | ||||||
|         this.runGrabbers(); |         this.runGrabbers(); | ||||||
|  |  | ||||||
| @@ -98,7 +98,7 @@ export class Executor { | |||||||
|  |  | ||||||
|     private async processActionCommand(cmd: Action, task: Task) { |     private async processActionCommand(cmd: Action, task: Task) { | ||||||
|         const actionHandler = createActionHandler(cmd.name, this.scheduler); |         const actionHandler = createActionHandler(cmd.name, this.scheduler); | ||||||
|         this.logger.log('PROCESS ACTION', cmd.name, actionHandler); |         this.logger.info('PROCESS ACTION', cmd.name, actionHandler); | ||||||
|         if (cmd.args.taskId !== task.id) { |         if (cmd.args.taskId !== task.id) { | ||||||
|             throw new ActionError(`Action task id ${cmd.args.taskId} not equal current task id ${task.id}`); |             throw new ActionError(`Action task id ${cmd.args.taskId} not equal current task id ${task.id}`); | ||||||
|         } |         } | ||||||
| @@ -112,7 +112,7 @@ export class Executor { | |||||||
|  |  | ||||||
|     private async processTaskCommand(task: Task) { |     private async processTaskCommand(task: Task) { | ||||||
|         const taskHandler = createTaskHandler(task.name, this.scheduler); |         const taskHandler = createTaskHandler(task.name, this.scheduler); | ||||||
|         this.logger.log('PROCESS TASK', task.name, task, taskHandler); |         this.logger.info('PROCESS TASK', task.name, task, taskHandler); | ||||||
|         if (taskHandler) { |         if (taskHandler) { | ||||||
|             await taskHandler.run(task); |             await taskHandler.run(task); | ||||||
|         } else { |         } else { | ||||||
| @@ -147,7 +147,7 @@ export class Executor { | |||||||
|  |  | ||||||
|     private runGrabbers() { |     private runGrabbers() { | ||||||
|         try { |         try { | ||||||
|             this.logger.log('Rug grabbers'); |             this.logger.info('Rug grabbers'); | ||||||
|             this.grabbers.grab(); |             this.grabbers.grab(); | ||||||
|         } catch (e) { |         } catch (e) { | ||||||
|             this.logger.warn('Grabbers fails with', e.message); |             this.logger.warn('Grabbers fails with', e.message); | ||||||
|   | |||||||
| @@ -1,31 +1,31 @@ | |||||||
| export abstract class Logger { | export interface Logger { | ||||||
|     abstract log(...args): void; |     info(...args: any[]): void; | ||||||
|     abstract warn(...args): void; |     warn(...args: any[]): void; | ||||||
|     abstract error(...args): void; |     error(...args: any[]): void; | ||||||
| } | } | ||||||
|  |  | ||||||
| export class NullLogger extends Logger { | export class NullLogger implements Logger { | ||||||
|     log(...args): void {} |     info(...args: any[]): void {} | ||||||
|     warn(...args): void {} |     warn(...args: any[]): void {} | ||||||
|     error(...args): void {} |     error(...args: any[]): void {} | ||||||
| } | } | ||||||
|  |  | ||||||
| export class ConsoleLogger extends Logger { | export class ConsoleLogger implements Logger { | ||||||
|     private readonly name: string; |     private readonly name: string; | ||||||
|  |  | ||||||
|     constructor(name: string) { |     constructor(name: string) { | ||||||
|         super(); |  | ||||||
|         this.name = name.toUpperCase(); |         this.name = name.toUpperCase(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     log(...args): void { |     info(...args: any[]): void { | ||||||
|         console.log(this.name + ':', ...args); |         console.log(this.name + ':', ...args); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     warn(...args): void { |     warn(...args: any[]): void { | ||||||
|         console.warn(this.name + ':', ...args); |         console.warn(this.name + ':', ...args); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     error(...args): void { |     error(...args: any[]): void { | ||||||
|         console.error(this.name + ':', ...args); |         console.error(this.name + ':', ...args); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -60,12 +60,12 @@ export function createUpgradeButton(onClickHandler: (resources: Resources) => vo | |||||||
|     }); |     }); | ||||||
| } | } | ||||||
|  |  | ||||||
| function grabResourcesFromList($els) { | function grabResourcesFromList($els: JQuery) { | ||||||
|     const getText = n => |     const getText = (n: number) => | ||||||
|         jQuery($els.get(n)) |         jQuery($els.get(n)) | ||||||
|             .find('.value') |             .find('.value') | ||||||
|             .text(); |             .text(); | ||||||
|     const grab = n => getNumber(getText(n)); |     const grab = (n: number) => getNumber(getText(n)); | ||||||
|     return new Resources(grab(0), grab(1), grab(2), grab(3)); |     return new Resources(grab(0), grab(1), grab(2), grab(3)); | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -120,7 +120,9 @@ export function createSendResourcesButton( | |||||||
|         <a id="${id1000}" href="#">x1000</a> |         <a id="${id1000}" href="#">x1000</a> | ||||||
|     </div>`); |     </div>`); | ||||||
|  |  | ||||||
|     const createHandler = (handler, scale) => evt => { |     const createHandler = (handler: (resources: Resources, crd: Coordinates, scale: number) => void, scale: number) => ( | ||||||
|  |         evt: JQuery.Event | ||||||
|  |     ) => { | ||||||
|         evt.preventDefault(); |         evt.preventDefault(); | ||||||
|         const sendSelect = jQuery('#send_select'); |         const sendSelect = jQuery('#send_select'); | ||||||
|         const resources = new Resources( |         const resources = new Resources( | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ import { UpgradeBuildingTask } from '../Task/UpgradeBuildingTask'; | |||||||
| import { Scheduler } from '../Scheduler'; | import { Scheduler } from '../Scheduler'; | ||||||
| import { TrainTroopTask } from '../Task/TrainTroopTask'; | import { TrainTroopTask } from '../Task/TrainTroopTask'; | ||||||
| import { grabActiveVillageId } from './VillageBlock'; | import { grabActiveVillageId } from './VillageBlock'; | ||||||
| import { ConsoleLogger } from '../Logger'; | import { ConsoleLogger, Logger } from '../Logger'; | ||||||
| import { | import { | ||||||
|     createBuildButton, |     createBuildButton, | ||||||
|     createSendResourcesButton, |     createSendResourcesButton, | ||||||
| @@ -21,7 +21,7 @@ import { BuildingPageAttributes, isMarketSendResourcesPage } from './PageDetecto | |||||||
| export class BuildingPageController { | export class BuildingPageController { | ||||||
|     private scheduler: Scheduler; |     private scheduler: Scheduler; | ||||||
|     private readonly attributes: BuildingPageAttributes; |     private readonly attributes: BuildingPageAttributes; | ||||||
|     private readonly logger; |     private readonly logger: Logger; | ||||||
|  |  | ||||||
|     constructor(scheduler: Scheduler, attributes: BuildingPageAttributes) { |     constructor(scheduler: Scheduler, attributes: BuildingPageAttributes) { | ||||||
|         this.scheduler = scheduler; |         this.scheduler = scheduler; | ||||||
| @@ -31,7 +31,7 @@ export class BuildingPageController { | |||||||
|  |  | ||||||
|     run() { |     run() { | ||||||
|         const { buildTypeId, sheetId } = this.attributes; |         const { buildTypeId, sheetId } = this.attributes; | ||||||
|         this.logger.log('BUILD PAGE DETECTED', 'ID', this.attributes.buildId, this.attributes); |         this.logger.info('BUILD PAGE DETECTED', 'ID', this.attributes.buildId, this.attributes); | ||||||
|  |  | ||||||
|         if (buildTypeId) { |         if (buildTypeId) { | ||||||
|             createUpgradeButton(res => this.onScheduleUpgradeBuilding(res)); |             createUpgradeButton(res => this.onScheduleUpgradeBuilding(res)); | ||||||
|   | |||||||
| @@ -35,7 +35,7 @@ export function grabActiveVillageId(): number { | |||||||
|     return grabActiveVillage()?.id || 0; |     return grabActiveVillage()?.id || 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| function grabVillageInfo($el): Village { | function grabVillageInfo($el: JQuery): Village { | ||||||
|     const href = $el.attr('href'); |     const href = $el.attr('href'); | ||||||
|     const parsedHref = parseLocation(href || ''); |     const parsedHref = parseLocation(href || ''); | ||||||
|     const id = getNumber(parsedHref.query.newdid); |     const id = getNumber(parsedHref.query.newdid); | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| import { DataStorage } from '../DataStorage'; | import { DataStorage } from '../DataStorage'; | ||||||
| import {Task, TaskList, TaskProvider, uniqTaskId} from './TaskProvider'; | import { Task, TaskList, TaskProvider, uniqTaskId } from './TaskProvider'; | ||||||
|  |  | ||||||
| const NAMESPACE = 'tasks:v1'; | const NAMESPACE = 'tasks:v1'; | ||||||
| const QUEUE_NAME = 'queue'; | const QUEUE_NAME = 'queue'; | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ export class TaskQueue { | |||||||
|     push(name: string, args: Args, ts: number): Task { |     push(name: string, args: Args, ts: number): Task { | ||||||
|         const id = uniqTaskId(); |         const id = uniqTaskId(); | ||||||
|         const task = new Task(id, ts, name, args); |         const task = new Task(id, ts, name, args); | ||||||
|         this.logger.log('PUSH TASK', id, ts, name, args); |         this.logger.info('PUSH TASK', id, ts, name, args); | ||||||
|         let items = this.getItems(); |         let items = this.getItems(); | ||||||
|         items.push(task); |         items.push(task); | ||||||
|         this.flushItems(items); |         this.flushItems(items); | ||||||
|   | |||||||
| @@ -56,7 +56,7 @@ export class Scheduler { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     scheduleTask(name: string, args: Args, ts?: number | undefined): void { |     scheduleTask(name: string, args: Args, ts?: number | undefined): void { | ||||||
|         this.logger.log('PUSH TASK', name, args, ts); |         this.logger.info('PUSH TASK', name, args, ts); | ||||||
|         let insertedTs = calculateInsertTime(this.taskQueue.seeItems(), name, args, ts); |         let insertedTs = calculateInsertTime(this.taskQueue.seeItems(), name, args, ts); | ||||||
|         this.taskQueue.push(name, args, insertedTs); |         this.taskQueue.push(name, args, insertedTs); | ||||||
|         if (args.villageId) { |         if (args.villageId) { | ||||||
| @@ -83,9 +83,9 @@ export class Scheduler { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         const villageId = task.args.villageId; |         const villageId = task.args.villageId; | ||||||
|         const modifyTime = t => withTime(t, timestamp() + seconds); |         const modifyTime = (t: Task) => withTime(t, timestamp() + seconds); | ||||||
|         const buildPred = t => sameVillage(villageId, t.args) && isBuildingTask(t.name); |         const buildPred = (t: Task) => sameVillage(villageId, t.args) && isBuildingTask(t.name); | ||||||
|         const trainPred = t => sameVillage(villageId, t.args) && isTrainTroopTask(t.name); |         const trainPred = (t: Task) => sameVillage(villageId, t.args) && isTrainTroopTask(t.name); | ||||||
|  |  | ||||||
|         if (isBuildingTask(task.name) && villageId) { |         if (isBuildingTask(task.name) && villageId) { | ||||||
|             this.taskQueue.modify(buildPred, modifyTime); |             this.taskQueue.modify(buildPred, modifyTime); | ||||||
| @@ -115,7 +115,7 @@ export class Scheduler { | |||||||
|         this.actionQueue.clear(); |         this.actionQueue.clear(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     getVillageRequiredResources(villageId): Resources { |     getVillageRequiredResources(villageId: number): Resources { | ||||||
|         const tasks = this.taskQueue |         const tasks = this.taskQueue | ||||||
|             .seeItems() |             .seeItems() | ||||||
|             .filter(t => sameVillage(villageId, t.args) && t.args.resources && t.name !== SendResourcesTask.name); |             .filter(t => sameVillage(villageId, t.args) && t.args.resources && t.name !== SendResourcesTask.name); | ||||||
| @@ -123,10 +123,10 @@ export class Scheduler { | |||||||
|         if (first && first.args.resources) { |         if (first && first.args.resources) { | ||||||
|             return Resources.fromObject(first.args.resources); |             return Resources.fromObject(first.args.resources); | ||||||
|         } |         } | ||||||
|         return new Resources(0, 0, 0, 0); |         return Resources.zero(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     getTotalVillageRequiredResources(villageId): Resources { |     getTotalVillageRequiredResources(villageId: number): Resources { | ||||||
|         const tasks = this.taskQueue |         const tasks = this.taskQueue | ||||||
|             .seeItems() |             .seeItems() | ||||||
|             .filter(t => sameVillage(villageId, t.args) && t.args.resources && t.name !== SendResourcesTask.name); |             .filter(t => sameVillage(villageId, t.args) && t.args.resources && t.name !== SendResourcesTask.name); | ||||||
| @@ -135,8 +135,8 @@ export class Scheduler { | |||||||
|  |  | ||||||
|     private reorderVillageTasks(villageId: number) { |     private reorderVillageTasks(villageId: number) { | ||||||
|         const tasks = this.taskQueue.seeItems(); |         const tasks = this.taskQueue.seeItems(); | ||||||
|         const trainPred = t => isTrainTroopTask(t.name) && sameVillage(villageId, t.args); |         const trainPred = (t: Task) => isTrainTroopTask(t.name) && sameVillage(villageId, t.args); | ||||||
|         const buildPred = t => isBuildingTask(t.name) && sameVillage(villageId, t.args); |         const buildPred = (t: Task) => isBuildingTask(t.name) && sameVillage(villageId, t.args); | ||||||
|         const lastTrainTaskTs = lastTaskTime(tasks, trainPred); |         const lastTrainTaskTs = lastTaskTime(tasks, trainPred); | ||||||
|         if (lastTrainTaskTs) { |         if (lastTrainTaskTs) { | ||||||
|             this.taskQueue.modify(buildPred, t => withTime(t, lastTrainTaskTs + 1)); |             this.taskQueue.modify(buildPred, t => withTime(t, lastTrainTaskTs + 1)); | ||||||
| @@ -196,7 +196,8 @@ function calculateInsertTime(tasks: ImmutableTaskList, name: string, args: Args, | |||||||
|  |  | ||||||
|     if (villageId && !insertedTs) { |     if (villageId && !insertedTs) { | ||||||
|         for (let taskTypePred of TASK_TYPE_PREDICATES) { |         for (let taskTypePred of TASK_TYPE_PREDICATES) { | ||||||
|             const sameVillageAndTypePred = t => taskTypePred(name) && t.args.villageId === villageId && t.name === name; |             const sameVillageAndTypePred = (t: Task) => | ||||||
|  |                 taskTypePred(name) && t.args.villageId === villageId && t.name === name; | ||||||
|             insertedTs = lastTaskTime(tasks, sameVillageAndTypePred); |             insertedTs = lastTaskTime(tasks, sameVillageAndTypePred); | ||||||
|             if (insertedTs) { |             if (insertedTs) { | ||||||
|                 insertedTs += 1; |                 insertedTs += 1; | ||||||
|   | |||||||
| @@ -6,18 +6,18 @@ import { Container } from './Container'; | |||||||
| function main() { | function main() { | ||||||
|     const logger = new ConsoleLogger('Travian'); |     const logger = new ConsoleLogger('Travian'); | ||||||
|  |  | ||||||
|     logger.log('TRAVIAN AUTOMATION', TxtVersion); |     logger.info('TRAVIAN AUTOMATION', TxtVersion); | ||||||
|  |  | ||||||
|     const container = new Container(TxtVersion); |     const container = new Container(TxtVersion); | ||||||
|     const modeDetector = new ModeDetector(); |     const modeDetector = new ModeDetector(); | ||||||
|  |  | ||||||
|     if (modeDetector.isAuto()) { |     if (modeDetector.isAuto()) { | ||||||
|         modeDetector.setAuto(); |         modeDetector.setAuto(); | ||||||
|         logger.log('AUTO MANAGEMENT ON'); |         logger.info('AUTO MANAGEMENT ON'); | ||||||
|         const executor = container.executor; |         const executor = container.executor; | ||||||
|         executor.run(); |         executor.run(); | ||||||
|     } else { |     } else { | ||||||
|         logger.log('NORMAL MODE'); |         logger.info('NORMAL MODE'); | ||||||
|         const controlPanel = container.controlPanel; |         const controlPanel = container.controlPanel; | ||||||
|         controlPanel.run(); |         controlPanel.run(); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -5,6 +5,7 @@ | |||||||
|     "isolatedModules": true, |     "isolatedModules": true, | ||||||
|     "module": "commonjs", |     "module": "commonjs", | ||||||
|     "outDir": "./dist", |     "outDir": "./dist", | ||||||
|  |     "noImplicitAny": true, | ||||||
|     "strictNullChecks": true, |     "strictNullChecks": true, | ||||||
|     "strictPropertyInitialization": true, |     "strictPropertyInitialization": true, | ||||||
|     "target": "es2018", |     "target": "es2018", | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user