예제 #1
0
    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();
    }
예제 #2
0
 public void Insert(OutlineTile tile)
 {
     tiles.Add(tile);
 }
예제 #3
0
    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);
    }