35 lines
1.5 KiB
TypeScript
35 lines
1.5 KiB
TypeScript
import { ActionController, registerAction } from './ActionController';
|
|
import { Args } from '../Command';
|
|
import { Task } from '../Queue/TaskQueue';
|
|
import { grabVillageResources, grabVillageResourceStorage } from '../Page/ResourcesBlock';
|
|
import { changeHeroResource, grabCurrentHeroResource } from '../Page/HeroPage';
|
|
import { grabActiveVillageId } from '../Page/VillageBlock';
|
|
import { HeroState } from '../State/HeroState';
|
|
import { calcHeroResource } from '../Core/HeroBalance';
|
|
import { HeroAllResources } from '../Core/Hero';
|
|
|
|
@registerAction
|
|
export class BalanceHeroResourcesAction extends ActionController {
|
|
async run(args: Args, task: Task): Promise<any> {
|
|
const activeVillageId = grabActiveVillageId();
|
|
const heroVillageId = new HeroState().getVillageId();
|
|
|
|
if (heroVillageId === undefined || activeVillageId !== heroVillageId) {
|
|
changeHeroResource(HeroAllResources);
|
|
return;
|
|
}
|
|
|
|
const resources = grabVillageResources();
|
|
const requiredResources = this.scheduler.getVillageRequiredResources(heroVillageId);
|
|
const totalRequiredResources = this.scheduler.getTotalVillageRequiredResources(heroVillageId);
|
|
const storage = grabVillageResourceStorage();
|
|
const currentType = grabCurrentHeroResource();
|
|
|
|
const heroType = calcHeroResource(resources, requiredResources, totalRequiredResources, storage);
|
|
|
|
if (heroType !== currentType) {
|
|
changeHeroResource(heroType);
|
|
}
|
|
}
|
|
}
|