RiftMayhem/Assets/Scripts/UI/PartyFramesController.cs

73 lines
2.5 KiB
C#

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<Sprite> classImages = new List<Sprite>();
[SerializeField] private List<GameTag> classTags = new List<GameTag>();
public Dictionary<Player, PartyFrameButton> partyFrameButtons = new Dictionary<Player, PartyFrameButton>();
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<PartyFrameButton>();
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<RiftPlayer>();
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);
}
}
}