|
|
|
@ -38,18 +38,18 @@ public class SettlementManager : Singleton<SettlementManager> |
|
|
|
{ |
|
|
|
Vector3 face = targetNode.transform.position - GameManager.Instance.playerOn.transform.position; |
|
|
|
float euler = Vector3.SignedAngle(-GameManager.Instance.playerOn.transform.forward, face, GameManager.Instance.playerOn.transform.up) + 180; |
|
|
|
Debug.Log("currentNode的X是" + targetNode.locationX + "currentNode的Y是" + targetNode.locationY); |
|
|
|
//Debug.Log("currentNode的X是" + targetNode.locationX + "currentNode的Y是" + targetNode.locationY);
|
|
|
|
//Debug.Log("currentNode的Q是" + currentNode.cubeQ + "currentNode的S是" + currentNode.cubeS + "currentNode的R是" + currentNode.cubeR);
|
|
|
|
List<(int, int, int)> cubeList = new List<(int, int, int)>(); |
|
|
|
int intEuler = (int)euler; |
|
|
|
Debug.Log("euler是" + intEuler); |
|
|
|
//Debug.Log("euler是" + intEuler);
|
|
|
|
for (int i = 0; i < cardOriginalData.nodesMark.Length; i++) |
|
|
|
{ |
|
|
|
|
|
|
|
try |
|
|
|
{ |
|
|
|
string[] marks = cardOriginalData.nodesMark[i].Split("_"); |
|
|
|
Debug.Log("AxialToCube的X是" + int.Parse(marks[0]) + "AxialToCube的Y是" + int.Parse(marks[1])); |
|
|
|
//Debug.Log("AxialToCube的X是" + int.Parse(marks[0]) + "AxialToCube的Y是" + int.Parse(marks[1]));
|
|
|
|
(int q, int s, int y) = MathTool.AxialToCube(int.Parse(marks[0]), int.Parse(marks[1])); |
|
|
|
cubeList.Add((q, s, y)); |
|
|
|
} |
|
|
|
@ -60,10 +60,10 @@ public class SettlementManager : Singleton<SettlementManager> |
|
|
|
rotatedCubeList = MathTool.RotateCoordinates(cubeList, intEuler); |
|
|
|
foreach (var tuple in rotatedCubeList) |
|
|
|
{ |
|
|
|
MapUnity endNode = new MapUnity(); |
|
|
|
MapUnity endNode = null; |
|
|
|
endNode = getNodeTools.getNodeWithCube(tuple.Item1, tuple.Item2, tuple.Item3); |
|
|
|
Debug.Log("rotatedNode的X是" + endNode.locationX + "rotatedNode的Y是" + endNode.locationY); |
|
|
|
Debug.Log("rotatedNode的Q是" + tuple.Item1 + "rotatedNode的S是" + tuple.Item2 + "rotatedNode的R是" + tuple.Item3); |
|
|
|
// Debug.Log("rotatedNode的X是" + endNode.locationX + "rotatedNode的Y是" + endNode.locationY);
|
|
|
|
//Debug.Log("rotatedNode的Q是" + tuple.Item1 + "rotatedNode的S是" + tuple.Item2 + "rotatedNode的R是" + tuple.Item3);
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -71,9 +71,9 @@ public class SettlementManager : Singleton<SettlementManager> |
|
|
|
trueCubeList = MathTool.TranslateHexesToNewOrigin(rotatedCubeList, (targetNode.cubeQ, targetNode.cubeS, targetNode.cubeR)); |
|
|
|
for (int i=0;i<trueCubeList.Count;i++) |
|
|
|
{ |
|
|
|
MapUnity endNode = new MapUnity(); |
|
|
|
MapUnity endNode = null; |
|
|
|
endNode = getNodeTools.getNodeWithCube(trueCubeList[i].Item1, trueCubeList[i].Item2, trueCubeList[i].Item3); |
|
|
|
Debug.Log("endNode的X是" + endNode.locationX + "endNode的Y是" + endNode.locationY); |
|
|
|
// Debug.Log("endNode的X是" + endNode.locationX + "endNode的Y是" + endNode.locationY);
|
|
|
|
//Debug.Log("endNode的Q是"+endNode.cubeQ+ "endNode的S是" + endNode.cubeS+ "endNode的R是" + endNode.cubeR);
|
|
|
|
if (endNode != null) |
|
|
|
{ |
|
|
|
@ -84,98 +84,95 @@ public class SettlementManager : Singleton<SettlementManager> |
|
|
|
//预计地块计数
|
|
|
|
public List <int> PreviewColorMapUnity(CardOriginalData cardOriginalData, MapUnity targetNode) |
|
|
|
{ |
|
|
|
List<int > mapColorCount = new List<int>() { 0,0,0,0,0,0,0};//1red,2white,3blue,4green,5black,6matel
|
|
|
|
List<int> mapColorCount = new List<int>() { 0, 0, 0, 0, 0, 0, 0 };//1red,2white,3blue,4green,5black,6matel
|
|
|
|
|
|
|
|
ZeroToFiveCircularCounter counter = new ZeroToFiveCircularCounter(); |
|
|
|
int offset = 3; |
|
|
|
Vector3 face = targetNode.transform.position - GameManager.Instance.playerOn.transform.position; |
|
|
|
if (!targetNode.Equals(GameManager.Instance.playerOn)) |
|
|
|
{ |
|
|
|
float euler = Vector3.SignedAngle(-GameManager.Instance.playerOn.transform.forward, face, GameManager.Instance.playerOn.transform.up) + 180; |
|
|
|
offset = getEulerOffset(offset, euler); |
|
|
|
} |
|
|
|
if (!cardOriginalData.nodesColor[0].Equals(Name.none)) |
|
|
|
{ |
|
|
|
// targetNode.switchColor(Name.stringColorToint(cardOriginalData.nodesColor[0]));
|
|
|
|
if (targetNode.whoColour != Name.stringColorToint(cardOriginalData.nodesColor[0])&&targetNode .whoColour !=6) |
|
|
|
{ |
|
|
|
mapColorCount[Name.stringColorToint(cardOriginalData.nodesColor[0])] += 1; |
|
|
|
mapColorCount[targetNode.whoColour] -= 1; |
|
|
|
} |
|
|
|
} |
|
|
|
// Debug.Log("offset是" + offset);
|
|
|
|
float euler = Vector3.SignedAngle(-GameManager.Instance.playerOn.transform.forward, face, GameManager.Instance.playerOn.transform.up) + 180; |
|
|
|
List<(int, int, int)> cubeList = new List<(int, int, int)>(); |
|
|
|
int intEuler = (int)euler; |
|
|
|
Debug.Log("euler是" + intEuler); |
|
|
|
for (int i = 0; i < cardOriginalData.nodesMark.Length; i++) |
|
|
|
{ |
|
|
|
MapUnity endNode = targetNode; |
|
|
|
try |
|
|
|
{ |
|
|
|
string[] marks = cardOriginalData.nodesMark[i].Split("_"); |
|
|
|
for (int j = 0; j < marks.Length; j++) |
|
|
|
{ |
|
|
|
MapUnity oldNode = endNode; |
|
|
|
endNode = oldNode.unitPool[counter.Add(offset, int.Parse(marks[j]))]; |
|
|
|
} |
|
|
|
if (endNode != null) |
|
|
|
{ |
|
|
|
// endNode.switchColor(Name.stringColorToint(cardOriginalData.nodesColor[i + 1]));
|
|
|
|
if(endNode.whoColour != Name.stringColorToint(cardOriginalData.nodesColor[i + 1]) && endNode.whoColour != 6) |
|
|
|
{ |
|
|
|
mapColorCount[Name.stringColorToint(cardOriginalData.nodesColor[i + 1])] += 1; |
|
|
|
mapColorCount[endNode.whoColour] -= 1; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
Debug.Log("AxialToCube的X是" + int.Parse(marks[0]) + "AxialToCube的Y是" + int.Parse(marks[1])); |
|
|
|
(int q, int s, int y) = MathTool.AxialToCube(int.Parse(marks[0]), int.Parse(marks[1])); |
|
|
|
cubeList.Add((q, s, y)); |
|
|
|
} |
|
|
|
catch (Exception e) |
|
|
|
{ |
|
|
|
{ } |
|
|
|
} |
|
|
|
List<(int, int, int)> rotatedCubeList = new List<(int, int, int)>(); |
|
|
|
rotatedCubeList = MathTool.RotateCoordinates(cubeList, intEuler); |
|
|
|
foreach (var tuple in rotatedCubeList) |
|
|
|
{ |
|
|
|
MapUnity endNode = null; |
|
|
|
endNode = getNodeTools.getNodeWithCube(tuple.Item1, tuple.Item2, tuple.Item3); |
|
|
|
} |
|
|
|
|
|
|
|
List<(int, int, int)> trueCubeList = new List<(int, int, int)>(); |
|
|
|
trueCubeList = MathTool.TranslateHexesToNewOrigin(rotatedCubeList, (targetNode.cubeQ, targetNode.cubeS, targetNode.cubeR)); |
|
|
|
for (int i = 0; i < trueCubeList.Count; i++) |
|
|
|
{ |
|
|
|
MapUnity endNode = null; |
|
|
|
endNode = getNodeTools.getNodeWithCube(trueCubeList[i].Item1, trueCubeList[i].Item2, trueCubeList[i].Item3); |
|
|
|
|
|
|
|
if (endNode != null) |
|
|
|
{ |
|
|
|
// endNode.switchColor(Name.stringColorToint(cardOriginalData.nodesColor[i]));
|
|
|
|
if (endNode.whoColour != Name.stringColorToint(cardOriginalData.nodesColor[i]) && endNode.whoColour != 6) |
|
|
|
{ |
|
|
|
mapColorCount[Name.stringColorToint(cardOriginalData.nodesColor[i])] += 1; |
|
|
|
mapColorCount[endNode.whoColour] -= 1; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return mapColorCount; |
|
|
|
} |
|
|
|
//预览涂色颜色
|
|
|
|
public void PreviewSwitchColor(CardOriginalData cardOriginalData, MapUnity targetNode) |
|
|
|
{ |
|
|
|
//1red,2white,3blue,4green,5black
|
|
|
|
|
|
|
|
ZeroToFiveCircularCounter counter = new ZeroToFiveCircularCounter(); |
|
|
|
int offset = 3; |
|
|
|
Vector3 face = targetNode.transform.position - GameManager.Instance.playerOn.transform.position; |
|
|
|
if (!targetNode.Equals(GameManager.Instance.playerOn)) |
|
|
|
{ |
|
|
|
float euler = Vector3.SignedAngle(-GameManager.Instance.playerOn.transform.forward, face, GameManager.Instance.playerOn.transform.up) + 180; |
|
|
|
offset = getEulerOffset(offset, euler); |
|
|
|
} |
|
|
|
if (!cardOriginalData.nodesColor[0].Equals(Name.none)) |
|
|
|
{ |
|
|
|
targetNode.switchPreColor(Name.stringColorToint(cardOriginalData.nodesColor[0])); |
|
|
|
} |
|
|
|
// Debug.Log("offset是" + offset);
|
|
|
|
float euler = Vector3.SignedAngle(-GameManager.Instance.playerOn.transform.forward, face, GameManager.Instance.playerOn.transform.up) + 180; |
|
|
|
List<(int, int, int)> cubeList = new List<(int, int, int)>(); |
|
|
|
int intEuler = (int)euler; |
|
|
|
for (int i = 0; i < cardOriginalData.nodesMark.Length; i++) |
|
|
|
{ |
|
|
|
MapUnity endNode = targetNode; |
|
|
|
try |
|
|
|
{ |
|
|
|
string[] marks = cardOriginalData.nodesMark[i].Split("_"); |
|
|
|
for (int j = 0; j < marks.Length; j++) |
|
|
|
{ |
|
|
|
MapUnity oldNode = endNode; |
|
|
|
endNode = oldNode.unitPool[counter.Add(offset, int.Parse(marks[j]))]; |
|
|
|
} |
|
|
|
if (endNode != null) |
|
|
|
{ |
|
|
|
// endNode.switchColor(Name.stringColorToint(cardOriginalData.nodesColor[i + 1]));
|
|
|
|
endNode.switchPreColor(Name.stringColorToint(cardOriginalData.nodesColor[i + 1])); |
|
|
|
} |
|
|
|
string[] marks = cardOriginalData.nodesMark[i].Split("_"); |
|
|
|
(int q, int s, int y) = MathTool.AxialToCube(int.Parse(marks[0]), int.Parse(marks[1])); |
|
|
|
cubeList.Add((q, s, y)); |
|
|
|
} |
|
|
|
catch (Exception e) |
|
|
|
{ |
|
|
|
{ } |
|
|
|
} |
|
|
|
List<(int, int, int)> rotatedCubeList = new List<(int, int, int)>(); |
|
|
|
rotatedCubeList = MathTool.RotateCoordinates(cubeList, intEuler); |
|
|
|
foreach (var tuple in rotatedCubeList) |
|
|
|
{ |
|
|
|
MapUnity endNode = null; |
|
|
|
endNode = getNodeTools.getNodeWithCube(tuple.Item1, tuple.Item2, tuple.Item3); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
List<(int, int, int)> trueCubeList = new List<(int, int, int)>(); |
|
|
|
trueCubeList = MathTool.TranslateHexesToNewOrigin(rotatedCubeList, (targetNode.cubeQ, targetNode.cubeS, targetNode.cubeR)); |
|
|
|
for (int i = 0; i < trueCubeList.Count; i++) |
|
|
|
{ |
|
|
|
MapUnity endNode = null; |
|
|
|
endNode = getNodeTools.getNodeWithCube(trueCubeList[i].Item1, trueCubeList[i].Item2, trueCubeList[i].Item3); |
|
|
|
|
|
|
|
if (endNode != null) |
|
|
|
{ |
|
|
|
//endNode.switchColor(Name.stringColorToint(cardOriginalData.nodesColor[i]));
|
|
|
|
endNode.switchPreColor(Name.stringColorToint(cardOriginalData.nodesColor[i])); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
private int getEulerOffset(int offset, float euler) |
|
|
|
{ |
|
|
|
|