summaryrefslogtreecommitdiff
path: root/Thronefall_v1.0/Decompile/PlayerManager.cs
blob: 8fe94dd64ccb1f22e055c15714c10ad5a432010e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System.Collections.Generic;
using UnityEngine;

public class PlayerManager : MonoBehaviour
{
	private static PlayerManager instance;

	protected List<PlayerMovement> registeredPlayers = new List<PlayerMovement>();

	public static PlayerManager Instance => instance;

	public PlayerMovement[] RegisteredPlayers => registeredPlayers.ToArray();

	private void Awake()
	{
		if (instance != null)
		{
			Object.Destroy(instance);
			Debug.LogWarning("Found more than one player manager in scene. Destroyed old one.");
		}
		instance = this;
	}

	public static void RegisterPlayer(PlayerMovement player)
	{
		if (!instance)
		{
			Debug.Log("No PlayerManager exists in scene.");
		}
		else
		{
			instance.registeredPlayers.Add(player);
		}
	}

	public static void UnregisterPlayer(PlayerMovement player)
	{
		if (!instance)
		{
			Debug.Log("No PlayerManager exists in scene.");
		}
		else
		{
			instance.registeredPlayers.Remove(player);
		}
	}

	public static PlayerMovement GetClosestPlayer(Vector3 position)
	{
		if (!instance)
		{
			Debug.Log("No PlayerManager exists in scene.");
			return null;
		}
		PlayerMovement result = null;
		float num = float.PositiveInfinity;
		foreach (PlayerMovement registeredPlayer in instance.registeredPlayers)
		{
			float num2 = Vector3.Distance(position, registeredPlayer.transform.position);
			if (num2 < num)
			{
				num = num2;
				result = registeredPlayer;
			}
		}
		return result;
	}
}