/// <summary>
        /// 2回目以降のデータ注入はこちらを呼び出す
        /// </summary>
        public void UpdateMember(RoomDetailData data)
        {
            // キャッシュはあるが更新データがない時は削除する
            var removeDictionary = new Dictionary <int, PlayerElementPresenter>(elementDictionary);

            foreach (var element in elementDictionary)
            {
                var existData = data.PlayerDataList.Any(d => d.PlayerConnectionId == element.Key);
                if (!existData)
                {
                    Destroy(element.Value.gameObject);
                    removeDictionary.Remove(element.Key);
                }
            }

            elementDictionary = removeDictionary;

            // キャッシュはないが更新データがある時は新規作成する
            foreach (var playerData in data.PlayerDataList)
            {
                var existData = elementDictionary.ContainsKey(playerData.PlayerConnectionId);
                if (!existData)
                {
                    var element = Instantiate(elementPrefab);
                    element.transform.SetParent(layoutGroup.transform);
                    element.Initialize(playerData);
                    elementDictionary.Add(playerData.PlayerConnectionId, element);
                }
            }

            layoutGroup.CalculateLayoutInputVertical();
            layoutGroup.CalculateLayoutInputHorizontal();
        }
        public void ShowMember(RoomDetailData data, List <int> wolfMemberList, bool isShowWolfMember)
        {
            Refresh();

            foreach (var playerData in data.PlayerDataList)
            {
                var isWolf = wolfMemberList.Contains(playerData.PlayerConnectionId);
                if (isShowWolfMember && !isWolf || !isShowWolfMember && isWolf)
                {
                    continue;
                }

                var element = Instantiate(elementPrefab);
                element.transform.SetParent(layoutGroup.transform);
                element.Initialize(playerData.PlayerName, isWolf);
                elements.Add(element);
            }
        }
        /// <summary>
        /// 初回のデータ注入はこちらを呼び出す
        /// </summary>
        public void SetMember(RoomDetailData data)
        {
            // 残っているキャッシュを全削除する
            foreach (var element in elementDictionary)
            {
                Destroy(element.Value.gameObject);
            }

            elementDictionary.Clear();

            foreach (var playerData in data.PlayerDataList)
            {
                var element = Instantiate(elementPrefab);
                element.transform.SetParent(layoutGroup.transform);
                element.Initialize(playerData);
                elementDictionary.Add(playerData.PlayerConnectionId, element);
            }

            // 新規作成する

            layoutGroup.CalculateLayoutInputVertical();
            layoutGroup.CalculateLayoutInputHorizontal();
        }
示例#4
0
 public void SetRoomData(RoomDetailData roomData)
 {
     RoomData = roomData;
 }