diff --git a/src/Action/SendResourcesAction.ts b/src/Action/SendResourcesAction.ts index 65f0048..4f7b171 100644 --- a/src/Action/SendResourcesAction.ts +++ b/src/Action/SendResourcesAction.ts @@ -25,7 +25,10 @@ export class SendResourcesAction extends ActionController { console.log('Send', resources, 'to', coordinates); - const recipientVillage = this.findRecipientVillage(coordinates); + const recipientVillage = args.targetVillageId + ? this.findRecipientVillageById(args.targetVillageId) + : this.findRecipientVillage(coordinates); + const readyToTransfer = this.getResourcesForTransfer(recipientVillage.id).min(resources); const remainingResources = resources.sub(readyToTransfer).max(Resources.zero()); @@ -50,6 +53,15 @@ export class SendResourcesAction extends ActionController { clickSendButton(); } + private findRecipientVillageById(villageId: number): Village { + const villageList = grabVillageList(); + const village = villageList.find(v => v.id === villageId); + if (!village) { + throw new AbortTaskError('No village'); + } + return village; + } + private findRecipientVillage(coordinates: Coordinates): Village { const villageList = grabVillageList(); const village = villageList.find(v => v.crd.eq(coordinates)); diff --git a/src/DashboardView/VillageStateList.vue b/src/DashboardView/VillageStateList.vue index 6d0acd8..4628fa7 100644 --- a/src/DashboardView/VillageStateList.vue +++ b/src/DashboardView/VillageStateList.vue @@ -139,7 +139,7 @@ - + Обязательства: @@ -156,7 +156,7 @@ - + Торговцы: diff --git a/src/Page/BuildingPageController.ts b/src/Page/BuildingPageController.ts index dde87f8..a728b8f 100644 --- a/src/Page/BuildingPageController.ts +++ b/src/Page/BuildingPageController.ts @@ -2,7 +2,7 @@ import { notify, split } from '../utils'; import { UpgradeBuildingTask } from '../Task/UpgradeBuildingTask'; import { Scheduler } from '../Scheduler'; import { TrainTroopTask } from '../Task/TrainTroopTask'; -import { grabActiveVillageId } from './VillageBlock'; +import { grabActiveVillageId, grabVillageList } from './VillageBlock'; import { ConsoleLogger, Logger } from '../Logger'; import { createBuildButton, @@ -89,8 +89,10 @@ export class BuildingPageController { private onSendResources(resources: Resources, coordinates: Coordinates, scale: number) { const villageId = grabActiveVillageId(); + const targetVillage = grabVillageList().find(v => v.crd.eq(coordinates)); this.scheduler.scheduleTask(SendResourcesTask.name, { villageId: villageId, + targetVillageId: targetVillage?.id, buildTypeId: this.attributes.buildTypeId, buildId: this.attributes.buildId, tabId: this.attributes.tabId, diff --git a/src/VillageState.ts b/src/VillageState.ts index 6f1766a..6f7e96c 100644 --- a/src/VillageState.ts +++ b/src/VillageState.ts @@ -87,10 +87,11 @@ function createVillageState( scheduler: Scheduler ): VillageState { const villageIds = scheduler.getResourceCommitments(state.id); - const commitments = villageIds.reduce( - (res, villageId) => res.add(ownStates[villageId].required.balance), - Resources.zero() - ); + const commitments = villageIds.reduce((res, villageId) => { + const villageRequired = ownStates[villageId].required; + const missing = villageRequired.balance.min(Resources.zero()); + return res.add(missing); + }, Resources.zero()); return { ...state, commitments }; }