private StaticTileBrush(LibraryX.StaticTileBrushX proxy, TilePoolManager manager) : base(proxy.Uid, proxy.Name, proxy.TileWidth, proxy.TileHeight) { _tiles = new Dictionary <TileCoord, TileStack>(); if (proxy.Tiles != null) { foreach (var stack in proxy.Tiles) { string[] coord = stack.At.Split(','); string[] tileIds = stack.Items.Split(','); int x = (coord.Length > 0) ? Convert.ToInt32(coord[0].Trim()) : 0; int y = (coord.Length > 1) ? Convert.ToInt32(coord[1].Trim()) : 0; foreach (string tileId in tileIds) { Guid id = new Guid(tileId.Trim()); TilePool pool = manager.PoolFromItemKey(id); if (pool == null) { continue; } AddTile(new TileCoord(x, y), pool.GetTile(id)); } } } Normalize(); }
private void ParseTileBlockString(string blockString) { string[] tokens = blockString.Split(new char[] { ' ' }); ITilePoolManager manager = Level.Project.TilePoolManager; for (int i = 0; i < tokens.Length; i += 3) { if (tokens.Length - i < 3) { break; } int x = int.Parse(tokens[i + 0]); int y = int.Parse(tokens[i + 1]); int count = int.Parse(tokens[i + 2]); if (tokens.Length - i < 3 + count) { break; } for (int j = 0; j < count; j++) { int tileId = int.Parse(tokens[i + 3 + j]); if (Level.TileIndex.ContainsKey(tileId)) { Guid tileUid = Level.TileIndex[tileId]; TilePool pool = manager.PoolFromItemKey(tileUid); Tile tile = pool.GetTile(tileUid); AddTile(x, y, tile); } } i += count; } }
private DynamicTileBrush(LibraryX.DynamicTileBrushX proxy, TilePoolManager manager, DynamicTileBrushClassRegistry registry) : base(proxy.Uid, proxy.Name, proxy.TileWidth, proxy.TileHeight) { _brushClass = registry.Lookup(proxy.Type); if (_brushClass == null) { return; } _tiles = _brushClass.CreateTileProxyList(); foreach (var entry in proxy.Entries) { TilePool pool = manager.PoolFromItemKey(entry.TileId); if (pool == null) { continue; } SetTile(entry.Slot, pool.GetTile(entry.TileId)); } }