Remove shipment information
This commit is contained in:
parent
a358fe743e
commit
c14ce042d8
@ -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();
|
||||||
|
@ -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 });
|
||||||
},
|
},
|
||||||
|
@ -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,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -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(
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user