コード例 #1
0
        public void InitTargeting(NodeAddedEvent evt, UnitTargetingNode unit)
        {
            UnitTargetingComponent unitTargeting = unit.unitTargeting;

            unit.unitTargeting.UpdateEvent = base.NewEvent <UnitSelectTargetEvent>().Attach(unit).SchedulePeriodic(unitTargeting.Period);
            unit.Entity.AddComponent(new TargetCollectorComponent(new TargetCollector(unit.Entity), new TargetValidator(unit.Entity)));
        }
コード例 #2
0
        public void Targeting(UnitSelectTargetEvent evt, UnitTargetingNode unit, [JoinSelf] Optional <SingleNode <UnitTargetComponent> > unitTargetNode)
        {
            TargetingData  targetingData = BattleCache.targetingData.GetInstance().Init();
            TargetingEvent eventInstance = BattleCache.targetingEvent.GetInstance().Init(targetingData);

            base.ScheduleEvent(eventInstance, unit);
            if ((targetingData.BestDirection != null) && targetingData.BestDirection.HasTargetHit())
            {
                Entity targetEntity            = targetingData.BestDirection.Targets[0].TargetEntity;
                Entity targetIncorantionEntity = targetingData.BestDirection.Targets[0].TargetIncorantionEntity;
                if (targetEntity.HasComponent <EnemyComponent>())
                {
                    if (unitTargetNode.IsPresent())
                    {
                        if (unitTargetNode.Get().component.Target.Equals(targetEntity))
                        {
                            return;
                        }
                        unit.Entity.RemoveComponent <UnitTargetComponent>();
                    }
                    UnitTargetComponent component = new UnitTargetComponent {
                        Target            = targetEntity,
                        TargetIncarnation = targetIncorantionEntity
                    };
                    unit.Entity.AddComponent(component);
                }
            }
        }
コード例 #3
0
 public void DisableTargeting(NodeRemoveEvent evt, UnitTargetingNode unit)
 {
     unit.unitTargeting.UpdateEvent.Manager().Cancel();
 }