Browse Source

涂色预览范围修正

pull/75/head
45 1 year ago
parent
commit
ee024877bc
  1. 34
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs
  2. 143
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs

34
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs

@ -122,17 +122,29 @@ public class getNodeTools
public static MapUnity LocationToGetNode(int locationX, int locationY) public static MapUnity LocationToGetNode(int locationX, int locationY)
{ {
int x = 0; int x = 0;
Debug.Log("索引坐标:"+locationX + locationY);
MapUnity mapUnity = null;
//计算node在列表的第几位 //计算node在列表的第几位
for(int i=0;i< GameManager .Instance .X[locationY ].Y.Count;i++) try
{ {
if(GameManager.Instance.X[locationY].Y[i].locationX == locationX) for (int i = 0; i < GameManager.Instance.X[locationY].Y.Count; i++)
{ {
x = i;
break;
}
if (GameManager.Instance.X[locationY].Y[i].locationX == locationX)
{
x = i;
mapUnity = GameManager.Instance.X[locationY].Y[x];
break;
}
}
}
catch (Exception e)
{
mapUnity=null;
} }
return GameManager.Instance.X[locationY].Y[x];
return mapUnity;
} }
public static MapUnity getToolNodeWithCube(int q, int s, int r) public static MapUnity getToolNodeWithCube(int q, int s, int r)
{ {
@ -676,23 +688,23 @@ public class getNodeTools
} }
List<(int, int, int)> rotatedCubeList = new List<(int, int, int)>(); List<(int, int, int)> rotatedCubeList = new List<(int, int, int)>();
rotatedCubeList = MathTool.RotateCoordinates(cubeList, intEuler); rotatedCubeList = MathTool.RotateCoordinates(cubeList, intEuler);
foreach (var tuple in rotatedCubeList) /* foreach (var tuple in rotatedCubeList)
{ {
MapUnity endNode = new MapUnity(); MapUnity endNode = new MapUnity();
endNode = getNodeWithCube(tuple.Item1, tuple.Item2, tuple.Item3); endNode = getNodeWithCube(tuple.Item1, tuple.Item2, tuple.Item3);
Debug.Log("rotatedNode的X是" + endNode.locationX + "rotatedNode的Y是" + endNode.locationY); 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的Q是" + tuple.Item1 + "rotatedNode的S是" + tuple.Item2 + "rotatedNode的R是" + tuple.Item3);
} }*/
List<(int, int, int)> trueCubeList = new List<(int, int, int)>(); List<(int, int, int)> trueCubeList = new List<(int, int, int)>();
trueCubeList = MathTool.TranslateHexesToNewOrigin(rotatedCubeList, (currentNode.cubeQ, currentNode.cubeS, currentNode.cubeR)); trueCubeList = MathTool.TranslateHexesToNewOrigin(rotatedCubeList, (currentNode.cubeQ, currentNode.cubeS, currentNode.cubeR));
foreach (var tuple in trueCubeList) foreach (var tuple in trueCubeList)
{ {
MapUnity endNode = new MapUnity(); MapUnity endNode = null;
endNode = getNodeWithCube(tuple.Item1, tuple.Item2, tuple.Item3); endNode = getNodeWithCube(tuple.Item1, tuple.Item2, tuple.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); Debug.Log("endNode的Q是"+ tuple.Item1 + "endNode的S是" + tuple.Item2 + "endNode的R是" + tuple.Item3);
if (endNode != null) if (endNode != null)
{ {
cardEntity.influencePreviewPool.Add(endNode); cardEntity.influencePreviewPool.Add(endNode);

143
ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs

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

Loading…
Cancel
Save