Fix hero balance
Add tests for checking
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user