protected override void Execute()
 {
     if (!GenerateableTileLibrary.IsTile(gameObject.name))
     {
         Abort();
     }
 }
    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);
    }
Пример #4
0
 private static GenerateableTileLibrary GetInstance()
 {
     if (instance == null)
     {
         instance = Resources.Load <GenerateableTileLibrary>(GENERATABLE_TILE_LIBRARY_PATH);
     }
     return(instance);
 }
    protected override void Execute()
    {
        LevelSaveData levelSaveData = deserializedLevelSaveDataStatus.LevelSaveData;

        foreach (TileSaveData nonStandardTileSaveData in levelSaveData.NonStandardTilesSaveData)
        {
            GameObject prefab   = GenerateableTileLibrary.GetGeneratableTileNode(nonStandardTileSaveData.TileType).Prefab;
            Vector2    position = LevelEditorGridHelper.GridToNodePosition(nonStandardTileSaveData.GridPosition);
            Quaternion rotation = nonStandardTileSaveData.Rotation;

            GameObject nonStandardTile = Object.Instantiate(prefab, position, rotation);

            Vector2 size = new Vector2(LevelEditorGridNodeSizeLibrary.Instance.NodeSize, LevelEditorGridNodeSizeLibrary.Instance.NodeSize);
            nonStandardTile.transform.localScale = size;
            nonStandardTile.transform.SetParent(levelContainerStatus.LevelContainer);
        }
    }
Пример #6
0
    private static bool CheckTileTypeUserGenerated(TileType tileType)
    {
        GenerateableTileNode generatableTile = GenerateableTileLibrary.GetGeneratableTileNode(tileType);

        return(generatableTile.UserGenerated);
    }