using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using UnityEngine;
|
|
using UnityEngine.InputSystem;
|
|
using NaughtyAttributes;
|
|
|
|
using Random = UnityEngine.Random;
|
|
|
|
[CreateAssetMenu(menuName = "Data/PlayerList")]
|
|
public class PlayerList : ScriptableObject
|
|
{
|
|
|
|
[ShowNativeProperty]
|
|
public int PlayerCount => Players.Count;
|
|
|
|
public PlayerData[] AllPlayers => Players.Values.ToArray();
|
|
|
|
public Dictionary<PlayerInput, PlayerData> Players = new Dictionary<PlayerInput, PlayerData>();
|
|
|
|
private uint m_totalPlayerCount;
|
|
|
|
public event EventHandler<PlayerData> OnPlayerJoin;
|
|
|
|
public PlayerData AddPlayer(UnityEngine.InputSystem.PlayerInput input)
|
|
{
|
|
uint ID = m_totalPlayerCount++;
|
|
Color color = Random.ColorHSV(0, 1, 1, 1, 0.75f, 1);
|
|
|
|
PlayerData data = PlayerData.Initialise(ID, color, input);
|
|
|
|
data.Score = Random.Range(2, 10);
|
|
|
|
Players.Add(input, data);
|
|
|
|
OnPlayerJoin?.Invoke(this,data);
|
|
|
|
|
|
|
|
return data;
|
|
}
|
|
|
|
[ContextMenu("Add Fake Player")]
|
|
private void AddFakePlayer()
|
|
{
|
|
uint ID = m_totalPlayerCount++;
|
|
Color color = Random.ColorHSV(0, 1, 1, 1, 0.75f, 1);
|
|
|
|
PlayerData data = PlayerData.Initialise(ID, color, null);
|
|
|
|
//Players.Add(null, data);
|
|
|
|
OnPlayerJoin?.Invoke(this, data);
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
Players = new Dictionary<UnityEngine.InputSystem.PlayerInput, PlayerData>();
|
|
}
|
|
|
|
|
|
}
|