/// <summary> /// 根据xml结点创建地图元素 /// </summary> /// <param name="xmlNode">xml结点</param> /// <returns>地图结点元素</returns> public static ElementNode GetNode(XElement xmlNode) { Background back = Background.CreateInstance(xmlNode.Element("oneBack"), Coord.Empty); MapEvent eve = MapEvent.CreateInstance(xmlNode.Element("oneEvent"), Coord.Empty); return(new ElementNode(back, eve)); }
/// <summary> /// 加载地图层 /// </summary> /// <param name="oneFloorArgs">地图层参数</param> /// <param name="oneFloor">待加载的楼层对象</param> private static void LoadBackLayer(XElement oneFloorArgs, FloorNode oneFloor) { XElement floorBackArgs = oneFloorArgs.Element("backLayer"); for (int row = 0; row < oneFloor.FloorSize.Row; row++) { //这里引入中间变量,为了提高查询速度 XElement rowBackArgs = floorBackArgs.Elements("oneRow").ElementAt(row); for (int col = 0; col < oneFloor.FloorSize.Col; col++) { Coord pos = new Coord(col, row); try { oneFloor.BackMap[row, col] = Background.CreateInstance( rowBackArgs.Elements("oneBack").ElementAt(col), pos); } catch (Exception) { throw new Exception("地图层不可为空, 缺少位置: " + pos.ToString()); } } } }
/// <summary> /// 获取地表元素的副本 /// </summary> /// <param name="pos">副本出现的坐标</param> public Background GetBack(Coord pos) { return(Background.CreateInstance(_Back.XmlRecord, pos)); }