bourgade/src/utils.ts

52 lines
1.3 KiB
TypeScript
Raw Normal View History

import type { Production } from "./types";
import type { VillageState } from "./village";
function _reduceResources(acc: Production, item: Production): Production {
return {
wood: acc.wood + item.wood,
stone: acc.stone + item.stone,
iron: acc.iron + item.iron,
food: acc.food + item.food,
};
}
export function getEmptyResources(): Production {
return {
wood: 0,
stone: 0,
iron: 0,
food: 0,
};
}
export function getProduction(villageState: VillageState): Production {
return villageState.buildings
.filter(b => b.behavior.production)
.map(b => {
if (b.behavior.production) {
return b.behavior.production(villageState, b);
}
})
.reduce(_reduceResources, getEmptyResources());
}
export function getStorage(villageState: VillageState): Production {
return villageState.buildings
.filter(b => b.behavior.storage)
.map(b => {
if (b.behavior.storage) {
return b.behavior.storage(villageState, b);
}
})
.reduce(_reduceResources, getEmptyResources());
}
export function getKeysAsNumbers(dict: Object): Array<number> {
return Object.keys(dict).map(i => parseInt(i)).sort((a, b) => a - b);
}