private async void SetupStairsSides(StairsInitializer stairsInitializer, ITile res) { var pos = currentGridPosition; await sidesCreator.SetupSidesAwaitableAsync(stairsInitializer, pos, res); stairsInitializer.FloorSide = null; stairsInitializer.WallSides = stairsInitializer.WallSides .Where(w => w.Face != MapDirection.Down && (stairsInitializer.Down || w.Face != MapDirection.Up)) .ToArray(); }
public Tile GetTile(StairsTileData t) { SetMinimapTile(Color.Yellow); StairsInitializer stairsInitializer = new StairsInitializer { Down = t.Direction == VerticalDirection.Down }; var res = new Stairs(stairsInitializer); SetupStairsSides(stairsInitializer, res); if (t.Direction == VerticalDirection.Down) { var upperStairsEntry = FindStairsEntryDirection(tilePosition.ToGrid(), -(int)tilePosition.Y); var lowerStairsEntry = FindStairsEntryDirection(tilePosition.ToGrid(), -(int)tilePosition.Y + 1); res.Renderer = builder.Factories.RenderersSource.GetUpperStairsTileRenderer(upperStairsEntry, lowerStairsEntry, res, builder.WallTexture); } else { res.Renderer = builder.Factories.RenderersSource.GetLowerStairsTileRenderer(res, builder.WallTexture); } this.initializer = stairsInitializer; return(res); }
public Stairs(StairsInitializer initializer) : base(initializer) { }