private TileType GetTileType(ITile tile) { switch (tile.Type) { case "floor": return TileType.Floor; case "wall": return TileType.Wall; case "passage": return TileType.Passage; case "door": return tile.HasTag("open") ? TileType.OpenDoor : TileType.Door; case "stairs": return TileType.Stairs; default: throw new System.ArgumentException(); } }