62 lines
1.8 KiB
C#
Executable File
62 lines
1.8 KiB
C#
Executable File
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class MapManager : MonoBehaviour
|
|
{
|
|
private static MapManager _instance;
|
|
public static MapManager Instance => _instance;
|
|
[SerializeField] private List<NavPoint> _navPoints;
|
|
public List<NavPoint> NavPoints { get => _navPoints; private set => _navPoints = value; }
|
|
public Dictionary<int, NavPoint> IDToNavPoint {get; private set; }
|
|
|
|
private void Awake()
|
|
{
|
|
if (_instance is null)
|
|
_instance = this;
|
|
else
|
|
{
|
|
Destroy(gameObject);
|
|
Debug.LogError("Only 1 Instance");
|
|
}
|
|
|
|
NavPoints = new List<NavPoint>();
|
|
var navPointSet = GameObject.Find("NavPoint Set");
|
|
var count = navPointSet.transform.childCount;
|
|
for (var i=0; i < count; i++)
|
|
NavPoints.Add(navPointSet.transform.GetChild(i)
|
|
.gameObject.GetComponent<NavPoint>());
|
|
NavPointSetToID();
|
|
}
|
|
|
|
|
|
private void NavPointSetToID()
|
|
{
|
|
IDToNavPoint = new Dictionary<int, NavPoint>();
|
|
int i = 0;
|
|
foreach (var navPoint in NavPoints)
|
|
{
|
|
IDToNavPoint.Add(i, navPoint);
|
|
navPoint.PointId = i;
|
|
i++;
|
|
}
|
|
}
|
|
|
|
public static void AddDeathAttributeToPoints(int startPoint, int endPoint,
|
|
float allDistance, float remainingDistance)
|
|
{
|
|
var startNavPoint = _instance.IDToNavPoint[startPoint];
|
|
var endNavPoint = _instance.IDToNavPoint[endPoint];
|
|
float coef;
|
|
if (allDistance != 0)
|
|
{
|
|
coef = remainingDistance / allDistance;
|
|
startNavPoint.DeathAttr += 1 - coef;
|
|
endNavPoint.DeathAttr += coef;
|
|
}
|
|
else
|
|
{
|
|
startNavPoint.DeathAttr += 1;
|
|
}
|
|
}
|
|
}
|