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)
{
int x = 0;
Debug.Log("索引坐标:"+locationX + locationY);
MapUnity mapUnity = null;
//计算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)
{
@ -676,23 +688,23 @@ public class getNodeTools
}
List<(int, int, int)> rotatedCubeList = new List<(int, int, int)>();
rotatedCubeList = MathTool.RotateCoordinates(cubeList, intEuler);
foreach (var tuple in rotatedCubeList)
/* foreach (var tuple in rotatedCubeList)
{
MapUnity endNode = new MapUnity();
endNode = 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);
}
}*/
List<(int, int, int)> trueCubeList = new List<(int, int, int)>();
trueCubeList = MathTool.TranslateHexesToNewOrigin(rotatedCubeList, (currentNode.cubeQ, currentNode.cubeS, currentNode.cubeR));
foreach (var tuple in trueCubeList)
{
MapUnity endNode = new MapUnity();
MapUnity endNode = null;
endNode = getNodeWithCube(tuple.Item1, tuple.Item2, tuple.Item3);
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的X是" + endNode.locationX + "endNode的Y是" + endNode.locationY);
Debug.Log("endNode的Q是"+ tuple.Item1 + "endNode的S是" + tuple.Item2 + "endNode的R是" + tuple.Item3);
if (endNode != null)
{
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;
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)
{

Loading…
Cancel
Save