using Photon.Pun; using Photon.Realtime; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PartyFramesController : MonoBehaviour { [SerializeField] private GameObject partyFrameButtonPrefab; [SerializeField] private Transform parentGrid; [SerializeField] private GameEventListener_Player onPlayerJoinedParty; [SerializeField] private GameEventListener_Player onPlayerLeftParty; [SerializeField] private GameEventListener_PhotonView onPlayerSpawned; [SerializeField] private List classImages = new List(); [SerializeField] private List classTags = new List(); public Dictionary partyFrameButtons = new Dictionary(); GameObject buttonGO; PartyFrameButton button; RiftPlayer riftPlayer; private void Awake() { onPlayerJoinedParty.Response.AddListener(AddNewPartyMemberFrame); onPlayerLeftParty.Response.AddListener(RemovePartyMemberFrame); onPlayerSpawned.Response.AddListener(UpdatePartyMemberFrame); } public void AddNewPartyMemberFrame(Player player) { if (partyFrameButtons.ContainsKey(player)) return; buttonGO = Instantiate(partyFrameButtonPrefab, parentGrid); button = buttonGO.GetComponent(); button.playerName.text = player.NickName; partyFrameButtons.Add(player, button); } public void RemovePartyMemberFrame(Player player) { if(partyFrameButtons.ContainsKey(player)) { Destroy(partyFrameButtons[player].gameObject); partyFrameButtons.Remove(player); } } public void UpdatePartyMemberFrame(PhotonView photonView) { if(partyFrameButtons.ContainsKey(photonView.Owner)) { riftPlayer = photonView.GetComponentInParent(); if (riftPlayer == null) { Debug.Log("Sujou"); return; } Debug.Log("Player Class: " + riftPlayer.classTag.name); for (int i = 0; i < classTags.Count; i++) { if (riftPlayer.classTag == classTags[i]) partyFrameButtons[photonView.Owner].button.image.sprite = classImages[i]; } } else { AddNewPartyMemberFrame(photonView.Owner); UpdatePartyMemberFrame(photonView); } } }