PSY4Y3X4ZWLXR2FEDR2W5E4SW2ASS4BPBOT4W5TDLNU2NCFZISNAC GIDOI5BK3WYIDEQL7SZTJPR3Q5TDQ34YHDPDCUFFH6PX4POEDSQQC TWWXXFP7B7ESYFOB5BOLLUSYTVPBDW33SISI4HZINYZ7ODRKPMPQC HXHNGFB2VCXB6YXDND35HJI22GBJC3QTSUR2TK3M3LXGJHVNXVHAC PEQNQJYNX7QOEM67QH2UF7VZ43AXHUBO76DN77L43MEFRHVDBO5QC DDJJXZKSQLXUXIMLKMKHY75JKC2IRA2A7SEVSUNL5FSCFH77T4IAC JUW5PLQUDZE4A45Y4HJUKQUILMFKFAGAY2XZG4ALTQWLWPX4H4DQC 5BA7VZ3D36S2TC7NZ64R3O364TGXPY5BJUJTGCFZHWZ6JWAXJMUQC Z3E7XJOW6NSBDYRDKSGTOAEJSPATAUX4JUFCL4DIL3372GL4K52QC WBDAIDQZ3J7ON5DWIDA2L4OJEEZCUP2RLEWJSNR4AC3SDBHDBXIQC 6REHBZAOJN4CVZY4HFXVNEUMWGQUXFTXMLQPXEH7RTH5FBL2TXIAC 6EXHALB3E5HP3IQVC47M4RVZE2JERJHX37GOOHPYIVAFBWSWUX7QC GZRMSSTEWT3T2JERC7WCVT727X237UA6MXWVT6OSV5D5BRD4UOGQC YBUOYJDAPDTPBG7F6QXYQDX53UFJ5WTHI32V6WOENCZIHZCPPLBQC QTTO6EU2UCXVVPN724D2FUMGKJSEWTG7FXLOFNUB3IL3RVV3AVUAC HUH4SI4HXIP72KQSJP2I4ELHX5KUQZM7FFGKZZGJ33DF7E3JHMYQC WBAN6KIPMKEXHGGQGE3TB6G7YXHGOPT3HRCEUYZKLNJCJBMR7JHAC Z5I5KK7NX6RS23QAB7ISLQCM5Z6TMVZK532NPSE7CO4MNXNKVKMAC 5NOOFT552GDEBDUACQZXG4TOLQSILGZEPGEJRS5BQD34TIJQ6T2QC CZPLX4O4R7K3TF3NSAL5PT7NO3CUOLDY3OR332GBIYYNKMZTW24AC 6OD22ZHHEANTKREVSWHHAWEDVUFWTZHUKJD35ICBPWYERYPABGDQC N2M7CWXHD722QWM6IIIEOD66YMR3SSZEJZLDCGEIPXRCVNF6YBSQC 3UFL673QX2JG7KHTAM7DFH4BBYVHDNMXBS2RW45G3JBNFZFLSRRQC }export type ComputedState = {playerResourceAmounts?: { [k in ResourceType]: number }playerResourceNodesAggregated?: HashMap<ResourceTypeAndModifier, number>}// export type ResourceTypeAndModifier = [ResourceType.Nothing] | ([ResourceType, ResourceModifier]);export class ResourceTypeAndModifier {public type: ResourceNontrivialType;public modifier: ResourceModifier;constructor(args: { type: ResourceNontrivialType, modifier: ResourceModifier}) {this.type = args.type;this.modifier = args.modifier;}public hash(): string {return this.type.toString() + ',' + this.modifier.toString();}
import { GameState, ResourceModifier, ResourceType, ResourceTypeAndModifier } from "../data/GameState";import { HashMap } from "../lib/util/data_structures/hash";import { enumKeys } from "../lib/util/misc";export function computePlayerResourceAmounts(gameState: GameState): ({ [k in ResourceType]: number }) {let amounts: { [k in ResourceType]?: number } = {};let playerResourceNodesAggregated = new HashMap<ResourceTypeAndModifier, number>();for (let pointNodeRef of gameState.playerSave.allocatedPointNodeHistory) {let pointNodeGen = gameState.worldGen.zLevels[pointNodeRef.z]!.chunks.get(pointNodeRef.chunkCoord)!.pointNodes.get(pointNodeRef.pointNodeCoord)!if (pointNodeGen.resourceType === "Nothing") {continue;}let resourceTypeAndModifier = new ResourceTypeAndModifier({type: pointNodeGen.resourceType, modifier: pointNodeGen.resourceModifier});}for (let key of enumKeys(ResourceType)) {if (key === ResourceType.Nothing) {amounts[key] = 0;continue;}// iterate throuamounts[key];}return amounts as { [k in ResourceType]: number }}