コード例 #1
0
        /// <summary>
        /// 行动点约束
        /// </summary>
        /// <param name="args">动作输入参数</param>
        /// <returns>行动点是否足够</returns>
        public override ActionConditResult CheckCondition(IReadonlyActionInputArgs args)
        {
            Contract.Requires(args.User != null);

            int  cost       = this.ActionConfig;
            bool canExecute = args.User.ActionPoint >= cost;

            return(new ActionConditResult(
                       canExecute,
                       canExecute ? string.Empty : $"角色至少需要{cost}行动点,目前仅有{args.User.ActionPoint}"));
        }
コード例 #2
0
        /// <summary>
        /// 行动点约束
        /// </summary>
        /// <param name="args">动作输入参数</param>
        /// <returns>行动点是否足够</returns>
        public override ActionConditResult CheckCondition(IReadonlyActionInputArgs args)
        {
            Contract.Requires(args.User != null);
            Contract.Requires(args.Targets.Count > 0);
            Contract.Requires(args.Targets.All(x => x != null));

            var range = args.User.Position.Value.GetCellInRange(this.ActionConfig).ToVector3Int().Where(x => x.x >= 0 && x.y >= 0);

            UnityEngine.Debug.Log("Rang" + string.Join("\n", range.Select(x => x.ToString())));
            var result = args.Targets
                         .Select(x => (canExecute: range.Contains(x.Position.Value), role: x))
                         .Select(x => (x.canExecute, msg: x.canExecute ? this.GetTrueMsg(x.role) : this.GetFalseMsg(x.role)))
                         .Select(x => new ActionConditResult(x.canExecute, x.msg));

            return(new ActionConditResult(result.All(x => x.CanExecute == true), childs: result));
        }
コード例 #3
0
ファイル: Skill.cs プロジェクト: 7KingOfFlag/MyGameProject
 /// <summary>
 /// 校验动作条件组
 /// </summary>
 /// <param name="args">动作输入参数</param>
 /// <returns></returns>
 public List <ActionConditResult> CheckConditAction(IReadonlyActionInputArgs args)
 {
     return(this.ConditionsActions.Select(x => x.CheckCondition(args)).ToList());
 }