73 lines
2.5 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|