protected TileGridLayer(string name, TileGridLayer layer) : base(name, layer) { _tileOriginX = layer._tileOriginX; _tileOriginY = layer._tileOriginY; _tilesHigh = layer._tilesHigh; _tilesWide = layer._tilesWide; }
public override void ApplyBrush(TileGridLayer tileLayer, int x, int y) { List <LocatedTile> updatedTiles = new List <LocatedTile>(); foreach (LocatedTile tile in Tiles) { if (tileLayer.InRange(x + tile.X, y + tile.Y)) { tileLayer.AddTile(x + tile.X, y + tile.Y, tile.Tile); } } }
public override void ApplyBrush(TileGridLayer tileLayer, int x, int y) { List <LocatedTile> updatedTiles = new List <LocatedTile>(); updatedTiles.Add(new LocatedTile(InnerApply(tileLayer, x, y), x, y)); // Update valid neighboring tiles foreach (TileCoord coord in NeighborCoordSet(x, y)) { if (ContainsMemberTile(tileLayer.TilesAt(coord))) { updatedTiles.Add(new LocatedTile(InnerApply(tileLayer, coord.X, coord.Y), coord.X, coord.Y)); } } }
private Tile InnerApply(TileGridLayer tileLayer, int x, int y) { TileCoord[] coordSet = NeighborCoordSet(x, y); List <int> neighbors = new List <int>(); for (int i = 0; i < coordSet.Length; i++) { if (ContainsMemberTile(tileLayer.TilesAt(coordSet[i]))) { neighbors.Add(i + 1); } } List <LocatedTile> targetStack = new List <LocatedTile>(); foreach (LocatedTile tile in tileLayer.TilesAt(new TileCoord(x, y))) { targetStack.Add(tile); } foreach (LocatedTile tile in targetStack) { if (IsMemberTile(tile)) { tileLayer.RemoveTile(x, y, tile.Tile); } } int index = _brushClass.ApplyRules(neighbors); Tile newTile = null; if (index >= 0 && index < _tiles.Count && _tiles[index].Tile != null) { newTile = _tiles[index].Tile; } if (newTile != null) { tileLayer.AddTile(x, y, newTile); } return(newTile); }
public override void ApplyBrush(TileGridLayer tileLayer, int x, int y) { List<LocatedTile> updatedTiles = new List<LocatedTile>(); foreach (LocatedTile tile in Tiles) if (tileLayer.InRange(x + tile.X, y + tile.Y)) tileLayer.AddTile(x + tile.X, y + tile.Y, tile.Tile); }
private Tile InnerApply(TileGridLayer tileLayer, int x, int y) { TileCoord[] coordSet = NeighborCoordSet(x, y); List<int> neighbors = new List<int>(); for (int i = 0; i < coordSet.Length; i++) { if (ContainsMemberTile(tileLayer.TilesAt(coordSet[i]))) neighbors.Add(i + 1); } List<LocatedTile> targetStack = new List<LocatedTile>(); foreach (LocatedTile tile in tileLayer.TilesAt(new TileCoord(x, y))) targetStack.Add(tile); foreach (LocatedTile tile in targetStack) { if (IsMemberTile(tile)) tileLayer.RemoveTile(x, y, tile.Tile); } int index = _brushClass.ApplyRules(neighbors); Tile newTile = null; if (index >= 0 && index < _tiles.Count && _tiles[index].Tile != null) newTile = _tiles[index].Tile; if (newTile != null) tileLayer.AddTile(x, y, newTile); return newTile; }
public override void ApplyBrush(TileGridLayer tileLayer, int x, int y) { List<LocatedTile> updatedTiles = new List<LocatedTile>(); updatedTiles.Add(new LocatedTile(InnerApply(tileLayer, x, y), x, y)); // Update valid neighboring tiles foreach (TileCoord coord in NeighborCoordSet(x, y)) { if (ContainsMemberTile(tileLayer.TilesAt(coord))) updatedTiles.Add(new LocatedTile(InnerApply(tileLayer, coord.X, coord.Y), coord.X, coord.Y)); } }
public static LevelX ToXProxy(Level level) { if (level == null) { return(null); } foreach (Layer layer in level.Layers) { if (layer is TileGridLayer) { TileGridLayer tileLayer = layer as TileGridLayer; foreach (LocatedTile tile in tileLayer.Tiles) { if (!level._localTileIndex.ContainsValue(tile.Tile.Uid)) { level._localTileIndex.Add(level._indexSequence++, tile.Tile.Uid); } } } } List <LevelX.TileIndexEntryX> tileIndexEntries = new List <LevelX.TileIndexEntryX>(); foreach (var item in level._localTileIndex) { tileIndexEntries.Add(new LevelX.TileIndexEntryX() { Id = item.Key, Uid = item.Value, }); } LevelX.TileIndexX tileIndex = new LevelX.TileIndexX() { Entries = tileIndexEntries, Sequence = level._indexSequence, }; List <AbstractXmlSerializer <LevelX.LayerX> > layers = new List <AbstractXmlSerializer <LevelX.LayerX> >(); foreach (Layer layer in level.Layers) { if (layer is MultiTileGridLayer) { layers.Add(MultiTileGridLayer.ToXmlProxyX(layer as MultiTileGridLayer)); } else if (layer is ObjectLayer) { layers.Add(ObjectLayer.ToXmlProxyX(layer as ObjectLayer)); } } LevelX.PropertyGroupX propGroup = new LevelX.PropertyGroupX() { LevelGuid = level.Uid, Extra = (level.Extra != null && level.Extra.Count > 0) ? level.Extra.ToArray() : null, }; if (level.Project != null) { propGroup.ProjectGuid = level.Project.Uid; } return(new LevelX() { PropertyGroup = propGroup, Name = level.Name, OriginX = level.OriginX, OriginY = level.OriginY, Width = level.Width, Height = level.Height, TileIndex = tileIndex, Layers = layers.Count > 0 ? layers : null, }); }
private void AttachEvents(TileGridLayer layer) { layer.Modified += (s, e) => { _eventsFired |= EventFlags.Modified; }; layer.LayerSizeChanged += (s, e) => { _eventsFired |= EventFlags.LayerSizeChanged; }; layer.TileAdded += (s, e) => { _eventsFired |= EventFlags.TileAdded; }; layer.TileRemoved += (s, e) => { _eventsFired |= EventFlags.TileRemoved; }; layer.TileCleared += (s, e) => { _eventsFired |= EventFlags.TileCleared; }; }
public TileGridLayerPresenter(ILayerContext layerContext, TileGridLayer layer) : base(layerContext, layer) { _layer = layer; }
public abstract void ApplyBrush(TileGridLayer tileLayer, int x, int y);