|
|
|
@ -6,10 +6,12 @@ using System.Text; |
|
|
|
using System.Text.RegularExpressions; |
|
|
|
using Newtonsoft.Json; |
|
|
|
using UnityEngine; |
|
|
|
using UnityEngine.Rendering; |
|
|
|
using static UnityEngine.Rendering.DebugUI; |
|
|
|
|
|
|
|
public class CardManager : Singleton<CardManager> |
|
|
|
{ |
|
|
|
public Dictionary<HashSet<CoordinateColorPair>, Sprite> cardImageMap = new Dictionary<HashSet<CoordinateColorPair>, Sprite>(); |
|
|
|
private void Start() |
|
|
|
{ |
|
|
|
DontDestroyOnLoad(this.gameObject); |
|
|
|
@ -191,4 +193,82 @@ public class CardManager : Singleton<CardManager> |
|
|
|
} |
|
|
|
return key; |
|
|
|
} |
|
|
|
|
|
|
|
public static void setCardImageTest(CardOriginalData cardOriginalData, float euler, MapUnity currentNode, CardEntity cardEntity) |
|
|
|
{ |
|
|
|
if (CardManager.Instance.cardImageMap.TryGetValue(cardOriginalData.cardImageMark, out Sprite sprite)) |
|
|
|
{ |
|
|
|
cardEntity.cardImage.sprite = sprite; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
createCardImage(cardOriginalData, euler, currentNode); |
|
|
|
setCardImageTest(cardOriginalData, euler, currentNode, cardEntity); |
|
|
|
} |
|
|
|
} |
|
|
|
public static void createCardImageMap() |
|
|
|
{ |
|
|
|
MapUnity currentNode = GameManager.Instance.ToolX[3].Y[3]; |
|
|
|
foreach (CardOriginalData cardOriginalData in CardOriginalDataList.Instance.existCardOriginalDataList.Values) |
|
|
|
{ |
|
|
|
Debug.Log("createcardimage!"); |
|
|
|
createCardImage(cardOriginalData, 90.0f, currentNode); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
public static void createCardImage(CardOriginalData cardOriginalData, float euler, MapUnity currentNode) |
|
|
|
{ |
|
|
|
for (int i = 0; i < GameManager.Instance.ToolX.Count; i++) |
|
|
|
{ |
|
|
|
for (int j = 0; j < GameManager.Instance.ToolX[i].Y.Count; j++) |
|
|
|
{ |
|
|
|
GameManager.Instance.ToolX[i].Y[j].whoColour=Name.NodeColor.White; |
|
|
|
} |
|
|
|
} |
|
|
|
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++) |
|
|
|
{ |
|
|
|
|
|
|
|
try |
|
|
|
{ |
|
|
|
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); |
|
|
|
List<(int, int, int)> trueCubeList = new List<(int, int, int)>(); |
|
|
|
trueCubeList = MathTool.TranslateHexesToNewOrigin(rotatedCubeList, (currentNode.cubeQ, currentNode.cubeS, currentNode.cubeR)); |
|
|
|
for (int i = 0; i < trueCubeList.Count; i++) |
|
|
|
{ |
|
|
|
MapUnity endNode = new MapUnity(); |
|
|
|
endNode = getNodeTools.getToolNodeWithCube(trueCubeList[i].Item1, trueCubeList[i].Item2, trueCubeList[i].Item3); |
|
|
|
if (endNode != null) |
|
|
|
{ |
|
|
|
Debug.Log("Ⱦɫ³É¹¦" + cardOriginalData.nodesColor[i]); |
|
|
|
endNode.switchColor(Name.stringColorToint(cardOriginalData.nodesColor[i])); |
|
|
|
//endNode.influenced = true;
|
|
|
|
} |
|
|
|
} |
|
|
|
RenderTexture renderTexture = new RenderTexture(512, 512, 24); |
|
|
|
Camera renderCamera = MapManager.Instance.cameraObject.GetComponent<Camera>(); |
|
|
|
renderCamera.targetTexture = renderTexture; |
|
|
|
Texture2D texture = new Texture2D(renderTexture.width, renderTexture.height, TextureFormat.ARGB32, false); |
|
|
|
RenderTexture.active = renderCamera.targetTexture; |
|
|
|
renderCamera.Render(); |
|
|
|
texture.ReadPixels(new Rect(0, 0, renderTexture.width, renderTexture.height), 0, 0); |
|
|
|
texture.Apply(); |
|
|
|
RenderTexture.active = null; |
|
|
|
Material material = new Material(Shader.Find("Standard")); |
|
|
|
material.mainTexture = renderTexture; |
|
|
|
Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f)); |
|
|
|
CardManager.Instance.cardImageMap.Add(cardOriginalData.cardImageMark, sprite); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|