Improve hero balance

This commit is contained in:
Anton Vakhrushev 2020-04-22 12:38:43 +03:00
parent 57e79b0ba2
commit 3689a55707
2 changed files with 15 additions and 10 deletions

View File

@ -10,11 +10,7 @@ export namespace Core {
const resourceDiff = calcNeedResources(current, required, totalRequired, storage); const resourceDiff = calcNeedResources(current, required, totalRequired, storage);
const resourcesAsList = resourceDiff.asList(); const resourcesAsList = resourceDiff.asList();
const sorted = resourcesAsList.filter(x => x.value > 0).sort((x, y) => y.value - x.value); const sorted = resourcesAsList.sort((x, y) => y.value - x.value);
if (sorted.length === 0) {
return HeroAllResources;
}
const maxRequirement = sorted[0]; const maxRequirement = sorted[0];
const minRequirement = sorted[sorted.length - 1]; const minRequirement = sorted[sorted.length - 1];

View File

@ -11,24 +11,33 @@ describe('HeroBalance', function() {
const totalRequired = new Resources(200, 200, 400, 300); const totalRequired = new Resources(200, 200, 400, 300);
const storage = new ResourceStorage(1000, 1000); const storage = new ResourceStorage(1000, 1000);
const heroRes = Core.calcHeroResource(current, required, totalRequired, storage); 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 current = new Resources(100, 100, 100, 500);
const required = new Resources(200, 200, 400, 300); const required = new Resources(200, 200, 400, 300);
const totalRequired = new Resources(200, 200, 400, 300); const totalRequired = new Resources(200, 200, 400, 300);
const storage = new ResourceStorage(1000, 1000); const storage = new ResourceStorage(1000, 1000);
const heroRes = Core.calcHeroResource(current, required, totalRequired, storage); 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() { 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 required = new Resources(100, 100, 100, 100);
const totalRequired = new Resources(100, 100, 100, 100); const totalRequired = new Resources(100, 100, 100, 100);
const storage = new ResourceStorage(1000, 1000); const storage = new ResourceStorage(1000, 1000);
const heroRes = Core.calcHeroResource(current, required, totalRequired, storage); const heroRes = Core.calcHeroResource(current, required, totalRequired, storage);
expect(heroRes).to.equals(ResourceType.Iron); expect(ResourceType.Iron).to.equals(heroRes);
}); });
}); });