Refactoring: simplify troop training
This commit is contained in:
parent
1b053de16a
commit
25969b8c0f
@ -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,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -13,8 +13,6 @@ export interface Args {
|
||||
tabId?: number;
|
||||
buildTypeId?: number;
|
||||
troopId?: number;
|
||||
troopResources?: ResourcesInterface;
|
||||
trainCount?: number;
|
||||
count?: number;
|
||||
resources?: ResourcesInterface;
|
||||
coordinates?: CoordinatesInterface;
|
||||
|
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user