Exemple #1
0
        /// <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));
        }
Exemple #2
0
 /// <summary>
 /// 获取事件元素的副本
 /// </summary>
 /// <param name="pos">副本出现的坐标</param>
 public MapEvent GetEvent(Coord pos)
 {
     if (_Event == null)
     {
         return(MapEvent.CreateInstance(MapEvent.EmptyXml, pos));
     }
     return(MapEvent.CreateInstance(_Event.XmlRecord, pos));
 }
Exemple #3
0
        /// <summary>
        /// 创建元素结点的副本
        /// </summary>
        /// <param name="desBack">地表元素</param>
        /// <param name="desEvent">事件元素</param>
        public ElementNode(Background desBack, MapEvent desEvent)
        {
            //引用
            _Back  = desBack;
            _Event = desEvent;

            //深度拷贝
            _Back  = GetBack(Coord.Empty);
            _Event = GetEvent(Coord.Empty);
        }
Exemple #4
0
        /// <summary>
        /// 创建元素结点的副本
        /// </summary>
        /// <param name="desBack">地表元素</param>
        /// <param name="desEvent">事件元素</param>
        public ElementNode(Background desBack, MapEvent desEvent)
        {
            //引用
            _Back = desBack;
            _Event = desEvent;

            //深度拷贝
            _Back = GetBack(Coord.Empty);
            _Event = GetEvent(Coord.Empty);
        }
Exemple #5
0
        /// <summary>
        /// 关闭事件
        /// </summary>
        public static void CloseEvent(Queue <MotaEventArgs> datas, Hero player)
        {
            MotaEventArgs data = datas.Dequeue();
            //如果目标位置存在事件,关闭它
            MapEvent me = MotaWorld.GetInstance().MapManager.Tower[data.DesPosation.Floor].EventMap[data.DesPosation.Seat.Row, data.DesPosation.Seat.Col];

            if (me != null)
            {
                me.Close();
            }
            EventEffect(data);
        }
Exemple #6
0
        /// <summary>
        /// 创建一个全空的楼层节点
        /// </summary>
        /// <param name="index">楼层索引</param>
        /// <param name="name">楼层名称</param>
        /// <param name="maxCoord">楼层的坐标范围</param>
        /// <param name="nextFloor">下一层楼的索引,用于指向默认的下一层楼</param>
        /// <param name="preFloor">上一层楼的索引,用于指向默认的上一层楼</param>
        /// <param name="heroExistPos">人物初始出现的位置</param>
        /// <param name="downPos">下楼时出现的位置</param>
        /// <param name="autoSwicth">自动开关事件列表</param>
        private FloorNode(int index, string name, Coord maxCoord, int nextFloor, int preFloor, Coord heroExistPos, Coord downPos, List<Swicther> autoSwicth)
        {
            FloorIndex = index;
            FloorName = name;
            floorSize = maxCoord;
            BackMap = new Background[maxCoord.Row, maxCoord.Col];
            EventMap = new MapEvent[maxCoord.Row, maxCoord.Col];
            NextFloor = nextFloor;
            PreFloor = preFloor;
            HeroUpPos = heroExistPos;
            HeroDownPos = downPos;

            this.AutoSwicth = autoSwicth;
        }
Exemple #7
0
        /// <summary>
        /// 创建一个全空的楼层节点
        /// </summary>
        /// <param name="index">楼层索引</param>
        /// <param name="name">楼层名称</param>
        /// <param name="maxCoord">楼层的坐标范围</param>
        /// <param name="nextFloor">下一层楼的索引,用于指向默认的下一层楼</param>
        /// <param name="preFloor">上一层楼的索引,用于指向默认的上一层楼</param>
        /// <param name="heroExistPos">人物初始出现的位置</param>
        /// <param name="downPos">下楼时出现的位置</param>
        /// <param name="autoSwicth">自动开关事件列表</param>
        private FloorNode(int index, string name, Coord maxCoord, int nextFloor, int preFloor, Coord heroExistPos, Coord downPos, List <Swicther> autoSwicth)
        {
            FloorIndex  = index;
            FloorName   = name;
            floorSize   = maxCoord;
            BackMap     = new Background[maxCoord.Row, maxCoord.Col];
            EventMap    = new MapEvent[maxCoord.Row, maxCoord.Col];
            NextFloor   = nextFloor;
            PreFloor    = preFloor;
            HeroUpPos   = heroExistPos;
            HeroDownPos = downPos;

            this.AutoSwicth = autoSwicth;
        }
Exemple #8
0
        /// <summary>
        /// 设置事件层某一个元素的开关状态
        /// </summary>
        /// <param name="pos">坐标</param>
        /// <param name="closed">是否关闭</param>
        private void SetState(Coord pos, bool closed)
        {
            MapEvent node = CurFloor.EventMap[pos.Row, pos.Col];

            if (node != null)
            {
                if (closed)
                {
                    node.Close();
                }
                else
                {
                    node.Open();
                }
            }
        }
Exemple #9
0
        /// <summary>
        /// 加载事件层
        /// </summary>
        /// <param name="oneFloorArgs">事件层参数</param>
        /// <param name="oneFloor">待加载的楼层对象</param>
        private static void LoadEventLayer(XElement oneFloorArgs, FloorNode oneFloor)
        {
            XElement floorEventArgs = oneFloorArgs.Element("eventLayer");

            for (int row = 0; row < oneFloor.FloorSize.Row; row++)
            {
                //这里引入中间变量,为了提高查询速度
                XElement rowEventArgs = floorEventArgs.Elements("oneRow").ElementAt(row);
                for (int col = 0; col < oneFloor.FloorSize.Col; col++)
                {
                    try
                    {
                        oneFloor.EventMap[row, col] = MapEvent.CreateInstance(
                            rowEventArgs.Elements("oneEvent").ElementAt(col), new Coord(col, row));
                    }
                    catch (Exception)
                    {
                        oneFloor.EventMap[row, col] = null;
                    }
                }
            }
        }
Exemple #10
0
 public AppendEvent(MapEvent user)
 {
     this.User = user;
 }
Exemple #11
0
 public AppendEvent(MapEvent user)
 {
     this.User = user;
 }