private void InitializeBrush(DynamicTileBrush brush) { _layerControl.ReferenceWidth = brush.BrushClass.TemplateWidth * brush.TileWidth + 1; _layerControl.ReferenceHeight = brush.BrushClass.TemplateHeight * brush.TileHeight + 1; _layer = new MultiTileGridLayer("Default", brush.TileWidth, brush.TileHeight, brush.BrushClass.TemplateWidth, brush.BrushClass.TemplateHeight); for (int i = 0; i < brush.BrushClass.SlotCount; i++) { LocatedTile tile = brush.GetLocatedTile(i); if (tile.Tile != null) { _layer.AddTile(tile.X, tile.Y, tile.Tile); } } _rootLayer.Layers.Clear(); _rootLayer.Layers.Add(new TileGridLayerPresenter(_layerContext, _layer)); _rootLayer.Layers.Add(new LocalRenderLayerPresenter(new OverlayRenderCore(this))); _rootLayer.Layers.Add(new GridLayerPresenter() { GridSpacingX = brush.TileWidth, GridSpacingY = brush.TileHeight, }); _nameField.Text = brush.Name; _brush = brush; SelectCurrentPrototype(); SelectCurrentTileSize(); }
private void RasterizeTile(SysDrawing.Graphics surface, LocatedTile tile) { Rectangle levelBounds = LayerContext.Geometry.LevelBounds; using (SysDrawing.Bitmap tileBmp = tile.Tile.Pool.Tiles.GetTileTexture(tile.Tile.Uid).CreateBitmap()) { SysDrawing.Point location = new SysDrawing.Point(tile.X * Layer.TileWidth - levelBounds.X, tile.Y * Layer.TileHeight - levelBounds.Y); surface.DrawImage(tileBmp, location); } }
public bool IsMemberTile(LocatedTile tile) { foreach (TileProxy proxy in _tiles) { if (proxy.Tile != null && proxy.Tile.Uid == tile.Tile.Uid) { return(true); } } return(false); }
public void Save(XmlDocument doc, XmlElement parent) { parent.AppendChild(XmlHelper.CreateSimpleNode("Resources", "resources.xml", doc)); Resources.Save("resources.xml"); Tile.StaticSave(doc, parent, this); XmlElement tilesElem = doc.CreateElement("Tiles"); for (int y = 0; y < Height; y++) { for (int x = 0; x < Width; x++) { Tile tile = Tiles[x, y]; if (tile is LocatedTile) { int k = 0; if (tile is MultiTileTile) { k++; } if (!(tile is MultiTileTile) || ((LocatedTile)tile).Position == new Vector2(x, y)) { LocatedTile located = (LocatedTile)tile; XmlElement locTileElem = doc.CreateElement("Loc" + "_" + x + "_" + y); locTileElem.AppendChild(XmlHelper.CreateSimpleNode("Type", tile.GetType().Name, doc)); located.Save(doc, locTileElem, this); tilesElem.AppendChild(locTileElem); } } else { if (Tile.UnLocatedTile.ContainsValue(tile)) { XmlElement tileElem = doc.CreateElement("UnLoc_" + x + "_" + y); tileElem.AppendChild(doc.CreateTextNode(Tile.UnLocatedTile.Where(t => t.Value == tile).First().Key)); tilesElem.AppendChild(tileElem); } } } } parent.AppendChild(tilesElem); XmlElement entitiesElem = doc.CreateElement("Entities"); foreach (KeyValuePair <int, Entity> pair in Entities) { XmlElement entityElem = doc.CreateElement("E" + pair.Key); pair.Value.Save(doc, entityElem); entitiesElem.AppendChild(entityElem); } parent.AppendChild(entitiesElem); }
private void Load(XmlDocument doc, XmlElement parent) { string path = (string)XmlHelper.GetSimpleNodeContent <string>("Resources", parent, "resources.xml"); Resources = new Resources(this, path); Tile.StaticLoad(doc, parent, this); if (XmlHelper.HasChild("Tiles", parent)) { XmlElement tilesElem = XmlHelper.GetElement("Tiles", parent); foreach (XmlElement tileElem in tilesElem.ChildNodes) { string nodeName = tileElem.Name; string[] tab = nodeName.Split('_'); if (tab[0] == "Loc") { int x = int.Parse(tab[1]); int y = int.Parse(tab[2]); if (x < 0 || x >= Width) { continue; } if (y < 0 || y >= Height) { continue; } Type type = this.GetType().Assembly.GetType(typeof(Tile).Namespace + "." + (string)XmlHelper.GetSimpleNodeContent <string>("Type", tileElem, "")); if (type == null) { continue; } LocatedTile locTile = (LocatedTile)type.GetConstructor(new Type[] { typeof(World), typeof(int), typeof(int) }).Invoke(new object[] { this, x, y }); locTile.Load(doc, tileElem, this); SetTile(x, y, locTile); } else if (tab[0] == "UnLoc") { string tileId = tileElem.FirstChild.Value; int x = int.Parse(tab[1]); int y = int.Parse(tab[2]); if (x < 0 || x >= Width) { continue; } if (y < 0 || y >= Height) { continue; } SetTile(x, y, Tile.UnLocatedTile[tileId]); } } } if (XmlHelper.HasChild("Entities", parent)) { Entities = new Dictionary <int, Entity>(); XmlElement entitiesElem = XmlHelper.GetElement("Entities", parent); foreach (XmlElement entityElem in entitiesElem.ChildNodes) { Entity entity = Entity.Unserialize(doc, entityElem, this); int id; bool good = int.TryParse(entityElem.Name.TrimStart('E'), out id); if (entity != null && good) { Entities.Add(id, entity); } } } }
public bool InRange(LocatedTile tile) { return CheckBounds(tile.X, tile.Y); }
public bool InRange(LocatedTile tile) { return(CheckBounds(tile.X, tile.Y)); }