示例#1
0
 //
 /// <summary>
 /// 检测是否可以攻击某单位,重写这个方法可更改射程判断规则
 /// </summary>
 /// <param name="target"></param>
 /// <returns></returns>
 public virtual bool CanAttack(Unit target)
 {
     if (Owner.bDot <= 1) return false;
     if (ActionState.HaveAction == true) return false;
     if (ActionState.HaveAttack == true) return false;
     return GetDistance(target) <= AttackRange.Current;
 }
示例#2
0
 /// <summary>
 /// 计算ab单位的距离,无法计算返回-1
 /// </summary>
 /// <param name="a"></param>
 /// <param name="b"></param>
 /// <returns></returns>
 public int GetDistance(Unit a, Unit b = null)
 {
     if (b == null) b = this;
     if (a.Position == null || b.Position == null) return -1;
     int distanceX = a.Position.Location.X - b.Position.Location.X;
     int distanceY = a.Position.Location.Y - b.Position.Location.Y;
     if (distanceX < 0) distanceX = -distanceX;
     if (distanceY < 0) distanceY = -distanceY;
     return distanceX + distanceY;
 }
 /// <summary>
 /// 放置单位到此格。
 /// </summary>
 /// <param name="unit"></param>
 /// <returns>成功返回真,失败返回假</returns>
 public bool PlaceUnit(Unit unit)
 {
     if (Unit != null) return false;
     if (unit.Position != null)
     {
         unit.Position.Unit = null;
     }
     Unit = unit;
     unit.Position = this;
     return true;
 }
示例#4
0
        /// <summary>
        /// 攻击指令,如果不能攻击返回假
        /// </summary>
        /// <param name="target"></param>
        /// <returns></returns>
        public bool Attack(Unit target)
        {
            if (CanAttack(target) == false) return false;

            if (ActionState.IsAction == false)//如果没有激活,自动激活
            {
                if (Activate()==false)
                {
                    return false;
                }
            }

                ActionState.HaveAttack = true;
            target.Hurt(AttackPower.Current);
            return true;
        }
示例#5
0
 public ActiveSkill(Unit unit)
     : base(unit)
 {
     useType = UseType.Active;
 }
示例#6
0
 public void Register(Unit unit)
 {
     master = unit;
 }
示例#7
0
 public Skill(Unit unit=null)
 {
     master = unit;
     SetAttribute();
 }
示例#8
0
 public PassiveSkill(Unit unit)
     : base(unit)
 {
     useType = UseType.Passive;
 }
 /// <summary>
 /// 上战场,把卡片转换为单位。已经召唤过的话会返回空
 /// </summary>
 /// <param name="locate"></param>
 /// <param name="owner"></param>
 /// <returns></returns>
 public Unit ToBattle(int[] locate, Player owner)
 {
     if (owner.action.HaveCall == true) return null;
     if (!GameCore.Chessboard.CellList[locate[0], locate[1]].Owner.Equals(owner.atTeam)) return null;//判断是否有权限
     if (GameCore.Chessboard.GetRegion(locate).Unit != null) return null;
     owner.action.HaveCall = true;
     Unit x = new Unit(this, locate, owner);
     return x;
 }