/// <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);
        }
Example #2
0
        /// <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();
        }
Example #3
0
 /// <summary>
 /// 部屋参加ボタンのクリックした時の処理。
 /// </summary>
 /// <param name="roomGuid">参加したい部屋のGUID</param>
 private void OnClickClickJoinRoom(Guid roomGuid)
 {
     OnClickJoinRoomEvent?.Invoke(roomGuid);
 }