protected override void Execute()
    {
        string levelFileName = StringHelper.ConvertToXMLCompatible(levelNameStatus.Name);

        LevelSaveData levelSaveData = SerializeHelper.Deserialize <LevelSaveData>(LevelDataPath.Path + levelFileName);

        List <Vector2> standardTileGridPositions = levelSaveData.StandardTileGridPositions;

        List <Vector2> nonStandardTileGridPositions = new List <Vector2>();

        foreach (TileSaveData tileSaveData in levelSaveData.NonStandardTilesSaveData)
        {
            GenerateableTileNode generateableTileNode = GenerateableTileLibrary.GetGeneratableTileNode(tileSaveData.TileType);
            if (!generateableTileNode.UserGenerated)
            {
                continue;
            }
            nonStandardTileGridPositions.Add(tileSaveData.GridPosition);
        }

        List <Vector2> userGeneratedTileGridPositions = standardTileGridPositions.Concat(nonStandardTileGridPositions).ToList();

        TileGenerator.SpawnTiles(userGeneratedTileGridPositions);

        List <LevelObjectSaveData> levelObjectsSaveData = levelSaveData.LevelObjectsSaveData;

        SpawnLevelObjects(levelObjectsSaveData);
    }
    private GameObject InstantiateRectangleStandardTile(List <Vector2> rectangle, Transform parent)
    {
        Vector2 centerGridPosition = rectangle.Center();
        Vector2 startGridPosition  = rectangle.Lowest();
        Vector2 endGridPosition    = rectangle.Highest();

        Vector2 centerWorldPosition = LevelEditorGridHelper.GridToNodePosition(centerGridPosition);

        Vector2 startWorldPosition = LevelEditorGridHelper.GridToNodePosition(startGridPosition);
        Vector2 endWorldPosition   = LevelEditorGridHelper.GridToNodePosition(endGridPosition);
        Vector2 offset             = VectorHelper.Abs(endWorldPosition - startWorldPosition);

        float nodeSize = LevelEditorGridNodeSizeLibrary.Instance.NodeSize;

        float   width  = offset.x + nodeSize;
        float   height = offset.y + nodeSize;
        Vector2 scale  = new Vector2(width, height);

        GenerateableTileNode generatableTileNode = GenerateableTileLibrary.GetGeneratableTileNode(TileType.Standard);
        GameObject           standardTile        = Object.Instantiate(generatableTileNode.Prefab, centerWorldPosition, new Quaternion(), parent);

        standardTile.transform.localScale = scale;

        return(standardTile);
    }
Ejemplo n.º 3
0
    private static GenerateableTileNode GetGeneratableTileNode(Vector2 gridPosition)
    {
        GenerateableTileNode        matchingTileGeneratorNode = null;
        List <GenerateableTileNode> tileEditorNodes           = GenerateableTileLibrary.GenerateableTiles;

        for (int i = tileEditorNodes.Count - 1; i >= 0; i--)
        {
            GenerateableTileNode tileGeneratorNode = tileEditorNodes[i];
            bool falseConditionFound = tileGeneratorNode.TileConditions.Exists(x => !x.Check(gridPosition));
            if (!falseConditionFound)
            {
                matchingTileGeneratorNode = tileGeneratorNode;
                break;
            }
        }

        return(matchingTileGeneratorNode);
    }
Ejemplo n.º 4
0
    private static void GenerateTile(Vector2 gridPosition)
    {
        GenerateableTileNode matchingTileGeneratorNode = GetGeneratableTileNode(gridPosition);

        Tile tile = GetTile(matchingTileGeneratorNode.Prefab, matchingTileGeneratorNode.TileType, gridPosition);

        if (tile.TileType == TileType.Empty)
        {
            if (TileGrid.Instance.ContainsTile(gridPosition))
            {
                TileGrid.Instance.RemoveTile(gridPosition);
            }
        }
        else
        {
            TileGrid.Instance.SetTile(gridPosition, tile);

            foreach (TileAction tileAction in matchingTileGeneratorNode.TileActions)
            {
                tileAction.Do(gridPosition);
            }
        }
    }
Ejemplo n.º 5
0
    private static bool CheckTileTypeUserGenerated(TileType tileType)
    {
        GenerateableTileNode generatableTile = GenerateableTileLibrary.GetGeneratableTileNode(tileType);

        return(generatableTile.UserGenerated);
    }