using UnityEngine; [DisallowMultipleComponent] public sealed class MapPlayer : MonoBehaviour { [Header("Map Position")] [SerializeField] private Vector2 mapCoordinates = new(5f, 5f); private MapCoordinateSystem coordinateSystem; public Vector2 MapCoordinates => mapCoordinates; public MapCoordinateSystem CoordinateSystem => coordinateSystem; public void Configure(MapCoordinateSystem newCoordinateSystem) { coordinateSystem = newCoordinateSystem; SetMapCoordinates(mapCoordinates); } public void SetMapCoordinates(Vector2 coordinates) { mapCoordinates = coordinateSystem != null ? coordinateSystem.ClampCoordinates(coordinates) : new Vector2( Mathf.Clamp(coordinates.x, 0f, MapCoordinateSystem.CoordinateMaximum), Mathf.Clamp(coordinates.y, 0f, MapCoordinateSystem.CoordinateMaximum)); if (coordinateSystem != null && coordinateSystem.HasValidCorners()) transform.position = coordinateSystem.CoordinatesToWorldPosition(mapCoordinates); } public Vector2 GetMapCoordinates() { return mapCoordinates; } }