예제 #1
0
    public void SpawnGem()
    {
        HexaBlock spawnBlock = GetBlock(spawnPoint.x, spawnPoint.y);

        if (spawnBlock && spawnBlock.blockType == BlockType.EMPTY)
        {
            spawnBlock.SetBlockStatus(BlockStatus.BLOCK, spawnPoint.x, spawnPoint.y);
            blockBoard[spawnPoint.x, spawnPoint.y] = spawnBlock.blockType;
        }
    }
예제 #2
0
    public void Generate(MapInfo mapInfo)
    {
        int xSize = mapInfo.mapSize.x;
        int ySize = mapInfo.mapSize.y;

        blockBoard = new BlockType[xSize, ySize];

        string[] blockInfos;
        blockInfos = mapInfo.mapInfoStr.Split(',');

        // 적합성 체크
        if (blockInfos.Length != xSize * ySize)
        {
            // 잘못된 맵 정보
            Debug.Log("MapInfo Error -----------" + blockInfos.Length + "!=" + xSize * ySize);
            return;
        }

        GameObject bgBlockParent = GameObject.Find("BgBlocks");

        // 블록 생성
        for (int x = 0; x < xSize; x++)
        {
            for (int y = 0; y < ySize; y++)
            {
                int blockNum = x + y * xSize;

                if (blockInfos[blockNum] == "0")
                {
                    blockBoard[x, y] = BlockType.EMPTY;
                    continue;
                }

                float yPosModifier = 0;
                if (x % 2 == 0)
                {
                    yPosModifier = -0.5f;
                }

                bgBlocks.Add(Instantiate(bgBlockPrefap, new Vector3(x * 0.75f, -y + yPosModifier, 0), Quaternion.identity, bgBlockParent.transform));

                HexaBlock block = Instantiate(hexaBlockPrefap, new Vector3(x * 0.75f, -y + yPosModifier, 0), Quaternion.identity, transform).GetComponent <HexaBlock>();
                block.SetBlockStatus((BlockStatus)int.Parse(blockInfos[blockNum]), x, y);

                hexaBlocks.Add(block);

                blockBoard[x, y] = block.blockType;
            }
        }
    }