Improve hero balance
This commit is contained in:
		| @@ -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 { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user