示例#1
0
        public void Retract()
        {
            GameActionExecutionResult result = CanRetract();

            if (result.Success == false)
            {
                Debug.LogError(result.FailureReason);
                return;
            }

            OnRetract();

            mRetractLog   = ProduceRetractLogString();
            mHasRetracted = true;

            GameLog.Get.Add(this);
        }
示例#2
0
        public virtual GameActionExecutionResult CanRetract()
        {
            GameActionExecutionResult result = new GameActionExecutionResult()
            {
                Success = true
            };

            if (mHasExecuted == false)
            {
                result.Success       = false;
                result.FailureReason = "GameActions can only be Retracted once they have been Executed!";
                return(result);
            }

            if (mHasRetracted)
            {
                result.Success       = false;
                result.FailureReason = "GameActions can only be Retracted once!";
                return(result);
            }

            return(result);
        }
示例#3
0
        public override GameActionExecutionResult CanExecute()
        {
            GameActionExecutionResult result = base.CanExecute();

            if (result.Success == false)
            {
                return(result);
            }

            if (mAgent == null)
            {
                result.FailureReason = "MeleeAttack requires an Agent";
                result.Success       = false;
            }

            if (Target == null)
            {
                result.FailureReason = "MeleeAttack requires a Target";
                result.Success       = false;
            }

            return(result);
        }