Closed vjh0107 closed 1 year ago
force push 실수 ㅎ
HQViewHandler 에서 inventoryClose 부분이 있는데 만약, 한 HQView 안에서 다른 HQView 를 연다면 마인크래프트안에선 close 보다 open 이 먼저 발생하기 때문에 해당 이벤트에서 새로 열린 HQView 가 잡힐 수 있습니다.
해서 새로 열린 HQView 가 invokeOnClose 를 실행할 것 같고, 기존의 HQView 는 계속 라이프 사이클이 죽지 않은 상태로 살아있을 것 같아 이 부분을 해결해야 할 것 같습니다.
MVVM 스타일의 View, ViewModel 및 element 를 추가하였습니다. 주요 기능은 아래와 같습니다.
아래는 예제입니다.
onCreate 메소드는 플레이어에게 view를 열기 전 호출됩니다. onRender 메소드는 플레이어에게 view를 연 후 호출됩니다.
onCreate과 onRender 에서는 Button 을 배치할 수 있으며, onRender 에서는 title 을 변경할 수 있습니다. (nms 모듈 의존)
viewModels() 메소드를 통해 viewModel 을 주입받을 수 있습니다. viewModel 의 CoroutineScope 는 View가 close 될 때 view 의 CoroutineScope 가 종료되기 전 종료된 후 이어서 view 의 CoroutineScope 가 종료됩니다.
button 및 title 은 view 의 엘리먼트라고 표현되며, 엘리먼트들은 state 들을 subscribe 할 수 있습니다. subscribe 된 state 들이 변경될 때, 엘리먼트가 다시 그려지게 됩니다. 엘리먼트는 여러 state 들을 subscribe 할 수 있으며 하나의 state 를 여러 엘리먼트가 subscribe 할 수 있습니다.
위의 예제 코드는 view를 열고 버튼이 3초 후 생성되며 view의 정보들을 출력하는 예제 코드입니다.
view 팩토리 메소드를 통하여 view를 주입받을 수 있습니다.