Showing
2 changed files
with
22 additions
and
0 deletions
| ... | @@ -3,6 +3,7 @@ import { useLocation } from 'react-router'; | ... | @@ -3,6 +3,7 @@ import { useLocation } from 'react-router'; |
| 3 | import SocketContext from '../../contexts/SocketContext'; | 3 | import SocketContext from '../../contexts/SocketContext'; |
| 4 | import { MessageType, RawMessage } from '../common/types'; | 4 | import { MessageType, RawMessage } from '../common/types'; |
| 5 | import { Canvas } from './Canvas'; | 5 | import { Canvas } from './Canvas'; |
| 6 | +import { RoundInfo } from './RoundInfo'; | ||
| 6 | import { Role, RoundData } from './types'; | 7 | import { Role, RoundData } from './types'; |
| 7 | import { Word } from './Word'; | 8 | import { Word } from './Word'; |
| 8 | 9 | ||
| ... | @@ -21,6 +22,7 @@ export const GameBoard: React.FC<GameBoardProps> = ({ isInGame }) => { | ... | @@ -21,6 +22,7 @@ export const GameBoard: React.FC<GameBoardProps> = ({ isInGame }) => { |
| 21 | const [ isDrawer, setIsDrawer ] = useState(false); | 22 | const [ isDrawer, setIsDrawer ] = useState(false); |
| 22 | const [ words, setWords ] = useState<string[]>([]); | 23 | const [ words, setWords ] = useState<string[]>([]); |
| 23 | const [ wordChosen, setWordChosen ] = useState(''); | 24 | const [ wordChosen, setWordChosen ] = useState(''); |
| 25 | + const [ round, setRound ] = useState(0); | ||
| 24 | 26 | ||
| 25 | const handleWordSet = useCallback((rawMessage: RawMessage) => { | 27 | const handleWordSet = useCallback((rawMessage: RawMessage) => { |
| 26 | if (rawMessage.type === MessageType.GAME_WORDSET) { | 28 | if (rawMessage.type === MessageType.GAME_WORDSET) { |
| ... | @@ -40,6 +42,7 @@ export const GameBoard: React.FC<GameBoardProps> = ({ isInGame }) => { | ... | @@ -40,6 +42,7 @@ export const GameBoard: React.FC<GameBoardProps> = ({ isInGame }) => { |
| 40 | const index = data.roles.findIndex(x => x.username === location.state.username); | 42 | const index = data.roles.findIndex(x => x.username === location.state.username); |
| 41 | setIsDrawer(data.roles[index].role === 'drawer'); | 43 | setIsDrawer(data.roles[index].role === 'drawer'); |
| 42 | setWordChosen(''); | 44 | setWordChosen(''); |
| 45 | + setRound(data.round); | ||
| 43 | } | 46 | } |
| 44 | }, []); | 47 | }, []); |
| 45 | 48 | ||
| ... | @@ -69,6 +72,7 @@ export const GameBoard: React.FC<GameBoardProps> = ({ isInGame }) => { | ... | @@ -69,6 +72,7 @@ export const GameBoard: React.FC<GameBoardProps> = ({ isInGame }) => { |
| 69 | <div className='w-full flex flex-col justify-center items-center'> | 72 | <div className='w-full flex flex-col justify-center items-center'> |
| 70 | {words.map((word, i) => (<Word key={word} index={i} word={word} setWordChosen={setWordChosen} setWords={setWords} />))} | 73 | {words.map((word, i) => (<Word key={word} index={i} word={word} setWordChosen={setWordChosen} setWords={setWords} />))} |
| 71 | </div> | 74 | </div> |
| 75 | + <RoundInfo round={round} wordChosen={wordChosen}/> | ||
| 72 | <Canvas isDrawer={isDrawer && wordChosen !== ''}/> | 76 | <Canvas isDrawer={isDrawer && wordChosen !== ''}/> |
| 73 | </div> | 77 | </div> |
| 74 | ); | 78 | ); | ... | ... |
web/src/components/room/RoundInfo.tsx
0 → 100644
| 1 | +import React from 'react'; | ||
| 2 | +import SocketContext from '../../contexts/SocketContext'; | ||
| 3 | +import { RoundData } from './types'; | ||
| 4 | + | ||
| 5 | +interface RoundInfoProps { | ||
| 6 | + round: number; | ||
| 7 | + wordChosen: string; | ||
| 8 | +} | ||
| 9 | + | ||
| 10 | +export const RoundInfo: React.FC<RoundInfoProps> = ({ round, wordChosen }) => { | ||
| 11 | + return ( | ||
| 12 | + <div className='w-full p-3 flex items-center place-content-between'> | ||
| 13 | + <div>대충 타이머 위치</div> | ||
| 14 | + <div>{wordChosen}</div> | ||
| 15 | + <div>R{round}</div> | ||
| 16 | + </div> | ||
| 17 | + ); | ||
| 18 | +} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment