Files
FORT-BO/Assets/CONTENT/FEATURES/MapRadar/MapController.cs
T
2026-08-14 18:51:23 +05:00

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();
}
}