From 3689a55707e6cbe60a7fd0207068771e61c13adc Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Wed, 22 Apr 2020 12:38:43 +0300 Subject: [PATCH] Improve hero balance --- src/Core/HeroBalance.ts | 6 +----- tests/Core/HeroBalanceTest.ts | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/Core/HeroBalance.ts b/src/Core/HeroBalance.ts index fc6ba61..d68bd1e 100644 --- a/src/Core/HeroBalance.ts +++ b/src/Core/HeroBalance.ts @@ -10,11 +10,7 @@ export namespace Core { const resourceDiff = calcNeedResources(current, required, totalRequired, storage); const resourcesAsList = resourceDiff.asList(); - const sorted = resourcesAsList.filter(x => x.value > 0).sort((x, y) => y.value - x.value); - - if (sorted.length === 0) { - return HeroAllResources; - } + const sorted = resourcesAsList.sort((x, y) => y.value - x.value); const maxRequirement = sorted[0]; const minRequirement = sorted[sorted.length - 1]; diff --git a/tests/Core/HeroBalanceTest.ts b/tests/Core/HeroBalanceTest.ts index ab0210e..ed97943 100644 --- a/tests/Core/HeroBalanceTest.ts +++ b/tests/Core/HeroBalanceTest.ts @@ -11,24 +11,33 @@ describe('HeroBalance', function() { const totalRequired = new Resources(200, 200, 400, 300); const storage = new ResourceStorage(1000, 1000); const heroRes = Core.calcHeroResource(current, required, totalRequired, storage); - expect(heroRes).to.equals(ResourceType.Iron); + expect(ResourceType.Iron).to.equals(heroRes); }); - it('Get resource if one is enough', function() { + it('Get resource if one is enough, others non equal', function() { const current = new Resources(100, 100, 100, 500); const required = new Resources(200, 200, 400, 300); const totalRequired = new Resources(200, 200, 400, 300); const storage = new ResourceStorage(1000, 1000); const heroRes = Core.calcHeroResource(current, required, totalRequired, storage); - expect(heroRes).to.equals(ResourceType.Iron); + expect(ResourceType.Iron).to.equals(heroRes); + }); + + it('Get resource if one is enough, others three equal', function() { + const current = new Resources(100, 100, 100, 500); + const required = new Resources(400, 400, 400, 300); + const totalRequired = new Resources(400, 400, 400, 300); + const storage = new ResourceStorage(1000, 1000); + const heroRes = Core.calcHeroResource(current, required, totalRequired, storage); + expect(ResourceType.Lumber).to.equals(heroRes); }); it('Get resource if all are enough, but storage non optimal', function() { - const current = new Resources(600, 600, 500, 600); + const current = new Resources(500, 400, 300, 600); const required = new Resources(100, 100, 100, 100); const totalRequired = new Resources(100, 100, 100, 100); const storage = new ResourceStorage(1000, 1000); const heroRes = Core.calcHeroResource(current, required, totalRequired, storage); - expect(heroRes).to.equals(ResourceType.Iron); + expect(ResourceType.Iron).to.equals(heroRes); }); });