60 lines
1.6 KiB
C#
60 lines
1.6 KiB
C#
using System;
|
|
using System.Globalization;
|
|
using EasyButtons;
|
|
using Mapbox.Unity.Utilities;
|
|
using Mapbox.Utils;
|
|
using Unity.Collections;
|
|
using UnityEngine;
|
|
using UnityEngine.Serialization;
|
|
|
|
[CreateAssetMenu(fileName = "duck", menuName = "Duck/Collectable", order = 0)]
|
|
public class CollectableDuckData: ScriptableObject
|
|
{
|
|
[SerializeField]
|
|
[ReadOnly]
|
|
private string _id = System.Guid.NewGuid().ToString();
|
|
|
|
[SerializeField]
|
|
[Geocode]
|
|
private string _latitudeLongitude;
|
|
|
|
[SerializeField] private GameObject _modelPrefab;
|
|
|
|
[FormerlySerializedAs("_sticker")] [SerializeField] private DuckStickerData stickerData;
|
|
|
|
public Vector2d LatitudeLongitude
|
|
{
|
|
get
|
|
{
|
|
if (string.IsNullOrEmpty(_latitudeLongitude))
|
|
{
|
|
return Vector2d.zero;
|
|
}
|
|
|
|
var splitIndex = _latitudeLongitude.IndexOf(",", StringComparison.Ordinal);
|
|
if (splitIndex < 0)
|
|
{
|
|
throw new Exception("Invalid Duck coordinate: " + _latitudeLongitude);
|
|
}
|
|
|
|
var lat = double.Parse(_latitudeLongitude.Substring(0, splitIndex), NumberStyles.Float, CultureInfo.InvariantCulture);
|
|
var lon = double.Parse(_latitudeLongitude.Substring(splitIndex + 1), NumberStyles.Float, CultureInfo.InvariantCulture);
|
|
|
|
return new Vector2d(lat, lon);
|
|
}
|
|
}
|
|
|
|
public string Id => _id;
|
|
|
|
public GameObject ModelPrefab => _modelPrefab;
|
|
|
|
public DuckStickerData StickerData => stickerData;
|
|
|
|
|
|
[Button]
|
|
public void RegenerateId()
|
|
{
|
|
_id = Guid.NewGuid().ToString();
|
|
}
|
|
}
|