Beispiel #1
0
    public void CreateLevel(SLevel sLevel)
    {
        Dimensions = sLevel.Dimensions;

        var distance = 1.15f;

        var resultImage = FindObjectOfType <ResultImage>();

        RemoveChildrensUnderGameObject(this.gameObject);
        RemoveChildrensUnderGameObject(resultImage.gameObject);

        var tiles = new List <Tile>();

        var tileByCoordinates = sLevel.Tiles.ToDictionary(x => x.Coordinate);

        var maxX = (int)sLevel.Dimensions.x;
        var maxY = (int)sLevel.Dimensions.y;

        ((RectTransform)resultImage.transform).sizeDelta = Dimensions * (10 * distance) + new Vector2(10, 10);

        for (int i = 0; i < maxX; i++)
        {
            for (int j = 0; j < maxY; j++)
            {
                var prefab = Resources.Load("Tile/Tile") as GameObject;

                var tempobj = (GameObject)Instantiate(prefab, Vector3.zero, Quaternion.Euler(0, 0, 0));
                var tile    = tempobj.GetComponent <Tile>();
                tile.X = i;
                tile.Y = j;

                tile.colorSchema = Schema;

                var coordinate = new Vector2(i, j);
                if (tileByCoordinates.ContainsKey(coordinate))
                {
                    tile.InitializeStates(tileByCoordinates[coordinate].State, tileByCoordinates[coordinate].EndState);
                }
                else
                {
                    tile.InitializeStates(0, 0);
                }

                tiles.Add(tile);

                tempobj.name = (i + 1) + "-" + (j + 1);
                tempobj.transform.SetParent(gameObject.transform);
                tempobj.transform.localPosition = ((sLevel.Dimensions - new Vector2(1, 1)) / 2 - new Vector2(i, j)) * distance;

                var previewTilePrefab = Resources.Load("GUI/PreviewTile") as GameObject;
                var previewTile       = (GameObject)Instantiate(previewTilePrefab, Vector3.zero, Quaternion.Euler(0, 0, 0));
                previewTile.transform.SetParent(resultImage.transform);

                var rtf = (RectTransform)previewTile.transform;
                rtf.localScale         = new Vector3(1, 1, 1);
                rtf.anchoredPosition3D = ((sLevel.Dimensions - new Vector2(1, 1)) / 2 - new Vector2(i, j)) * (10 * distance);
                previewTile.GetComponent <RawImage>().color = Schema[tileByCoordinates[coordinate].EndState];
                previewTile.name = (i + 1) + "-" + (j + 1);
            }
        }

        var constraints = GetComponent <LevelConstraints>();

        constraints.Constraints = sLevel.Constraints;

        foreach (var tile in tiles)
        {
            tile.InitializeNeighbours(tiles, maxX, maxY);
        }
    }
Beispiel #2
0
 public void InitRoom()
 {
     currentRoom = roomsList[level];
     roomManager.InitRoom(currentRoom.roomPrefab, currentRoom.monsterConfiguration);
 }
Beispiel #3
0
    public void CreateLevel(SLevel sLevel)
    {
        Dimensions = sLevel.Dimensions;

        // var distance = 1.15f;

        var previewImage = FindObjectOfType <ResultImage>().GetComponentInChildren <GridLayoutGroup>();

        RemoveChildrensUnderGameObject(this.gameObject);
        RemoveChildrensUnderGameObject(previewImage.gameObject);

        var tiles = new List <Tile>();

        var tileByCoordinates = sLevel.Tiles.ToDictionary(x => x.Coordinate);

        var maxX = (int)sLevel.Dimensions.x;
        var maxY = (int)sLevel.Dimensions.y;

        // ((RectTransform)resultImage.transform).sizeDelta = Dimensions * (10 * distance) + new Vector2(10, 10);
#if UNITY_ANDROID
        var maxHeight   = 550;
        var minCellSize = 100;
#else
        var maxHeight   = 450;
        var minCellSize = 80;
#endif

        var totalCell = maxHeight / maxY;

        if (totalCell > minCellSize)
        {
            totalCell = minCellSize;
        }

        var spacing  = totalCell * 0.1f;
        var cellSize = totalCell - spacing;

        var layout = GetComponent <GridLayoutGroup>();
        layout.constraintCount = maxX;
        layout.cellSize        = new Vector2(cellSize, cellSize);
        layout.spacing         = new Vector2(spacing, spacing);

        var resultImageSize = 80 * 0.9f;

        var exampleCell = resultImageSize / (float)(Math.Max(maxY, maxX));

        var exampleSpace    = exampleCell * 0.20f;
        var exampleCellSize = exampleCell - exampleSpace;

        previewImage.cellSize        = new Vector2(exampleCellSize, exampleCellSize);
        previewImage.spacing         = new Vector2(exampleSpace, exampleSpace);
        previewImage.constraintCount = maxX;

        for (int i = 0; i < maxX; i++)
        {
            for (int j = 0; j < maxY; j++)
            {
                var prefab = Resources.Load("Level/Tile/TileNew") as GameObject;

                var tempobj = Instantiate(prefab, Vector3.zero, Quaternion.Euler(0, 0, 0));
                var tile    = tempobj.GetComponent <Tile>();
                tile.X = i;
                tile.Y = j;

                tile.colorSchema = Schema;

                var coordinate = new Vector2(i, j);
                if (tileByCoordinates.ContainsKey(coordinate))
                {
                    tile.InitializeStates(tileByCoordinates[coordinate].State, tileByCoordinates[coordinate].EndState);
                }
                else
                {
                    tile.InitializeStates(0, 0);
                }

                tiles.Add(tile);

                tempobj.name = (i + 1) + "-" + (j + 1);
                tempobj.transform.SetParent(gameObject.transform);
                tempobj.transform.localPosition = new Vector3(0, 0, 0);
                tempobj.transform.localScale    = new Vector3(1, 1, 1);

                tempobj.GetComponentInChildren <TileVisuals>().SetSize(new Vector2(cellSize, cellSize));
                // tempobj.transform.localPosition =  ((sLevel.Dimensions - new Vector2(1,1)) / 2 - new Vector2(i,j)) * distance;

                var previewTilePrefab = Resources.Load("Level/Buttons/ShowImageTile") as GameObject;
                var previewTile       = Instantiate(previewTilePrefab, Vector3.zero, Quaternion.Euler(0, 0, 0));
                previewTile.transform.SetParent(previewImage.transform);
                previewTile.transform.localScale    = new Vector3(1, 1, 1);
                previewTile.transform.localPosition = new Vector3(0, 0, 0);
                previewTile.name = (i + 1) + "-" + (j + 1);
                previewTile.GetComponent <RawImage>().color = Schema[tileByCoordinates[coordinate].EndState];



                /*var rtf = (RectTransform)previewTile.transform;
                 * rtf.localScale = new Vector3(1,1,1);
                 * rtf.anchoredPosition3D = ((sLevel.Dimensions - new Vector2(1,1)) / 2 - new Vector2(i,j)) * (10 * distance);
                 * previewTile.GetComponent<RawImage>().color = Schema[tileByCoordinates[coordinate].EndState];
                 * previewTile.name = (i + 1) + "-" + (j + 1);*/
            }
        }

        // var constraints = GetComponent<LevelConstraints>();
        // constraints.Constraints = sLevel.Constraints;

        foreach (var tile in tiles)
        {
            tile.InitializeNeighbours(tiles, maxX, maxY);
        }
    }