fix: voter stickers are reset between each vote

This commit is contained in:
Fangh 2024-01-31 22:05:08 +01:00
parent 580dbbdca8
commit 74f732f1f3

View File

@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Firebase.Extensions;
using Firebase.Storage;
using TMPro;
@ -15,17 +16,23 @@ public class PropositionFrame : MonoBehaviour
public TextMeshProUGUI playerName;
public Transform playerGrid;
private List<Player> currentVoters = new List<Player>();
private Dictionary<Player, GameObject> currentVoters = new Dictionary<Player, GameObject>();
private Proposition proposition;
public void Initialize(Proposition _proposition)
{
//Debug.Log($"Initializing {_proposition.owner.name}'s proposition", this);
Debug.Log($"Initializing {_proposition.owner.name}'s proposition", this);
proposition = _proposition;
playerName.text = proposition.owner.name;
if (!string.IsNullOrEmpty(proposition.photoUrl))
DisplayPicture(proposition.photoUrl);
foreach(var voters in currentVoters)
{
Destroy(voters.Value);
}
currentVoters.Clear();
}
/// <summary>
@ -48,13 +55,15 @@ private void DisplayPicture(string _gsUrl)
public void UpdateVoters(List<Player> _newVoters)
{
//Debug.Log($"There are some new voters for {proposition.owner}'s proposition", this);
int index = 0;
foreach (Player p in _newVoters)
{
if (!currentVoters.Contains(p))
index++;
if (!currentVoters.Keys.Contains(p))
{
currentVoters.Add(p);
VoterSticker sticker = Instantiate(voterStickerPrefab, playerGrid).GetComponent<VoterSticker>();
sticker.playerNameLabel.text = p.name;
PlayerSticker sticker = Instantiate(voterStickerPrefab, playerGrid).GetComponent<PlayerSticker>();
sticker.Initialize(p.name, index);
currentVoters.Add(p, sticker.gameObject);
Debug.Log($"{p.name} has just voted for {proposition.owner.name}'s proposition.");
}
}