private async void SetupWallIllusionSidesAsync(WallIlusionInitializer initializer, int?randomDecoration, ITile tile) { await sidesCreator.SetupSidesAwaitableAsync(initializer, currentGridPosition, tile); var trickSides = MapDirection.Sides.Except(initializer.WallSides.Select(x => x.Face)) .Select(x => { var decoration = randomDecoration != null ? builder.WallTextures[randomDecoration.Value] : null; var res = new TileSide(x); res.Renderer = builder.Factories.RenderersSource.GetWallIllusionTileSideRenderer(res, builder.WallTexture, decoration); return(res); }); initializer.WallSides = initializer.WallSides .Concat(trickSides) .ToArray(); }
public Tile GetTile(TrickTileData t) { SetMinimapTile(Color.Green); var trickTileInitializer = new WallIlusionInitializer { Imaginary = t.IsImaginary, Open = t.IsOpen, RandomDecoration = t.RandomDecoration, }; var res = new WallIlusion(trickTileInitializer); SetupWallIllusionSidesAsync(trickTileInitializer, t.RandomDecoration, res); res.Renderer = builder.Factories.RenderersSource.GetWallIllusionTileRenderer(res, builder.WallTexture); initializer = trickTileInitializer; return(res); }
public WallIlusion(WallIlusionInitializer initalizer) : base(initalizer) { }