/// <summary> /// 部屋一覧要素を初期化する。 /// </summary> /// <param name="roomData">部屋データ</param> public void Initialize(RoomSimpleData roomData) { // Viewも初期化する view.Initialize(roomData); // ViewのUniRxイベントを紐づける // AddToしているので削除した時点でDisposeされる view.JoinRoomObservable.Subscribe(_ => OnClickJoinRoomEvent?.Invoke(roomData.RoomGuid)).AddTo(gameObject); }
/// <summary> /// 部屋一覧を更新する。 /// </summary> /// <returns></returns> public async UniTask UpdateRoomListAsync() { // キャッシュがある場合は、最初に削除しておく if (elements.Count > 0) { elements.ForEach(e => Destroy(e.gameObject)); elements.Clear(); } view.SetActiveNoRoom(true); // サーバと通信して参加可能な部屋一覧を取得する var response = await new RoomListApi().Request(new GetRoomList.Request()); if (response.Result != GetRoomList.Result.Succeed) { return; } if (response.RoomDataList.Count < 1) { return; } view.SetActiveNoRoom(false); // 部屋一覧データを用いてリスト要素を生成する foreach (var roomData in response.RoomDataList) { var element = Instantiate(elementPrefab); element.transform.SetParent(layoutGroup.transform); element.Initialize(roomData); element.OnClickJoinRoomEvent += guid => OnClickJoinRoomEvent?.Invoke(guid); elements.Add(element); } layoutGroup.CalculateLayoutInputVertical(); }
/// <summary> /// 部屋参加ボタンのクリックした時の処理。 /// </summary> /// <param name="roomGuid">参加したい部屋のGUID</param> private void OnClickClickJoinRoom(Guid roomGuid) { OnClickJoinRoomEvent?.Invoke(roomGuid); }