From 59e872e71428790318ba58ac9c3b2b16b507b4e2 Mon Sep 17 00:00:00 2001 From: zojgame Date: Mon, 8 Apr 2024 17:18:19 +0500 Subject: [PATCH] marks icon --- src/components/Mark.tsx | 38 +----------- src/components/MarksContainer.tsx | 69 +++++++++++++++++++++ src/components/icons/marks/MarkShopIcon.tsx | 12 ++++ src/marks.json | 26 ++++++++ src/pages/Infra2Page.tsx | 26 ++++---- 5 files changed, 123 insertions(+), 48 deletions(-) create mode 100644 src/components/MarksContainer.tsx create mode 100644 src/components/icons/marks/MarkShopIcon.tsx create mode 100644 src/marks.json diff --git a/src/components/Mark.tsx b/src/components/Mark.tsx index 2e1c62d..6bbbb36 100644 --- a/src/components/Mark.tsx +++ b/src/components/Mark.tsx @@ -1,39 +1,5 @@ -// import { useLayoutEffect, useState } from "react"; - -interface MarkProps { - x: number; - y: number; -} - -function Mark({ x, y }: MarkProps) { - return ( - - - - {/* */} - - ); +function Mark() { + return
Mark
; } export default Mark; diff --git a/src/components/MarksContainer.tsx b/src/components/MarksContainer.tsx new file mode 100644 index 0000000..a8e7ad5 --- /dev/null +++ b/src/components/MarksContainer.tsx @@ -0,0 +1,69 @@ +import MarkShopIcon from "./icons/marks/MarkShopIcon"; + +interface Mark { + id: string; + icon: string; + x: number; + y: number; +} + +interface MarksContainerProps { + marks: Mark[]; + markWidth?: number; + markHeigth?: number; +} + +function MarksContainer({ + marks, + markWidth = 64, + markHeigth = 64, +}: MarksContainerProps) { + return ( + + {marks.map((mark) => { + let icon; + + switch (mark.icon) { + case "shop": + icon = ; + break; + + default: + break; + } + + return ( + + + + {icon} + + ); + })} + + ); +} + +export default MarksContainer; diff --git a/src/components/icons/marks/MarkShopIcon.tsx b/src/components/icons/marks/MarkShopIcon.tsx new file mode 100644 index 0000000..3f79054 --- /dev/null +++ b/src/components/icons/marks/MarkShopIcon.tsx @@ -0,0 +1,12 @@ +function MarkShopIcon() { + return ( + + ); +} + +export default MarkShopIcon; diff --git a/src/marks.json b/src/marks.json new file mode 100644 index 0000000..fcb356f --- /dev/null +++ b/src/marks.json @@ -0,0 +1,26 @@ +[ + { + "id": "shop_1", + "x": 900, + "y": 1000, + "icon": "shop" + }, + { + "id": "shop_2", + "x": 666, + "y": 777, + "icon": "shop" + }, + { + "id": "shop_3", + "x": 500, + "y": 900, + "icon": "shop" + }, + { + "id": "shop_4", + "x": 300, + "y": 500, + "icon": "shop" + } +] diff --git a/src/pages/Infra2Page.tsx b/src/pages/Infra2Page.tsx index 4950e23..3e57052 100644 --- a/src/pages/Infra2Page.tsx +++ b/src/pages/Infra2Page.tsx @@ -1,4 +1,17 @@ import { useEffect, useState } from "react"; +import MarksContainer from "../components/MarksContainer"; +import _marks from "./../marks.json"; + +interface Mark { + id: string; + icon: string; + x: number; + y: number; + width?: number; + heigth?: number; +} + +const marks = _marks as Mark[]; function Infra2Page() { const [width, setWidth] = useState(); @@ -29,18 +42,7 @@ function Infra2Page() { alt="" className="" /> - - - - - + );