Fix hero balance

Add tests for checking
This commit is contained in:
2020-04-22 10:28:56 +03:00
parent ea4d6f6681
commit 57e79b0ba2
8 changed files with 106 additions and 47 deletions

View File

@ -3,9 +3,10 @@ import { Args } from '../Command';
import { Task } from '../Queue/TaskQueue';
import { grabResources, grabResourceStorage } from '../Page/ResourcesBlock';
import { changeHeroResource, grabCurrentHeroResource } from '../Page/HeroPage';
import { HeroAllResources, Resources } from '../Game';
import { HeroAllResources } from '../Game';
import { grabActiveVillageId } from '../Page/VillageBlock';
import { HeroState } from '../State/HeroState';
import { Core } from '../Core/HeroBalance';
@registerAction
export class BalanceHeroResourcesAction extends ActionController {
@ -18,40 +19,16 @@ export class BalanceHeroResourcesAction extends ActionController {
return;
}
const resources = this.getRequirements(heroVillageId);
const resourcesAsList = resources.asList();
const currentType = grabCurrentHeroResource();
const sorted = resourcesAsList.sort((x, y) => y.value - x.value);
const maxRequirement = sorted[0];
const minRequirement = sorted[sorted.length - 1];
const delta = Math.abs(maxRequirement.value - minRequirement.value);
const eps = Math.abs(maxRequirement.value / 10);
console.log('REQUIREMENTS', sorted);
console.log('REQUIREMENTS', maxRequirement, minRequirement, delta, eps);
const resType = delta > eps ? maxRequirement.type : HeroAllResources;
if (resType !== currentType) {
changeHeroResource(resType);
}
}
private getRequirements(heroVillageId): Resources {
const resources = grabResources();
const requiredResources = this.scheduler.getVillageRequiredResources(heroVillageId);
const totalRequiredResources = this.scheduler.getTotalVillageRequiredResources(heroVillageId);
if (requiredResources.gt(resources)) {
return requiredResources.sub(resources);
}
if (totalRequiredResources.gt(resources)) {
return totalRequiredResources.sub(resources);
}
const storage = grabResourceStorage();
return Resources.fromStorage(storage).sub(resources);
const currentType = grabCurrentHeroResource();
const heroType = Core.calcHeroResource(resources, requiredResources, totalRequiredResources, storage);
if (heroType !== currentType) {
changeHeroResource(heroType);
}
}
}