WIP
WIP
WIP
WIP
- public ํด๋์ 64px ์ png ์ด๋ฏธ์ง๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- ํ์: ๋ ๋ฐ ์ด๋ฏธ์ง
- ์ต์ : ์ปค์ ์ด๋ฏธ์ง
- ์ต์ : ๋งํฌ ์ด๋ฏธ์ง
-
static/IMAGE.ts ์์ ๊ธฐ์กด ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ด๋ฏธ์ง Url์ ์ถ๊ฐํฉ๋๋ค.
-
ํด ํ์ ์ ์ถ๊ฐํฉ๋๋ค.
// types/tool
export type ToolType = 'none' | 'highlighter' | ... | 'newTool'
- ๊ฐ ์ด๋ฏธ์ง๋ฅผ ํ์ํ๊ณณ์ ์ถ๊ฐํฉ๋๋ค.
- ContentWrapper.styled.ts ์์ ์ปค์ ์ด๋ฏธ์ง๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- IconButton.styled.ts ์์ ๋ ๋ฐ ์์ด์ฝ์ ์ถ๊ฐํฉ๋๋ค.
- Konva Layer ์ปดํฌ๋ํธ๋ฅผ ์์ฑํฉ๋๋ค.
const MyNewTool = ({ stageRef }: MyNewToolProps) => {
const layerRef = useRef<Konva.Layer>(null);
const { ants, killIfInRange } = useAntKiller(MARK_SIZE, MARK_SIZE);
const { shakeBrowser } = useShake();
const callbackFunc = (clientX: number, clientY: number, offset: number) => {
// ...
shakeBrowser(100);
killIfInRange(clientX - offset / 2, clientY);
};
useTurn({ stageRef, layerRef, callback: callbackFunc, offset }); // or useMove
return <Layer ref={layerRef}>...</Layer>;
};
export default MyNewTool;
- ํ์์ ๋ฐ๋ผ
useAntKiller
,useShake
,useTurn
,useMove
๋ฑ์ ์ปค์คํ ํ ์ ์ฌ์ฉํฉ๋๋ค.
- DockBar์ ์๋ก์ด ์์ด์ฝ์ ๋ฑ๋กํฉ๋๋ค.
const DockBar = ({ selectTool }: DockBarProps) => {
const onClickBtn = (tool: ToolType) => selectTool(tool);
return (
<S.DockBarWrapper>
<IconButton icon="highlighter" onClickBtn={() => onClickBtn('highlighter')} />
///
<IconButton icon="newTool" onClickBtn={() => onClickBtn('newTool')} />
</S.DockBarWrapper>
);
};
- ContentApp ์ ๋ง๋ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.