/// <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(); }
public void SetRoomData(RoomDetailData roomData) { RoomData = roomData; }