fix: cursor information show block name instead of texture name

This commit is contained in:
trafficlunar 2024-12-21 23:42:26 +00:00
parent 0b23186d67
commit 5629a77a7e
2 changed files with 15 additions and 1 deletions

View file

@ -1,6 +1,9 @@
import { CanvasContext } from "@/context/Canvas"; import { CanvasContext } from "@/context/Canvas";
import { useContext, useEffect, useState } from "react"; import { useContext, useEffect, useState } from "react";
import _blockData from "@/data/blocks/data.json";
const blockData: BlockData = _blockData;
interface Props { interface Props {
mouseCoords: Position; mouseCoords: Position;
} }
@ -11,6 +14,8 @@ function CursorInformation({ mouseCoords }: Props) {
const [position, setPosition] = useState<Position>({ x: 0, y: 0 }); const [position, setPosition] = useState<Position>({ x: 0, y: 0 });
const [block, setBlock] = useState<Block>(); const [block, setBlock] = useState<Block>();
const [blockName, setBlockName] = useState("");
useEffect(() => { useEffect(() => {
setPosition({ setPosition({
x: mouseCoords.x, x: mouseCoords.x,
@ -20,9 +25,17 @@ function CursorInformation({ mouseCoords }: Props) {
setBlock(blocks.find((b) => b.x === mouseCoords.x && b.y === mouseCoords.y)); setBlock(blocks.find((b) => b.x === mouseCoords.x && b.y === mouseCoords.y));
}, [mouseCoords]); }, [mouseCoords]);
useEffect(() => {
if (!block) {
setBlockName("Air");
return;
}
setBlockName(blockData[block.name].name);
}, [block]);
return ( return (
<div className="absolute left-4 bottom-4 flex flex-col gap-1"> <div className="absolute left-4 bottom-4 flex flex-col gap-1">
<div className="info-child">{block?.name ?? "air"}</div> <div className="info-child">{blockName ?? "air"}</div>
<div className="info-child"> <div className="info-child">
<span>X: {position.x} </span> <span>X: {position.x} </span>
<span>Y: {position.y}</span> <span>Y: {position.y}</span>

1
src/types.d.ts vendored
View file

@ -31,3 +31,4 @@ interface Settings {
interface DialogProps { interface DialogProps {
close: () => void; close: () => void;
} }