37 lines
1.1 KiB
C#
37 lines
1.1 KiB
C#
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;
|
|
}
|
|
}
|