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

View file

@ -3,6 +3,7 @@ import { Container, Graphics, Sprite, Stage } from "@pixi/react";
import { CanvasContext } from "@/context/Canvas"; import { CanvasContext } from "@/context/Canvas";
import { ThemeContext } from "@/context/Theme"; import { ThemeContext } from "@/context/Theme";
import { TexturesContext } from "@/context/Textures";
import { useBlockData } from "@/hooks/useBlockData"; import { useBlockData } from "@/hooks/useBlockData";
import { useTextures } from "@/hooks/useTextures"; import { useTextures } from "@/hooks/useTextures";
@ -17,6 +18,7 @@ interface Props {
function BlockSelector({ stageWidth, searchInput, selectedBlocks, setSelectedBlocks, userModifiedBlocks }: Props) { function BlockSelector({ stageWidth, searchInput, selectedBlocks, setSelectedBlocks, userModifiedBlocks }: Props) {
const { version } = useContext(CanvasContext); const { version } = useContext(CanvasContext);
const { missingTexture } = useContext(TexturesContext);
const { isDark } = useContext(ThemeContext); const { isDark } = useContext(ThemeContext);
const blockData = useBlockData(version); const blockData = useBlockData(version);
@ -53,7 +55,7 @@ function BlockSelector({ stageWidth, searchInput, selectedBlocks, setSelectedBlo
<> <>
<Sprite <Sprite
key={block} key={block}
texture={textures[block]} texture={textures[block] ?? missingTexture}
x={x} x={x}
y={y} y={y}
scale={2} 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 { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip";
import { CanvasContext } from "@/context/Canvas";
import { TexturesContext } from "@/context/Textures";
import { ToolContext } from "@/context/Tool"; import { ToolContext } from "@/context/Tool";
import _blockData from "@/data/blocks/data.json";
import { useTextures } from "@/hooks/useTextures"; import { useTextures } from "@/hooks/useTextures";
import { CanvasContext } from "@/context/Canvas";
import _blockData from "@/data/blocks/data.json";
const blockData: BlockData = _blockData; const blockData: BlockData = _blockData;
function SelectedBlock() { function SelectedBlock() {
const { version } = useContext(CanvasContext); const { version } = useContext(CanvasContext);
const { missingTexture } = useContext(TexturesContext);
const { selectedBlock } = useContext(ToolContext); const { selectedBlock } = useContext(ToolContext);
const textures = useTextures(version); 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"> <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}> <Stage width={divRef.current?.clientWidth} height={divRef.current?.clientHeight}>
<Container> <Container>
<Sprite texture={textures[selectedBlock]} scale={2} /> <Sprite texture={textures[selectedBlock] ?? missingTexture} scale={2} />
</Container> </Container>
</Stage> </Stage>
</div> </div>