Controller
Coordinates
Target System
Crosshair System
Radar System
This commit is contained in:
2026-08-13 18:42:41 +05:00
parent 487e0d72ff
commit d559ab338a
33 changed files with 2591 additions and 6 deletions
@@ -0,0 +1,98 @@
using UnityEngine;
[DisallowMultipleComponent]
public sealed class MapController : MonoBehaviour
{
[Header("Main References")]
[SerializeField] private MapCrosshairController crosshair = null;
[SerializeField] private MapCoordinateSystem coordinateSystem = null;
[Header("Target System")]
[SerializeField] private MapTargetController targetController = null;
[SerializeField] private MapTarget targetPrefab = null;
[SerializeField] private Transform targetParent = null;
[SerializeField] private bool createTargetsOnStart = true;
[Header("Radar System")]
[SerializeField] private MapRadarController radarController = 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 (targetController != null)
{
targetController.Configure(
coordinateSystem,
targetPrefab,
targetParent);
if (createTargetsOnStart)
targetController.CreateAndPlaceTargets();
}
if (radarController != null)
radarController.Configure(coordinateSystem, targetController, targetPrefab);
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 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();
}
}