Refactoring
This commit is contained in:
parent
11b93526cd
commit
1f58da5d58
@ -65,13 +65,21 @@ export class VillageController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getFreeResources(): Resources {
|
getFreeResources(): Resources {
|
||||||
const balance = this.state.required.balance;
|
const mode = this.state.settings.receiveResourcesMode;
|
||||||
const free = balance.max(Resources.zero());
|
const requirementResources = this.state.required.resources;
|
||||||
|
const optimumToStoreResources = this.state.storageOptimumFullness;
|
||||||
|
|
||||||
console.table([
|
switch (mode) {
|
||||||
{ name: 'Sender balance', ...balance },
|
case ReceiveResourcesMode.Required:
|
||||||
{ name: 'Sender free', ...free },
|
return this.calcFreeResources(requirementResources);
|
||||||
]);
|
case ReceiveResourcesMode.Optimum:
|
||||||
|
return this.calcFreeResources(optimumToStoreResources);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private calcFreeResources(targetResources: Resources): Resources {
|
||||||
|
const currentResources = this.state.resources;
|
||||||
|
const free = currentResources.sub(targetResources).max(Resources.zero());
|
||||||
|
|
||||||
const amount = free.amount();
|
const amount = free.amount();
|
||||||
const threshold = this.state.settings.sendResourcesThreshold;
|
const threshold = this.state.settings.sendResourcesThreshold;
|
||||||
@ -86,54 +94,48 @@ export class VillageController {
|
|||||||
getRequiredResources(): Resources {
|
getRequiredResources(): Resources {
|
||||||
const mode = this.state.settings.receiveResourcesMode;
|
const mode = this.state.settings.receiveResourcesMode;
|
||||||
const optimumToStoreResources = this.state.storageOptimumFullness;
|
const optimumToStoreResources = this.state.storageOptimumFullness;
|
||||||
const currentResources = this.state.resources;
|
|
||||||
const incomingResources = this.state.incomingResources;
|
|
||||||
const requirementResources = this.state.required.resources;
|
const requirementResources = this.state.required.resources;
|
||||||
|
|
||||||
let missingResources;
|
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case ReceiveResourcesMode.Required:
|
case ReceiveResourcesMode.Required:
|
||||||
missingResources = requirementResources
|
return this.calcRequiredResources(requirementResources);
|
||||||
.min(optimumToStoreResources)
|
|
||||||
.sub(incomingResources)
|
|
||||||
.sub(currentResources)
|
|
||||||
.max(Resources.zero());
|
|
||||||
break;
|
|
||||||
case ReceiveResourcesMode.Optimum:
|
case ReceiveResourcesMode.Optimum:
|
||||||
missingResources = optimumToStoreResources
|
return this.calcRequiredResources(optimumToStoreResources);
|
||||||
.sub(incomingResources)
|
|
||||||
.sub(currentResources)
|
|
||||||
.max(Resources.zero());
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
console.table([
|
private calcRequiredResources(targetResources: Resources): Resources {
|
||||||
{ name: 'Recipient max possible', ...optimumToStoreResources },
|
const optimumToStoreResources = this.state.storageOptimumFullness;
|
||||||
{ name: 'Recipient resources', ...currentResources },
|
const currentResources = this.state.resources;
|
||||||
{ name: 'Recipient incoming', ...incomingResources },
|
const incomingResources = this.state.incomingResources;
|
||||||
{ name: 'Recipient requirements', ...requirementResources },
|
|
||||||
{ name: 'Recipient missing', ...missingResources },
|
|
||||||
]);
|
|
||||||
|
|
||||||
return missingResources;
|
return targetResources
|
||||||
|
.min(optimumToStoreResources)
|
||||||
|
.sub(currentResources)
|
||||||
|
.sub(incomingResources)
|
||||||
|
.max(Resources.zero());
|
||||||
}
|
}
|
||||||
|
|
||||||
getAvailableToReceiveResources(): Resources {
|
getAvailableToReceiveResources(): Resources {
|
||||||
const maxPossibleToStore = this.state.storageOptimumFullness;
|
const optimumToStoreResources = this.state.storageOptimumFullness;
|
||||||
const currentResources = this.state.resources;
|
const currentResources = this.state.resources;
|
||||||
|
|
||||||
return maxPossibleToStore.sub(currentResources).max(Resources.zero());
|
return optimumToStoreResources.sub(currentResources).max(Resources.zero());
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleReceiveResourcesMode(): void {
|
toggleReceiveResourcesMode(): void {
|
||||||
const current = this.state.settings.receiveResourcesMode;
|
const current = this.state.settings.receiveResourcesMode;
|
||||||
|
|
||||||
let next;
|
let next;
|
||||||
if (current === ReceiveResourcesMode.Required) {
|
switch (current) {
|
||||||
next = ReceiveResourcesMode.Optimum;
|
case ReceiveResourcesMode.Required:
|
||||||
} else {
|
next = ReceiveResourcesMode.Optimum;
|
||||||
next = ReceiveResourcesMode.Required;
|
break;
|
||||||
|
case ReceiveResourcesMode.Optimum:
|
||||||
|
next = ReceiveResourcesMode.Required;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
const newSettings = { ...this.state.settings, receiveResourcesMode: next };
|
const newSettings = { ...this.state.settings, receiveResourcesMode: next };
|
||||||
this.storage.storeSettings(newSettings);
|
this.storage.storeSettings(newSettings);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user