コード例 #1
0
ファイル: PlayerUnit.cs プロジェクト: hsinpa/Danmaku
    private void CheckPlayerEvent()
    {
        var bspTile = tilemapBuilder.FindRoomByPosition(transform.transform.position);

        if (bspTile.bspComponent != this.currentBSPTile.bspComponent)
        {
            this.currentBSPTile = bspTile;
            if (OnChangeRoom != null)
            {
                OnChangeRoom(bspTile);
            }
        }
    }
コード例 #2
0
ファイル: LevelManager.cs プロジェクト: hsinpa/Danmaku
    private void OnPlayerEnterRoom(BSPTile bspTile)
    {
        if (bspTile.bspComponent == null)
        {
            return;
        }

        if (typeof(BSPRoom) == bspTile.bspComponent.GetType())
        {
            waveIndex = -1;
            var room = (BSPRoom)bspTile.bspComponent;
            StartCoroutine(Spawn(1, PrepareWave(), room));
        }
    }
コード例 #3
0
ファイル: TileMapBuilder.cs プロジェクト: hsinpa/Danmaku
    private void RenderToWorldCanvas(Vector2Int offset, Vector2Int dungeonSize, BSPTile[,] mapDetailData)
    {
        int index = 0;

        TileInfo wallTiles = new TileInfo("1");


        for (int x = 0; x < dungeonSize.x; x++)
        {
            for (int y = 0; y < dungeonSize.y; y++)
            {
                //Debug.Log( x +", " + y +","+ mapData[x, y] +", " + (mapData[x, y] == null));

                if (mapDetailData[x, y].bspComponent == null)
                {
                    mapDetailData[x, y] = new BSPTile(x, y, x + map_offset.x, y + map_offset.y, "1");
                }

                var tileSTP = tileSet.GetTile(mapDetailData[x, y].tile_id);

                switch (mapDetailData[x, y].tile_id)
                {
                case "0":
                    break;

                case "1":
                    wallTiles.Add(x + offset.x, y + offset.y, tileSTP.GetSprite());
                    break;
                }

                //GameObject p = Instantiate(tilePrefab);
                //p.transform.position = new Vector2(x, y) + offset + tile_offset;
                //SpriteRenderer sRenderer = p.GetComponent<SpriteRenderer>();
                //var tileSTP = tileSet.GetTile(mapData[x, y]);

                //if (tileSTP != null) {
                //    sRenderer.sprite = tileSTP.GetSprite();
                //}

                index++;
            }
        }

        RenderTileInfo(wallTiles, TileType.Wall);
    }
コード例 #4
0
ファイル: TileMapBuilder.cs プロジェクト: hsinpa/Danmaku
    public void RenderTile(Vector2Int dungeonSize, List <BSPMapComponent> bspComponents)
    {
        map_offset = new Vector2Int(Mathf.RoundToInt(-dungeonSize.x), Mathf.RoundToInt(-dungeonSize.y));

        dungeonFullSize = new Vector2Int(dungeonSize.x * 2, dungeonSize.y * 2);
        //1 = wall , 0 = empty
        mapDetailData = new BSPTile[dungeonFullSize.x, dungeonFullSize.y];

        FloodFillMap(dungeonFullSize, map_offset);

        for (int i = 0; i < bspComponents.Count; i++)
        {
            for (float x = bspComponents[i].spaceRect.xMin; x < bspComponents[i].spaceRect.xMax; x++)
            {
                for (float y = bspComponents[i].spaceRect.yMin; y < bspComponents[i].spaceRect.yMax; y++)
                {
                    int xIndex = Mathf.RoundToInt(dungeonSize.x + x);
                    int yIndex = Mathf.RoundToInt(dungeonSize.y + y);

                    mapDetailData[xIndex, yIndex] = new BSPTile(xIndex, yIndex, xIndex + map_offset.x, yIndex + map_offset.y, "0");
                    mapDetailData[xIndex, yIndex].bspComponent = bspComponents[i];

                    if (bspComponents[i].GetType() == typeof(BSPRoom))
                    {
                        BSPRoom room = (BSPRoom)bspComponents[i];
                        for (int d = 0; d < room.doorPosition.Count; d++)
                        {
                            Vector2Int offsetPos = room.doorPosition[d] + this.bspMap.dungeonSize;
                            //Debug.Log(offsetPos.x +", "+ offsetPos.y);
                            //mapData[offsetPos.x, offsetPos.y] = "1";
                        }
                    }
                }
            }
        }

        RenderToWorldCanvas(map_offset, dungeonFullSize, mapDetailData);
    }