Пример #1
0
        public override TaskResult run(BehaviourTreeController.TreeStatus controller)
        {
            if (hasReadyResult(controller))
            {
                return(lastResult);
            }

            if (target.value == null)
            {
                return(lastResult = TaskResult.FAIL);
            }

            //attack event
            Base.Events.GameEventID eventID = eventType.value as Base.Events.GameEventID;
            if (eventID == null)
            {
                return(lastResult = TaskResult.FAIL);
            }

            //call event
            Base.Events.AttackTargetEvent attackEvent = new Events.AttackTargetEvent(eventID);
            attackEvent.DispatchGlobally = false;
            attackEvent.attackTarget     = target.value;
            attackEvent.Sender           = controller.agent.transform.GetInstanceID();
            GlobalDataContainer.It.eventsManager.dispatchEvent(attackEvent);

            //cache result
            return(lastResult = TaskResult.SUCCESS);
        }
Пример #2
0
        public override TaskResult run(BehaviourTreeController.TreeStatus controller)
        {
            if (hasReadyResult(controller))
            {
                return(lastResult);
            }

            if (target.value == null)
            {
                return(lastResult = TaskResult.FAIL);
            }

            //attack event
            Base.Events.GameEventID eventID = eventType.value as Base.Events.GameEventID;
            if (eventID == null)
            {
                return(lastResult = TaskResult.FAIL);
            }

            //call event
            Base.Events.DealDamageEvent dealEvent = new Events.DealDamageEvent(eventID);
            if (dealToYourself)
            {
                dealEvent.damageTarget = controller.agent.transform;
            }
            else
            {
                dealEvent.damageTarget = target.value;
            }
            Base.Game.DamageSourceInfo damagesource = new Game.DamageSourceInfo();
            damagesource.damageSources.Add(new Base.Game.DamageSourceInfo.SourceValue(Base.Game.DamageSourceInfo.DamageSource.DEFAULT, 100));

            dealEvent.damageValue = damagesource;
            GlobalDataContainer.It.eventsManager.dispatchEvent(dealEvent);

            //cache result
            return(lastResult = TaskResult.SUCCESS);
        }