Refactoring: simplify troop training

This commit is contained in:
Anton Vakhrushev 2020-10-12 10:09:05 +03:00
parent 1b053de16a
commit 25969b8c0f
4 changed files with 10 additions and 17 deletions

View File

@ -17,13 +17,12 @@ import { Task } from '../../Queue/Task';
export class TrainTrooperAction extends BaseAction {
async run(args: Args, task: Task): Promise<any> {
const troopId = args.troopId || taskError('No troop id');
const trainCount = args.trainCount || taskError('No troop train count');
const troopResources = args.troopResources || taskError('No troop resources');
const trainCount = args.count || taskError('No count');
const availableCount = getAvailableCount(troopId);
const desiredCount = randomInRange(3, 12);
const readyToTrainCount = Math.min(availableCount, trainCount, desiredCount);
const readyToTrainCount = Math.min(trainCount, availableCount, desiredCount);
const nextToTrainCount = trainCount - readyToTrainCount;
if (readyToTrainCount <= 0) {
@ -33,8 +32,7 @@ export class TrainTrooperAction extends BaseAction {
if (nextToTrainCount > 0) {
this.scheduler.scheduleTask(TrainTroopTask.name, {
...task.args,
trainCount: nextToTrainCount,
resources: Resources.fromObject(troopResources).scale(nextToTrainCount),
count: nextToTrainCount,
});
}

View File

@ -23,6 +23,7 @@ import { createCelebrationButtons } from './BuildingPage/GuildHallPage';
import { CelebrationTask } from '../Handler/Task/CelebrationTask';
import { VillageController } from '../Village/VillageController';
import { notify } from '../Helpers/Browser';
import { Args } from '../Queue/Args';
export class BuildingPageController {
private scheduler: Scheduler;
@ -109,19 +110,18 @@ export class BuildingPageController {
notify(`Upgrading ${buildId} scheduled`);
}
private onScheduleTrainTroopers(troopId: number, resources: Resources, trainCount: number) {
const args = {
private onScheduleTrainTroopers(troopId: number, resources: Resources, count: number) {
const args: Args = {
villageId: grabActiveVillageId(),
buildId: this.attributes.buildId,
buildTypeId: this.attributes.buildTypeId,
sheetId: this.attributes.sheetId,
resources,
troopId,
trainCount,
troopResources: resources,
resources: resources.scale(trainCount),
count,
};
this.villageController.addTask(TrainTroopTask.name, args);
notify(`Training ${trainCount} troopers scheduled`);
notify(`Training ${count} troopers scheduled`);
}
private onSendResources(coordinates: Coordinates) {

View File

@ -13,8 +13,6 @@ export interface Args {
tabId?: number;
buildTypeId?: number;
troopId?: number;
troopResources?: ResourcesInterface;
trainCount?: number;
count?: number;
resources?: ResourcesInterface;
coordinates?: CoordinatesInterface;

View File

@ -3,7 +3,6 @@ import { Resources } from '../Core/Resources';
import { VillageStorage } from '../Storage/VillageStorage';
import { calcGatheringTimings, GatheringTime } from '../Core/GatheringTimings';
import { OrderedProductionQueues, ProductionQueue } from '../Core/ProductionQueue';
import { TrainTroopTask } from '../Handler/Task/TrainTroopTask';
import { Args } from '../Queue/Args';
import { timestamp } from '../Helpers/Time';
import { isInQueue, TaskCore } from '../Queue/Task';
@ -221,9 +220,7 @@ function getReadyForProductionTask(
return undefined;
}
return firstReadyQueue.tasks.find(
(task) => task.name === TrainTroopTask.name || task.canBeBuilt
);
return firstReadyQueue.tasks.find((task) => task.canBeBuilt);
}
function getTaskResources(task: TaskCore | undefined): Resources {