Improve hero balance
This commit is contained in:
parent
217b653e5b
commit
5c39aefed0
@ -38,19 +38,20 @@ export class BalanceHeroResourcesAction extends ActionController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private getRequirements(heroVillageId) {
|
private getRequirements(heroVillageId): Resources {
|
||||||
const resources = grabResources();
|
const resources = grabResources();
|
||||||
const requiredResources = this.scheduler.getVillageRequiredResources(heroVillageId);
|
const requiredResources = this.scheduler.getVillageRequiredResources(heroVillageId);
|
||||||
|
const totalRequiredResources = this.scheduler.getTotalVillageRequiredResources(heroVillageId);
|
||||||
|
|
||||||
console.log('RESOURCES', resources);
|
if (requiredResources.gt(resources)) {
|
||||||
console.log('REQUIRED', requiredResources);
|
|
||||||
|
|
||||||
if (requiredResources) {
|
|
||||||
return requiredResources.sub(resources);
|
return requiredResources.sub(resources);
|
||||||
}
|
}
|
||||||
|
|
||||||
const storage = grabResourceStorage();
|
if (totalRequiredResources.gt(resources)) {
|
||||||
|
return totalRequiredResources.sub(resources);
|
||||||
|
}
|
||||||
|
|
||||||
|
const storage = grabResourceStorage();
|
||||||
return Resources.fromStorage(storage).sub(resources);
|
return Resources.fromStorage(storage).sub(resources);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -200,10 +200,10 @@ class VillageController {
|
|||||||
this.clay_hour = performance.clay;
|
this.clay_hour = performance.clay;
|
||||||
this.iron_hour = performance.iron;
|
this.iron_hour = performance.iron;
|
||||||
this.crop_hour = performance.crop;
|
this.crop_hour = performance.crop;
|
||||||
this.lumber_need = requiredResources && requiredResources.lumber;
|
this.lumber_need = requiredResources.lumber;
|
||||||
this.clay_need = requiredResources && requiredResources.clay;
|
this.clay_need = requiredResources.clay;
|
||||||
this.iron_need = requiredResources && requiredResources.iron;
|
this.iron_need = requiredResources.iron;
|
||||||
this.crop_need = requiredResources && requiredResources.crop;
|
this.crop_need = requiredResources.crop;
|
||||||
this.lumber_total_need = totalRequiredResources.lumber;
|
this.lumber_total_need = totalRequiredResources.lumber;
|
||||||
this.clay_total_need = totalRequiredResources.clay;
|
this.clay_total_need = totalRequiredResources.clay;
|
||||||
this.iron_total_need = totalRequiredResources.iron;
|
this.iron_total_need = totalRequiredResources.iron;
|
||||||
@ -221,11 +221,7 @@ class VillageController {
|
|||||||
return this.timeToResources(this.totalRequiredResources);
|
return this.timeToResources(this.totalRequiredResources);
|
||||||
}
|
}
|
||||||
|
|
||||||
private timeToResources(resources: Resources | undefined): number {
|
private timeToResources(resources: Resources): number {
|
||||||
if (resources === undefined) {
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
|
|
||||||
const time_to_lumber = this.timeToRes(this.resources.lumber, resources.lumber, this.performance.lumber);
|
const time_to_lumber = this.timeToRes(this.resources.lumber, resources.lumber, this.performance.lumber);
|
||||||
|
|
||||||
const time_to_clay = this.timeToRes(this.resources.clay, resources.clay, this.performance.clay);
|
const time_to_clay = this.timeToRes(this.resources.clay, resources.clay, this.performance.clay);
|
||||||
|
@ -145,10 +145,7 @@ export default {
|
|||||||
},
|
},
|
||||||
secondsToRequiredTime(value) {
|
secondsToRequiredTime(value) {
|
||||||
if (value === -1) {
|
if (value === -1) {
|
||||||
return '-';
|
return 'never';
|
||||||
}
|
|
||||||
if (value === -2) {
|
|
||||||
return '';
|
|
||||||
}
|
}
|
||||||
return this.secondsToTime(value);
|
return this.secondsToTime(value);
|
||||||
},
|
},
|
||||||
|
24
src/Game.ts
24
src/Game.ts
@ -37,10 +37,10 @@ export class Resources implements ResourcesInterface {
|
|||||||
readonly crop: number;
|
readonly crop: number;
|
||||||
|
|
||||||
constructor(lumber: number, clay: number, iron: number, crop: number) {
|
constructor(lumber: number, clay: number, iron: number, crop: number) {
|
||||||
this.lumber = lumber;
|
this.lumber = Math.floor(lumber);
|
||||||
this.clay = clay;
|
this.clay = Math.floor(clay);
|
||||||
this.iron = iron;
|
this.iron = Math.floor(iron);
|
||||||
this.crop = crop;
|
this.crop = Math.floor(crop);
|
||||||
}
|
}
|
||||||
|
|
||||||
static fromObject(obj: ResourcesInterface): Resources {
|
static fromObject(obj: ResourcesInterface): Resources {
|
||||||
@ -93,6 +93,22 @@ export class Resources implements ResourcesInterface {
|
|||||||
this.crop - other.crop
|
this.crop - other.crop
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lt(other: Resources): boolean {
|
||||||
|
return this.lumber < other.lumber && this.clay < other.clay && this.iron < other.iron && this.crop < other.crop;
|
||||||
|
}
|
||||||
|
|
||||||
|
gt(other: Resources): boolean {
|
||||||
|
return this.lumber > other.lumber && this.clay > other.clay && this.iron > other.iron && this.crop > other.crop;
|
||||||
|
}
|
||||||
|
|
||||||
|
lte(other: Resources): boolean {
|
||||||
|
return !this.gt(other);
|
||||||
|
}
|
||||||
|
|
||||||
|
gte(other: Resources): boolean {
|
||||||
|
return !this.lt(other);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class ResourceStorage {
|
export class ResourceStorage {
|
||||||
|
@ -118,13 +118,13 @@ export class Scheduler {
|
|||||||
this.actionQueue.clear();
|
this.actionQueue.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
getVillageRequiredResources(villageId): Resources | undefined {
|
getVillageRequiredResources(villageId): Resources {
|
||||||
const tasks = this.taskQueue.seeItems().filter(t => sameVillage(villageId, t.args) && t.args.resources);
|
const tasks = this.taskQueue.seeItems().filter(t => sameVillage(villageId, t.args) && t.args.resources);
|
||||||
const first = tasks.shift();
|
const first = tasks.shift();
|
||||||
if (first && first.args.resources) {
|
if (first && first.args.resources) {
|
||||||
return Resources.fromObject(first.args.resources);
|
return Resources.fromObject(first.args.resources);
|
||||||
}
|
}
|
||||||
return undefined;
|
return new Resources(0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
getTotalVillageRequiredResources(villageId): Resources {
|
getTotalVillageRequiredResources(villageId): Resources {
|
||||||
|
Loading…
Reference in New Issue
Block a user