Fix commitments calculation
This commit is contained in:
parent
129f107881
commit
9f17ed2bc3
@ -25,7 +25,10 @@ export class SendResourcesAction extends ActionController {
|
|||||||
|
|
||||||
console.log('Send', resources, 'to', coordinates);
|
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 readyToTransfer = this.getResourcesForTransfer(recipientVillage.id).min(resources);
|
||||||
|
|
||||||
const remainingResources = resources.sub(readyToTransfer).max(Resources.zero());
|
const remainingResources = resources.sub(readyToTransfer).max(Resources.zero());
|
||||||
@ -50,6 +53,15 @@ export class SendResourcesAction extends ActionController {
|
|||||||
clickSendButton();
|
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 {
|
private findRecipientVillage(coordinates: Coordinates): Village {
|
||||||
const villageList = grabVillageList();
|
const villageList = grabVillageList();
|
||||||
const village = villageList.find(v => v.crd.eq(coordinates));
|
const village = villageList.find(v => v.crd.eq(coordinates));
|
||||||
|
@ -139,7 +139,7 @@
|
|||||||
<td class="right" v-text="secondsToRequiredTime(villageState.totalRequired.time)"></td>
|
<td class="right" v-text="secondsToRequiredTime(villageState.totalRequired.time)"></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="commitments-line">
|
<tr class="commitments-line" v-if="!villageState.commitments.empty()">
|
||||||
<td class="right">Обязательства:</td>
|
<td class="right">Обязательства:</td>
|
||||||
<td class="right">
|
<td class="right">
|
||||||
<resource :value="villageState.commitments.lumber" :hide-zero="true"></resource>
|
<resource :value="villageState.commitments.lumber" :hide-zero="true"></resource>
|
||||||
@ -156,7 +156,7 @@
|
|||||||
<td></td>
|
<td></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="incoming-line">
|
<tr class="incoming-line" v-if="!villageState.incomingResources.empty()">
|
||||||
<td class="right">Торговцы:</td>
|
<td class="right">Торговцы:</td>
|
||||||
<td class="right">
|
<td class="right">
|
||||||
<resource :value="villageState.incomingResources.lumber" :hide-zero="true"></resource>
|
<resource :value="villageState.incomingResources.lumber" :hide-zero="true"></resource>
|
||||||
|
@ -2,7 +2,7 @@ import { notify, split } from '../utils';
|
|||||||
import { UpgradeBuildingTask } from '../Task/UpgradeBuildingTask';
|
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, grabVillageList } from './VillageBlock';
|
||||||
import { ConsoleLogger, Logger } from '../Logger';
|
import { ConsoleLogger, Logger } from '../Logger';
|
||||||
import {
|
import {
|
||||||
createBuildButton,
|
createBuildButton,
|
||||||
@ -89,8 +89,10 @@ export class BuildingPageController {
|
|||||||
|
|
||||||
private onSendResources(resources: Resources, coordinates: Coordinates, scale: number) {
|
private onSendResources(resources: Resources, coordinates: Coordinates, scale: number) {
|
||||||
const villageId = grabActiveVillageId();
|
const villageId = grabActiveVillageId();
|
||||||
|
const targetVillage = grabVillageList().find(v => v.crd.eq(coordinates));
|
||||||
this.scheduler.scheduleTask(SendResourcesTask.name, {
|
this.scheduler.scheduleTask(SendResourcesTask.name, {
|
||||||
villageId: villageId,
|
villageId: villageId,
|
||||||
|
targetVillageId: targetVillage?.id,
|
||||||
buildTypeId: this.attributes.buildTypeId,
|
buildTypeId: this.attributes.buildTypeId,
|
||||||
buildId: this.attributes.buildId,
|
buildId: this.attributes.buildId,
|
||||||
tabId: this.attributes.tabId,
|
tabId: this.attributes.tabId,
|
||||||
|
@ -87,10 +87,11 @@ function createVillageState(
|
|||||||
scheduler: Scheduler
|
scheduler: Scheduler
|
||||||
): VillageState {
|
): VillageState {
|
||||||
const villageIds = scheduler.getResourceCommitments(state.id);
|
const villageIds = scheduler.getResourceCommitments(state.id);
|
||||||
const commitments = villageIds.reduce(
|
const commitments = villageIds.reduce((res, villageId) => {
|
||||||
(res, villageId) => res.add(ownStates[villageId].required.balance),
|
const villageRequired = ownStates[villageId].required;
|
||||||
Resources.zero()
|
const missing = villageRequired.balance.min(Resources.zero());
|
||||||
);
|
return res.add(missing);
|
||||||
|
}, Resources.zero());
|
||||||
return { ...state, commitments };
|
return { ...state, commitments };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user