RiftMayhem/Assets/Scripts/UI/PartyFramesController.cs
2025-02-21 18:35:51 +00:00

125 lines
4.5 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PartyFramesController : MonoBehaviour
{
[SerializeField] private GameObject partyFrameButtonPrefab;
[SerializeField] private GameObject partyFrameVotePrefab;
[SerializeField] private Transform parentGrid;
[SerializeField] private Transform voteParentGrid;
[SerializeField] private GameEventListener_RiftPlayer onPlayerJoinedParty;
[SerializeField] private GameEventListener_RiftPlayer onPlayerLeftParty;
[SerializeField] private GameEventListener_RiftPlayer onPlayerVoted;
[SerializeField] private GameEventListener_RiftPlayer onPlayerVoteCanceled;
[SerializeField] private GameEventListener_RiftPlayer onPlayerSpawned;
[SerializeField] private List<Sprite> classImages = new List<Sprite>();
[SerializeField] private List<GameTag> classTags = new List<GameTag>();
public Dictionary<RiftPlayer, PartyFrameButton> partyFrameButtons = new Dictionary<RiftPlayer, PartyFrameButton>();
public Dictionary<RiftPlayer, PartyVoteFrame> partyVoteFrames = new Dictionary<RiftPlayer, PartyVoteFrame>();
GameObject buttonGO;
PartyFrameButton button;
PartyVoteFrame frame;
RiftPlayer riftPlayer;
/*
private void Awake()
{
onPlayerJoinedParty.Response.AddListener(AddNewPartyMemberFrame);
onPlayerLeftParty.Response.AddListener(RemovePartyMemberFrame);
onPlayerSpawned.Response.AddListener(UpdatePartyMemberFrame);
onPlayerVoted.Response.AddListener(UpdateVoteCheckmark);
onPlayerVoteCanceled.Response.AddListener((x) => CancelAllVotes());
}
public void AddNewPartyMemberFrame(RiftPlayer player)
{
if (partyFrameButtons.ContainsKey(player)) return;
buttonGO = Instantiate(partyFrameButtonPrefab, parentGrid);
button = buttonGO.GetComponent<PartyFrameButton>();
button.playerName.text = player.NickName;
partyFrameButtons.Add(player, button);
AddVoteAvatarFrame(player);
}
private void AddVoteAvatarFrame(RiftPlayer player)
{
buttonGO = Instantiate(partyFrameVotePrefab, voteParentGrid);
frame = buttonGO.GetComponent<PartyVoteFrame>();
frame.playerName.text = player.NickName;
partyVoteFrames.Add(player, frame);
}
public void RemovePartyMemberFrame(RiftPlayer player)
{
if(partyFrameButtons.ContainsKey(player))
{
Destroy(partyFrameButtons[player].gameObject);
partyFrameButtons.Remove(player);
}
if(partyVoteFrames.ContainsKey(player))
{
Destroy(partyVoteFrames[player].gameObject);
partyVoteFrames.Remove(player);
}
}
public void UpdatePartyMemberFrame(RiftPlayer 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];
partyFrameButtons[photonView.Owner].playerName.text = photonView.Owner.NickName;
partyVoteFrames[photonView.Owner].avatarIcon.sprite = classImages[i];
partyVoteFrames[photonView.Owner].votedCheck.gameObject.SetActive(false);
}
}
}
else
{
AddNewPartyMemberFrame(photonView.Owner);
UpdatePartyMemberFrame(photonView);
}
}
private void UpdateVoteCheckmark(Player player)
{
if(partyVoteFrames.ContainsKey(player))
{
partyVoteFrames[player].votedCheck.gameObject.SetActive(true);
}
}
private void CancelVoteCheckmark(Player player)
{
if (partyVoteFrames.ContainsKey(player))
{
partyVoteFrames[player].votedCheck.gameObject.SetActive(false);
}
}
private void CancelAllVotes()
{
if (GameStateController.Instance.CurrentState != GameState.GameScene) return;
List<Player> keys = new List<Player>(partyVoteFrames.Keys);
for (int i = 0; i < keys.Count; i++)
{
partyVoteFrames[keys[i]].votedCheck.gameObject.SetActive(false);
}
}*/
}