fix: reimplement missing texture

This commit is contained in:
trafficlunar 2024-12-29 23:27:16 +00:00
parent f401ef3cfa
commit 258f1d332a
3 changed files with 12 additions and 5 deletions

View file

@ -2,6 +2,7 @@ import { useContext, useState } from "react";
import * as PIXI from "pixi.js";
import { CanvasContext } from "@/context/Canvas";
import { TexturesContext } from "@/context/Textures";
import { Button } from "@/components/ui/button";
import { DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@/components/ui/dialog";
@ -11,6 +12,7 @@ import { useTextures } from "@/hooks/useTextures";
function SaveImage({ close }: DialogProps) {
const { blocks, canvasSize, version } = useContext(CanvasContext);
const { missingTexture } = useContext(TexturesContext);
const [fileName, setFileName] = useState("blockmatic");
const textures = useTextures(version);
@ -27,7 +29,7 @@ function SaveImage({ close }: DialogProps) {
const container = new PIXI.Container();
blocks.forEach((block) => {
const sprite = new PIXI.Sprite(textures[block.name]);
const sprite = new PIXI.Sprite(textures[block.name] ?? missingTexture);
sprite.x = block.x * 16;
sprite.y = block.y * 16;
container.addChild(sprite);

View file

@ -3,6 +3,7 @@ import { Container, Graphics, Sprite, Stage } from "@pixi/react";
import { CanvasContext } from "@/context/Canvas";
import { ThemeContext } from "@/context/Theme";
import { TexturesContext } from "@/context/Textures";
import { useBlockData } from "@/hooks/useBlockData";
import { useTextures } from "@/hooks/useTextures";
@ -17,6 +18,7 @@ interface Props {
function BlockSelector({ stageWidth, searchInput, selectedBlocks, setSelectedBlocks, userModifiedBlocks }: Props) {
const { version } = useContext(CanvasContext);
const { missingTexture } = useContext(TexturesContext);
const { isDark } = useContext(ThemeContext);
const blockData = useBlockData(version);
@ -53,7 +55,7 @@ function BlockSelector({ stageWidth, searchInput, selectedBlocks, setSelectedBlo
<>
<Sprite
key={block}
texture={textures[block]}
texture={textures[block] ?? missingTexture}
x={x}
y={y}
scale={2}

View file

@ -3,15 +3,18 @@ import { Container, Sprite, Stage } from "@pixi/react";
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip";
import { CanvasContext } from "@/context/Canvas";
import { TexturesContext } from "@/context/Textures";
import { ToolContext } from "@/context/Tool";
import _blockData from "@/data/blocks/data.json";
import { useTextures } from "@/hooks/useTextures";
import { CanvasContext } from "@/context/Canvas";
import _blockData from "@/data/blocks/data.json";
const blockData: BlockData = _blockData;
function SelectedBlock() {
const { version } = useContext(CanvasContext);
const { missingTexture } = useContext(TexturesContext);
const { selectedBlock } = useContext(ToolContext);
const textures = useTextures(version);
@ -31,7 +34,7 @@ function SelectedBlock() {
<div ref={divRef} className="absolute bottom-1 w-8 h-8 outline outline-1 outline-zinc-800 dark:outline-zinc-200">
<Stage width={divRef.current?.clientWidth} height={divRef.current?.clientHeight}>
<Container>
<Sprite texture={textures[selectedBlock]} scale={2} />
<Sprite texture={textures[selectedBlock] ?? missingTexture} scale={2} />
</Container>
</Stage>
</div>