Blazor를 이용해서 보드게임을 만들고 있습니다.

board라는 컴포넌트안에 space 컴포넌트들이 있고 각 space컴포넌트안에는 drag and drop이 가능한 token을 만들어 두었습니다.
화면 캡처 2023-05-09 170616

현재 사용되고 있는 코드에서는 각 space마다 token을 저장하기위한 List을 가지고 있습니다. token을 드래그앤드랍을 하면 이동한 space의 List에 token의 정보가 복사되고 원래 있던 space에서는 token의 정보를 삭제하고 있습니다.
하지만 이 방법은 각 space에서 개별적으로 동작하기 떄문에 룰렛을 이용해 자동으로 token을 이동시키기가 어렵습니다.
그래서board 컴포넌트에서 tokenlist와 spacelist를 두고 관리를 하려고 하는데 이 방법외에도 좋은 방법이 있을까요? List를 사용하지 않고 DataTable을 사용해볼까 고민중에 있습니다.
어떤식으로 구현하는게 효율적일까요?

2개의 좋아요

A를 space라 하고 B를 token이라고 했을 때 A:B는 1:N의 관계가 됩니다. 하나의 space는 여러개의 token을 가질 수 있으며 이를 표현하는 전략은 두 가지가 있습니다.

첫 번째는 space에 여러개의 token을 표현하기 위한 token 배열을 가지는 것입니다. @MAJG 님이 사용하신 방법입니다.

두 번째는 token에 위치할 space를 담는 것입니다. 하나의 token은 하나의 space에 위치하므로 배열이 필요로 하지 않습니다.

구현하는 보드게임에서는 token이 수시로 이동해야 할 것이므로 두 번째 방법이 좀 더 효과적으로 보입니다.

2개의 좋아요

그럼 Board 밑에 Tokens 배열을 두고 Space에서는 Board의 Tokens에서 자신에 해당하는 SpaceId일 경우에만 Token을 랜더링하게 해주면 되는걸까요?

2개의 좋아요

1개의 좋아요

한번 해보겠습니다. 감사합니다.

1개의 좋아요