Beispiel #1
0
        /// <summary>
        /// 根据自定义的图像设置事件元素实例
        /// </summary>
        /// <param name="fileName">图像文件名</param>
        /// <param name="showPosation">事件在地图上的坐标</param>
        /// <param name="method">触发方式</param
        /// <param name="repeated">是否是触发触发的事件</param>>
        /// <param name="eventName">事件名</param>
        /// <param name="unitSize">图像分隔的单位尺寸</param>
        protected MapEvent(string fileName, Coord showPosation, TouchMethod method, bool repeated, string eventName, Size unitSize)
            : base(fileName, showPosation, unitSize)
        {
            SetAttr(method, repeated, eventName);

            this.FaceUnit = unitSize;
        }
Beispiel #2
0
        /// <summary>
        /// 根据自定义的图像设置事件元素实例
        /// </summary>
        /// <param name="fileName">图像文件名</param>
        /// <param name="showPosation">事件在地图上的坐标</param>
        /// <param name="method">触发方式</param
        /// <param name="repeated">是否是触发触发的事件</param>>
        /// <param name="eventName">事件名</param>
        /// <param name="unitSize">图像分隔的单位尺寸</param>
        protected MapEvent(string fileName, Coord showPosation, TouchMethod method, bool repeated, string eventName, Size unitSize)
            : base(fileName, showPosation, unitSize)
        {
            SetAttr(method, repeated, eventName);

            this.FaceUnit = unitSize;
        }
Beispiel #3
0
        /// <summary>
        /// 构造时设置类成员属性
        /// </summary>
        /// <param name="method">触发方式</param>
        /// <param name="repeated">是否是触发触发的事件</param>
        /// <param name="eventName">事件名</param>
        private void SetAttr(TouchMethod method, bool repeated, string eventName)
        {
            //约定直接触发的事件是不可通行的
            if (method == TouchMethod.StationTouch)
            {
                CanPass = true;
            }
            else if (method == TouchMethod.ImmediatelyTouch)
            {
                CanPass = false;
            }

            Enable        = true;
            Repeated      = repeated;
            TriggerMethod = method;
            EventName     = eventName;
            CanFocus      = true;
        }
Beispiel #4
0
        /// <summary>
        /// 构造时设置类成员属性
        /// </summary>
        /// <param name="method">触发方式</param>
        /// <param name="repeated">是否是触发触发的事件</param>
        /// <param name="eventName">事件名</param>
        private void SetAttr(TouchMethod method, bool repeated, string eventName)
        {
            //约定直接触发的事件是不可通行的
            if (method == TouchMethod.StationTouch)
            {
                CanPass = true;
            }
            else if (method == TouchMethod.ImmediatelyTouch)
            {
                CanPass = false;
            }

            Enable = true;
            Repeated = repeated;
            TriggerMethod = method;
            EventName = eventName;
            CanFocus = true;
        }
Beispiel #5
0
        /// <summary>
        /// 触发坐标处的事件
        /// </summary>
        /// <param name="pos">在地图上的坐标</param>
        /// <param name="triggerMethod">触发方式</param>
        /// <param name="player">触发者</param>
        public void TriggerEvent(Coord pos, TouchMethod triggerMethod, Hero player)
        {
            if (!InFloor(pos))
            {
                return;
            }

            if (EventMap[pos.Row, pos.Col] == null || EventMap[pos.Row, pos.Col].Exist == false)
            {
                return;
            }

            //如果触发方式符合,则触发事件
            if (EventMap[pos.Row, pos.Col].TriggerMethod == triggerMethod)
            {
                EventMap[pos.Row, pos.Col].TriggerEvent(player);
            }
        }
Beispiel #6
0
        /// <summary>
        /// 根据参数配置创建类的实例
        /// </summary>
        /// <param name="createArgs">参数配置</param>
        /// <returns>返回类实例</returns>
        public static MapEvent Create(XElement createArgs, Coord existCoord)
        {
            string fileName;

            if (createArgs.Attribute("imagefile") == null)
            {
                fileName = null;
            }
            else
            {
                fileName = createArgs.Attribute("imagefile").Value;
            }
            TouchMethod method   = createArgs.Attribute("touchMethod").Value.CompareTo("station") == 0 ? TouchMethod.StationTouch : TouchMethod.ImmediatelyTouch;
            bool        repeated = createArgs.Attribute("repeated").Value.ToLower().CompareTo("true") == 0;
            string      name     = createArgs.Attribute("eventName").Value;
            Size        unitSize = GetSize(createArgs.Attribute("unitSize").Value);

            return(new EmptyEvent(fileName, existCoord, method, repeated, name, unitSize));
        }
Beispiel #7
0
        /// <summary>
        /// 触发坐标处的事件
        /// </summary>
        /// <param name="pos">在地图上的坐标</param>
        /// <param name="triggerMethod">触发方式</param>
        /// <param name="player">触发者</param>
        public void TriggerEvent(Coord pos, TouchMethod triggerMethod, Hero player)
        {
            if (!InFloor(pos))
            {
                return;
            }

            if (EventMap[pos.Row, pos.Col] == null || EventMap[pos.Row, pos.Col].Exist == false)
            {
                return;
            }

            //如果触发方式符合,则触发事件
            if (EventMap[pos.Row, pos.Col].TriggerMethod == triggerMethod)
            {
                EventMap[pos.Row, pos.Col].TriggerEvent(player);
            }
        }
Beispiel #8
0
 /// <summary>
 /// 设置事件元素实例
 /// </summary>
 /// <param name="face">图像索引</param>
 /// <param name="showPosation">事件在地图上的坐标</param>
 /// <param name="method">触发方式</param
 /// <param name="repeated">是否是触发触发的事件</param>
 /// <param name="eventName">事件名</param>
 protected MapEvent(MotaElement face, Coord showPosation, TouchMethod method, bool repeated, string eventName)
     : base(face, showPosation)
 {
     SetAttr(method, repeated, eventName);
 }
Beispiel #9
0
 /// <summary>
 /// 设置事件元素实例
 /// </summary>
 /// <param name="face">图像索引</param>
 /// <param name="showPosation">事件在地图上的坐标</param>
 /// <param name="method">触发方式</param
 /// <param name="repeated">是否是触发触发的事件</param>
 /// <param name="eventName">事件名</param>
 protected MapEvent(MotaElement face, Coord showPosation, TouchMethod method, bool repeated, string eventName) 
     : base(face, showPosation)
 {
     SetAttr(method, repeated, eventName);
 }
Beispiel #10
0
 /// <summary>
 /// 触发坐标处的事件
 /// </summary>
 /// <param name="pos">在地图上的坐标</param>
 /// <param name="triggerMethod">触发方式</param>
 /// <param name="player">触发者</param>
 public void TriggerEvent(Coord pos, TouchMethod triggerMethod, Hero player)
 {
     //委托楼层对象处理
     CurFloorNode.TriggerEvent(pos, triggerMethod, player);
 }
Beispiel #11
0
 /// <summary>
 /// 根据自定义的图像设置事件元素实例
 /// </summary>
 /// <param name="fileName">图像文件名</param>
 /// <param name="showPosation">事件在地图上的坐标</param>
 /// <param name="method">触发方式</param
 /// <param name="repeated">是否是触发触发的事件</param>>
 /// <param name="eventName">事件名</param>
 /// <param name="unitSize">图像分隔的单位尺寸</param>
 private EmptyEvent(string fileName, Coord showPosation, TouchMethod method, bool repeated, string eventName, Size unitSize)
     : base(fileName, showPosation, method, repeated, eventName, unitSize)
 {
 }
Beispiel #12
0
 public void SetTouchDelegate(TouchMethod touchMethod, TouchHandler touchDelegate)
 {
     this.touchDelegate = touchDelegate;
     this.touchMethod   = touchMethod;
 }
Beispiel #13
0
 /// <summary>
 /// 根据自定义的图像设置事件元素实例
 /// </summary>
 /// <param name="fileName">图像文件名</param>
 /// <param name="showPosation">事件在地图上的坐标</param>
 /// <param name="method">触发方式</param
 /// <param name="repeated">是否是触发触发的事件</param>>
 /// <param name="eventName">事件名</param>
 /// <param name="unitSize">图像分隔的单位尺寸</param>
 private EmptyEvent(string fileName, Coord showPosation, TouchMethod method, bool repeated, string eventName, Size unitSize)
     : base(fileName, showPosation, method, repeated, eventName, unitSize)
 {
 }
Beispiel #14
0
 /// <summary>
 /// 触发坐标处的事件
 /// </summary>
 /// <param name="pos">在地图上的坐标</param>
 /// <param name="triggerMethod">触发方式</param>
 /// <param name="player">触发者</param>
 public void TriggerEvent(Coord pos, TouchMethod triggerMethod, Hero player)
 {
     //委托楼层对象处理
     CurFloorNode.TriggerEvent(pos, triggerMethod, player);
 }