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 };
}
|