public void UpdateLInk() { OutlineTile tile1 = tiles[0]; foreach (var tile2 in tiles) { if (tile1.transform.position == tile2.transform.position + new Vector3(1, 0, 0)) { tile1.GetComponent <OutlineTile>().isConnected.Add("left"); tile2.GetComponent <OutlineTile>().isConnected.Add("right"); } else if (tile1.transform.position == tile2.transform.position + new Vector3(-1, 0, 0)) { tile1.GetComponent <OutlineTile>().isConnected.Add("right"); tile2.GetComponent <OutlineTile>().isConnected.Add("left"); } else if (tile1.transform.position == tile2.transform.position + new Vector3(0, 1, 0)) { tile1.GetComponent <OutlineTile>().isConnected.Add("down"); tile2.GetComponent <OutlineTile>().isConnected.Add("up"); } else if (tile1.transform.position == tile2.transform.position + new Vector3(0, -1, 0)) { tile1.GetComponent <OutlineTile>().isConnected.Add("up"); tile2.GetComponent <OutlineTile>().isConnected.Add("down"); } tile1 = tile2; } if (tiles[0].transform.position == tiles[tiles.Count - 1].transform.position + new Vector3(1, 0, 0)) { tiles[0].GetComponent <OutlineTile>().isConnected.Add("left"); tiles[tiles.Count - 1].GetComponent <OutlineTile>().isConnected.Add("right"); } else if (tiles[0].transform.position == tiles[tiles.Count - 1].transform.position + new Vector3(-1, 0, 0)) { tiles[0].GetComponent <OutlineTile>().isConnected.Add("right"); tiles[tiles.Count - 1].GetComponent <OutlineTile>().isConnected.Add("left"); } else if (tiles[0].transform.position == tiles[tiles.Count - 1].transform.position + new Vector3(0, 1, 0)) { tiles[0].GetComponent <OutlineTile>().isConnected.Add("down"); tiles[tiles.Count - 1].GetComponent <OutlineTile>().isConnected.Add("up"); } else if (tiles[0].transform.position == tiles[tiles.Count - 1].transform.position + new Vector3(0, -1, 0)) { tiles[0].GetComponent <OutlineTile>().isConnected.Add("up"); tiles[tiles.Count - 1].GetComponent <OutlineTile>().isConnected.Add("down"); } tiles[0].isConnected.Reverse(); }
public void Insert(OutlineTile tile) { tiles.Add(tile); }
public Puzzle FileToPuzzle(string src) { writingPuzzle = Instantiate(puzzle).GetComponent <Puzzle>(); var file = File.OpenRead("Assets/Puzzles/" + src); StreamReader sr = new StreamReader(file); var json = JSON.Parse(sr.ReadToEnd()); sr.Close(); file.Close(); writingOutline = Instantiate(outline).GetComponent <Outline>(); writingOutline.transform.SetParent(writingPuzzle.transform); foreach (var iter in json["outline"]) { OutlineTile tmp = Instantiate(outlineTile).GetComponent <OutlineTile>(); tmp.transform.localPosition = new Vector2(iter.Value["x"], iter.Value["y"]); tmp.position = tmp.transform.localPosition; tmp.transform.SetParent(writingOutline.transform); writingOutline.Insert(tmp); } writingOutline.UpdateLInk(); writingOutline.UpdateShape(); writingPuzzle.outline = writingOutline; foreach (var blocks in json["blocks"]) { writingBlock = Instantiate(block).GetComponent <Block>(); Color blockColor = blockColors[blockColorIndex++]; if (blockColorIndex > blockColors.Count - 1) { blockColorIndex = 0; } writingBlock.transform.SetParent(writingPuzzle.transform); foreach (var tiles in blocks.Value) { Tile tmp = Instantiate(tile).GetComponent <Tile>(); tmp.transform.localPosition = new Vector2(tiles.Value["x"], tiles.Value["y"]); tmp.position = tmp.transform.localPosition; tmp.GetComponent <SpriteRenderer>().color = blockColor; tmp.transform.SetParent(writingBlock.transform); writingBlock.Insert(tmp); } writingBlock.UpdateLink(); writingBlock.UpdateShape(); writingPuzzle.blocks.Add(writingBlock); } return(writingPuzzle); }