101 lines
2.9 KiB
C#
101 lines
2.9 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Serialization;
|
|
|
|
[DisallowMultipleComponent]
|
|
public sealed class MapController : MonoBehaviour
|
|
{
|
|
[Header("Main References")]
|
|
[SerializeField] private MapCrosshairController crosshair = null;
|
|
[SerializeField] private MapCoordinateSystem coordinateSystem = null;
|
|
[SerializeField] private MapPlayer mapPlayer = null;
|
|
|
|
[Header("Target System")]
|
|
[SerializeField] private MapTargetController targetController = null;
|
|
[SerializeField] private Transform targetParent = null;
|
|
|
|
[Header("Radar System")]
|
|
[SerializeField] private MapRadarController radarController = null;
|
|
[FormerlySerializedAs("targetPrefab")]
|
|
[SerializeField] private MapTarget radarMarkPrefab = null;
|
|
|
|
[Header("Crosshair Objects")]
|
|
[SerializeField] private Transform relayX = null;
|
|
[SerializeField] private Transform relayY = null;
|
|
[SerializeField] private Transform crosshairVisual = null;
|
|
|
|
[Header("Input")]
|
|
[SerializeField, Min(0f)] private float movementSpeed = 1f;
|
|
[SerializeField] private bool useKeyboardInput = true;
|
|
|
|
public MapCoordinateSystem CoordinateSystem => coordinateSystem;
|
|
public Transform CrosshairVisual => crosshairVisual;
|
|
|
|
private void Awake()
|
|
{
|
|
if (mapPlayer != null)
|
|
mapPlayer.Configure(coordinateSystem);
|
|
|
|
if (targetController != null)
|
|
targetController.Configure(coordinateSystem, targetParent, mapPlayer);
|
|
|
|
if (radarController != null)
|
|
radarController.Configure(coordinateSystem, targetController, radarMarkPrefab);
|
|
|
|
if (crosshair == null)
|
|
return;
|
|
|
|
crosshair.Configure(
|
|
coordinateSystem,
|
|
relayX,
|
|
relayY,
|
|
crosshairVisual,
|
|
movementSpeed,
|
|
useKeyboardInput,
|
|
targetController);
|
|
|
|
}
|
|
|
|
public void SetHorizontalAxis(float value)
|
|
{
|
|
if (crosshair != null)
|
|
crosshair.SetHorizontalAxis(value);
|
|
}
|
|
|
|
public void SetVerticalAxis(float value)
|
|
{
|
|
if (crosshair != null)
|
|
crosshair.SetVerticalAxis(value);
|
|
}
|
|
|
|
public Vector2 GetCrosshairCoordinates()
|
|
{
|
|
return crosshair != null ? crosshair.GetCrosshairCoordinates() : Vector2.zero;
|
|
}
|
|
|
|
public void CreateAndPlaceTargets()
|
|
{
|
|
if (targetController != null)
|
|
targetController.CreateAndPlaceTargets();
|
|
}
|
|
|
|
public bool StartNextWave()
|
|
{
|
|
return targetController != null && targetController.StartNextWave();
|
|
}
|
|
|
|
public bool TryGetNearestTarget(out MapTarget target, out float distance)
|
|
{
|
|
if (crosshair != null)
|
|
return crosshair.TryGetNearestTarget(out target, out distance);
|
|
|
|
target = null;
|
|
distance = -1f;
|
|
return false;
|
|
}
|
|
|
|
public bool ActivateRadar()
|
|
{
|
|
return radarController != null && radarController.ActivateRadar();
|
|
}
|
|
}
|