[System.Serializable]
public struct CubeCoord
{
public int q
{
get => m_Q;
set
{
m_Q = value;
m_S = -m_Q - m_R;
}
}
public int r
{
get => m_R;
set
{
m_R = value;
m_Q = -m_R - m_S;
}
}
public int s
{
get => m_S;
set
{
m_S = value;
m_R = -m_S - m_Q;
}
}
[UnityEngine.SerializeField] int m_Q;
[UnityEngine.SerializeField] int m_R;
[UnityEngine.SerializeField] int m_S;
public CubeCoord(int q, int r, int s)
{
try
{
if (q + r + s != 0)
throw new System.Exception($"Invalid coordinates. The value of {nameof(s)} will be adjusted so the sum of {nameof(q)}, {nameof(r)} and {nameof(s)} values equals 0.");
}
catch (System.Exception)
{
s = -q - r;
}
m_Q = q;
m_R = r;
m_S = s;
}
}