import React from "react";
import { PointNodeRef, ResourceType, WorldGenState } from "../data/GameState";
import { canAllocate } from "../game/Neighbors";
import { HashSet } from "../lib/util/data_structures/hash";
type Props = {
selectedPointNode?: PointNodeRef;
allocatedPointNodeSet: HashSet<PointNodeRef>;
worldGen: WorldGenState;
hasActiveQuest: boolean;
};
export const NodeDetail = React.memo(NodeDetailComponent);
function NodeDetailComponent({
selectedPointNode,
allocatedPointNodeSet,
worldGen,
hasActiveQuest,
}: Props) {
if (!selectedPointNode) {
return (
<>
<h1>Stats</h1>
<div>Select a node first!</div>
</>
);
}
const pointNodeGen = worldGen.zLevels[selectedPointNode.z]!.chunks.get(
selectedPointNode.chunkCoord
)!.pointNodes.get(selectedPointNode.pointNodeCoord)!;
const isAllocated = allocatedPointNodeSet.contains(selectedPointNode);
const canBeAllocated: string = canAllocate(
selectedPointNode,
worldGen,
allocatedPointNodeSet,
hasActiveQuest,
);
let nodeDescription: string = "Nothing (empty node)";
if (pointNodeGen.resourceType !== ResourceType.Nothing) {
nodeDescription = `${pointNodeGen.resourceAmount} ${pointNodeGen.resourceModifier} ${pointNodeGen.resourceType}`;
}
return (
<>
<h1>Stats</h1>
<div> {nodeDescription} </div>
<h3>Allocated?</h3>
{isAllocated ? "yes" : "no"}
<h3>Can be allocated?</h3>
{canBeAllocated}
</>
);
}