Remove shipment information

This commit is contained in:
Anton Vakhrushev 2020-05-26 22:20:01 +03:00
parent a358fe743e
commit c14ce042d8
5 changed files with 19 additions and 85 deletions

View File

@ -45,8 +45,6 @@ interface GameState {
removeTask(taskId: string): void; removeTask(taskId: string): void;
refreshVillages(): void; refreshVillages(): void;
pause(): void; pause(): void;
scheduleResourceTransferTasks(fromVillageId: number, toVillageId: number): void;
dropResourceTransferTasks(fromVillageId: number, toVillageId: number): void;
} }
export class ControlPanel { export class ControlPanel {
@ -110,14 +108,6 @@ export class ControlPanel {
pause() { pause() {
executionState.setExecutionSettings({ pauseTs: timestamp() + 120 }); executionState.setExecutionSettings({ pauseTs: timestamp() + 120 });
}, },
scheduleResourceTransferTasks(fromVillageId: number, toVillageId: number): void {
scheduler.scheduleResourceTransferTasks(fromVillageId, toVillageId);
},
dropResourceTransferTasks(fromVillageId: number, toVillageId: number): void {
scheduler.dropResourceTransferTasks(fromVillageId, toVillageId);
},
}; };
state.refresh(); state.refresh();

View File

@ -132,13 +132,6 @@
:time1="renderGatheringTime(villageState.totalRequired.time)" :time1="renderGatheringTime(villageState.totalRequired.time)"
/> />
<resource-line
:title="'Обязательства:'"
:resources="villageState.commitments"
:hide-zero="true"
v-if="!villageState.commitments.empty()"
/>
<resource-line <resource-line
:title="'Торговцы:'" :title="'Торговцы:'"
:resources="villageState.incomingResources" :resources="villageState.incomingResources"
@ -152,17 +145,8 @@
v-for="s in shared.villageStates" v-for="s in shared.villageStates"
v-if="s.id !== villageState.id" v-if="s.id !== villageState.id"
class="village-quick-link" class="village-quick-link"
:class="{ active: villageState.shipment.includes(s.id) }"
:href="marketPath(villageState.village, s.village)" :href="marketPath(villageState.village, s.village)"
:title=" :title="'Отправить ресурсы из ' + villageState.village.name + ' в ' + s.village.name"
'Отправить ресурсы из ' +
villageState.village.name +
' в ' +
s.village.name +
'(shift+click - настроить отправку)'
"
v-on:click.prevent.shift.exact="setupResourceTransfer(villageState, s)"
v-on:click.prevent.exact="goToMarket(villageState.village, s.village)"
>$->{{ s.village.name }}</a >$->{{ s.village.name }}</a
> >
<a class="village-quick-link" :href="quartersPath(villageState.village)">Казармы</a> <a class="village-quick-link" :href="quartersPath(villageState.village)">Казармы</a>
@ -261,20 +245,6 @@ export default {
} }
return secondsToTime(value.seconds); return secondsToTime(value.seconds);
}, },
goToMarket(fromVillage, toVillage) {
window.location.assign(this.marketPath(fromVillage, toVillage));
},
setupResourceTransfer(villageState, toVillageState) {
villageState.shipment.includes(toVillageState.id)
? this.dropResourceTransferTasks(villageState.id, toVillageState.id)
: this.scheduleResourceTransferTasks(villageState.id, toVillageState.id);
},
scheduleResourceTransferTasks(fromVillageId, toVillageId) {
this.shared.scheduleResourceTransferTasks(fromVillageId, toVillageId);
},
dropResourceTransferTasks(fromVillageId, toVillageId) {
this.shared.dropResourceTransferTasks(fromVillageId, toVillageId);
},
openEditor(villageId) { openEditor(villageId) {
this.$store.dispatch(Actions.OpenVillageEditor, { villageId }); this.$store.dispatch(Actions.OpenVillageEditor, { villageId });
}, },

View File

@ -175,28 +175,4 @@ export class Scheduler {
clearActions() { clearActions() {
this.actionQueue.clear(); this.actionQueue.clear();
} }
dropResourceTransferTasks(fromVillageId: number, toVillageId: number): void {
this.taskQueue.remove(
t =>
t.name === SendResourcesTask.name &&
t.args.villageId === fromVillageId &&
t.args.targetVillageId === toVillageId
);
}
scheduleResourceTransferTasks(fromVillageId: number, toVillageId: number): void {
this.dropResourceTransferTasks(fromVillageId, toVillageId);
const village = this.villageRepository.all().find(v => v.id === toVillageId);
if (!village) {
throw new VillageNotFound(`Village ${toVillageId} not found`);
}
this.scheduleTask(SendResourcesTask.name, {
villageId: fromVillageId,
targetVillageId: toVillageId,
coordinates: village.crd,
buildTypeId: MARKET_ID,
tabId: 5,
});
}
} }

View File

@ -88,10 +88,6 @@ export interface VillageState extends VillageOwnState {
* Resource commitments of this village to other (may be negative) * Resource commitments of this village to other (may be negative)
*/ */
commitments: Resources; commitments: Resources;
/**
* List of village id, from which resources ship to this village
*/
shipment: Array<number>;
} }
function calcResourceBalance(resources: Resources, current: Resources, performance: Resources): ResourceLineState { function calcResourceBalance(resources: Resources, current: Resources, performance: Resources): ResourceLineState {
@ -163,16 +159,6 @@ function createAllProductionQueueStates(storage: VillageStorage, taskCollection:
return result; return result;
} }
function calcFrontierResources(taskCollection: VillageTaskCollection): Resources {
let result = Resources.zero();
for (let queue of OrderedProductionQueues) {
const tasks = taskCollection.getTasksInProductionQueue(queue);
const firstTaskResources = tasks.slice(0, 1).reduce(taskResourceReducer, Resources.zero());
result = result.add(firstTaskResources);
}
return result;
}
function createVillageOwnState( function createVillageOwnState(
village: Village, village: Village,
storage: VillageStorage, storage: VillageStorage,
@ -182,9 +168,9 @@ function createVillageOwnState(
const resourceStorage = storage.getResourceStorage(); const resourceStorage = storage.getResourceStorage();
const performance = storage.getResourcesPerformance(); const performance = storage.getResourcesPerformance();
const buildQueueInfo = storage.getBuildingQueueInfo(); const buildQueueInfo = storage.getBuildingQueueInfo();
const requiredResources = taskCollection.getVillageRequiredResources(); const requiredResources = taskCollection.getReadyTaskRequiredResources();
const frontierResources = calcFrontierResources(taskCollection); const frontierResources = taskCollection.getFrontierResources();
const totalRequiredResources = taskCollection.getTotalVillageRequiredResources(); const totalRequiredResources = taskCollection.getAllTasksRequiredResources();
return { return {
id: village.id, id: village.id,
@ -227,7 +213,7 @@ function createVillageState(state: VillageOwnState, ownStates: VillageOwnStateDi
const targetVillageMissing = shipmentVillageRequired.balance.add(shipmentVillageIncoming).min(Resources.zero()); const targetVillageMissing = shipmentVillageRequired.balance.add(shipmentVillageIncoming).min(Resources.zero());
return memo.add(targetVillageMissing); return memo.add(targetVillageMissing);
}, Resources.zero()); }, Resources.zero());
return { ...state, commitments, shipment: villageIds }; return { ...state, commitments };
} }
function getVillageStates( function getVillageStates(

View File

@ -105,7 +105,7 @@ export class VillageTaskCollection {
} }
} }
getVillageRequiredResources(): Resources { getReadyTaskRequiredResources(): Resources {
const first = this.getReadyForProductionTask(); const first = this.getReadyForProductionTask();
if (first && first.args.resources) { if (first && first.args.resources) {
return Resources.fromObject(first.args.resources); return Resources.fromObject(first.args.resources);
@ -113,7 +113,19 @@ export class VillageTaskCollection {
return Resources.zero(); return Resources.zero();
} }
getTotalVillageRequiredResources(): Resources { getFrontierResources(): Resources {
let result = Resources.zero();
const groups = this.getQueueGroupedTasks();
for (let group of groups) {
const firstTask = _.first(group.tasks);
if (firstTask && firstTask.args.resources) {
result = result.add(Resources.fromObject(firstTask.args.resources));
}
}
return result;
}
getAllTasksRequiredResources(): Resources {
const tasks = this.storage.getTasks().filter(t => t.args.resources); const tasks = this.storage.getTasks().filter(t => t.args.resources);
return tasks.reduce((acc, t) => acc.add(t.args.resources!), Resources.zero()); return tasks.reduce((acc, t) => acc.add(t.args.resources!), Resources.zero());
} }