-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FE] 황금 카드 기능 #73
[FE] 황금 카드 기능 #73
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저희가 미루고 미뤄왔던 황금카드 기능의 스타트를 멋지게 끊어주셨네요. 고생하셨습니다 토코!
if (!currentPlayerInfo || !gameInfo.teleportLocation) return; | ||
const cellCount = calculateCellCount( | ||
gameInfo.teleportLocation, | ||
currentPlayerInfo.gameboard.location | ||
); | ||
moveToken(cellCount, currentPlayerInfo.gameboard, 'teleport'); | ||
|
||
await moveToken(cellCount, currentPlayerInfo.gameboard, 'teleport'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이제보니 moveToken이 비동기함수인데 이 함수의 실행이 끝난뒤 이후 로직이 실행되도록 순서를 보장하려면 teleportToken도 async 함수로 만들었어야 했네요. 처음에 async로 만들었던 것 같은데 제가 이걸 왜 지웠을까요... 🤔
goldCardInfo: { title: '', description: '' }, | ||
isArrived: false, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
goldCardInfo도 결국 이곳으로 들어갔군요 ㅋㅋㅋ
이후에 게임 관련 상태도 어떻게 잘 나눠서 관리할 수 있을지, 전역상태를 어떻게 줄일 수 있을지 함께 고민해보면 좋을 것 같네요.
@@ -245,6 +269,7 @@ export default function useGameReducer() { | |||
game: { | |||
...prev.game, | |||
dice: [dice1, dice2], | |||
isArrived: false, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 if문 내부에서는 탈출을 위해서 주사위를 굴렸지만 더블이 나오지 않아 탈출하지 못한 경우의 상태변경 로직인데 여기서도 IsArrived를 false로 바꿔줘야 하나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 부분은 필요 없을 것 같습니다~
만 goldCardModal
조건부 랜더링 하는 부분의 로직이
복잡하고, 이상이 있을 가능성이 높습니다..
버그를 원천 봉쇄한다는 차원에서 남겨놓고
추후에 로직 수정하며 삭제하겠습니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
굉장히 많은 곳에서 isArrived
를 false로 바꿔주고있는데 모두 다 필요해서 바꿔주는 건가요?
지금보면 사실상 황금카드 칸에 도착했을 때 모달을 보여줄지 말지를 판단할때만 쓰이는 상태 같은데,
주사위나 순간이동으로 토큰이 움직이고 난 후 true가 되고있으니까, 이후 endTurn 할때만 false로 다시 바꿔줘도 되지않을까요? 아니면 이미 handleClickAttack()의 마지막에 false로 다시 바꿔주고 있네요.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
주사위가 재랜더링 될 때마다 rollDone이 실행되면서
isArrived
를 true
로 바꿔주고 있어서
endTurn
할 때 false
로 바꿔줘도
룰렛 돌아가고 주사위 나타나면 다시 true
로 바뀌더라구요
아마 저희가 사용하는 주사위 라이브러리에서
랜더링 시에 rollDone이 실행되도록 짜여진 것 아닌가 싶네요
결론적으로
주사위 랜더링 후, 토큰이 움직이기 전 받는 응답 중
텔레포트, 주사위, 감옥 주사위 등의 응답에서
isArrived
를 false
로 바꿔줘야 합니다
물론 나중에 개선이 필요할 것 같습니다~
<PlayerToggleWrapper> | ||
{currentPlayers.map((player) => ( | ||
<PlayerToggle | ||
key={player.playerId} | ||
disabled={playerId === player.playerId} | ||
onClick={() => handleChooseTarget(player.playerId)} | ||
$isTarget={player.playerId === targetId} | ||
$order={player.order} | ||
> | ||
{player.playerId} | ||
</PlayerToggle> | ||
))} | ||
</PlayerToggleWrapper> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
와 저는 단순히 플레이어 카드를 눌러서 선택하는 방식만 생각했는데 그냥 모달에 이름 목록을 띄워주고 선택할 수 있도록 만들수 있었네요 👍
📌 이슈번호
🔑 Key changes
👋 To reviewers