From 3adabd67855646dc56fbe85d4be684b03d378d8e Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Tue, 19 May 2020 09:52:14 +0300 Subject: [PATCH] Add frontier balance --- src/DashboardView/VillageStateList.vue | 51 +++++++++++++++++--------- src/VillageState.ts | 24 +++++++----- 2 files changed, 49 insertions(+), 26 deletions(-) diff --git a/src/DashboardView/VillageStateList.vue b/src/DashboardView/VillageStateList.vue index 1b2638f..0ffca11 100644 --- a/src/DashboardView/VillageStateList.vue +++ b/src/DashboardView/VillageStateList.vue @@ -120,23 +120,6 @@ - - Баланс очереди: - - - - - - - - - - - - - - - {{ queueTitle(queueState.queue) }}: @@ -154,6 +137,40 @@ + + Баланс фронтира: + + + + + + + + + + + + + + + + + Баланс очереди: + + + + + + + + + + + + + + + Обязательства: diff --git a/src/VillageState.ts b/src/VillageState.ts index 26afd70..b10e382 100644 --- a/src/VillageState.ts +++ b/src/VillageState.ts @@ -62,6 +62,10 @@ interface VillageOwnState { * Required resources for nearest task */ required: ResourceLineState; + /** + * Required resources for first tasks in production queues + */ + frontierRequired: ResourceLineState; /** * Required resources for all tasks */ @@ -154,15 +158,15 @@ function createAllProductionQueueStates(villageId: number, storage: VillageStora return result; } -// function firstTaskRequirements(villageId: number, scheduler: Scheduler): Resources { -// let result = Resources.zero(); -// for (let queue of Object.keys(ProductionQueue)) { -// const tasks = scheduler.getProductionQueueTasks(villageId, queue as ProductionQueue); -// const firstTaskResources = tasks.filter(() => true).reduce(taskResourceReducer, Resources.zero()); -// result = result.add(firstTaskResources); -// } -// return result; -// } +function calcFrontierResources(villageId: number, scheduler: Scheduler): Resources { + let result = Resources.zero(); + for (let queue of ProductionQueueTypes) { + const tasks = scheduler.getProductionQueueTasks(villageId, queue); + const firstTaskResources = tasks.slice(0, 1).reduce(taskResourceReducer, Resources.zero()); + result = result.add(firstTaskResources); + } + return result; +} function createVillageOwnState(village: Village, scheduler: Scheduler): VillageOwnState { const storage = new VillageStorage(village.id); @@ -171,6 +175,7 @@ function createVillageOwnState(village: Village, scheduler: Scheduler): VillageO const performance = storage.getResourcesPerformance(); const buildQueueInfo = storage.getBuildingQueueInfo(); const requiredResources = scheduler.getVillageRequiredResources(village.id); + const frontierResources = calcFrontierResources(village.id, scheduler); const totalRequiredResources = scheduler.getTotalVillageRequiredResources(village.id); return { @@ -180,6 +185,7 @@ function createVillageOwnState(village: Village, scheduler: Scheduler): VillageO performance, storage: calcStorageBalance(resources, Resources.fromStorage(resourceStorage), performance), required: calcResourceBalance(requiredResources, resources, performance), + frontierRequired: calcResourceBalance(frontierResources, resources, performance), totalRequired: calcResourceBalance(totalRequiredResources, resources, performance), buildRemainingSeconds: buildQueueInfo.seconds, incomingResources: calcIncomingResources(storage),