Exemplo n.º 1
0
 public void SendHitEvent(TargetingEvent e, SingleNode <BulletComponent> bulletNode, [JoinByTank] UnblockedWeaponNode weaponNode, [JoinByTank] SingleNode <TankSyncComponent> tankNode)
 {
     if (!e.TargetingData.HasBaseStaticHit())
     {
         foreach (DirectionData data in e.TargetingData.Directions)
         {
             if (data.HasTargetHit())
             {
                 TargetData targetData = data.Targets.First <TargetData>();
                 if (targetData.TargetEntity.HasComponent <TankActiveStateComponent>())
                 {
                     this.PrepareTargetData(targetData, bulletNode.component);
                     SelfHitEvent     event3 = new SelfHitEvent();
                     List <HitTarget> list   = new List <HitTarget> {
                         HitTargetAdapter.Adapt(targetData)
                     };
                     event3.Targets = list;
                     event3.ShotId  = bulletNode.component.ShotId;
                     SelfHitEvent eventInstance = event3;
                     base.ScheduleEvent(eventInstance, weaponNode.Entity);
                     break;
                 }
             }
         }
     }
 }
Exemplo n.º 2
0
        public void PrepareHitByUnblockedWeapon(SendHitToServerIfNeedEvent evt, UnblockedWeaponNode weapon)
        {
            DirectionData bestDirection = evt.TargetingData.BestDirection;

            if (bestDirection.HasAnyHit())
            {
                SplashHitData splashHit = SplashHitData.CreateSplashHitData(HitTargetAdapter.Adapt(bestDirection.Targets), bestDirection.StaticHit, weapon.Entity);
                base.ScheduleEvent(new CollectSplashTargetsEvent(splashHit), weapon);
            }
        }
Exemplo n.º 3
0
 public void SendHitToServer(SendHitToServerEvent e, ShaftNode weapon)
 {
     if (e.TargetingData.BestDirection.HasAnyHit())
     {
         SelfShaftAimingHitEvent eventInstance = new SelfShaftAimingHitEvent(HitTargetAdapter.Adapt(e.TargetingData.BestDirection.Targets), e.TargetingData.BestDirection.StaticHit)
         {
             HitPower = 0f
         };
         base.ScheduleEvent(eventInstance, weapon);
     }
 }
Exemplo n.º 4
0
        public void SendHit(SendHitToServerIfNeedEvent evt, UnblockedWeaponNode weapon)
        {
            WeaponHitComponent weaponHit = weapon.weaponHit;
            StaticHit          staticHit = null;
            List <HitTarget>   targets   = new List <HitTarget>(4);

            if (evt.TargetingData.HasTargetHit())
            {
                if (!weaponHit.RemoveDuplicateTargets)
                {
                    targets = HitTargetAdapter.Adapt(evt.TargetingData.BestDirection.Targets);
                }
                else
                {
                    HashSet <Entity> set = new HashSet <Entity>();
                    int num = 0;
                    while (num < evt.TargetingData.Directions.Count)
                    {
                        DirectionData data = evt.TargetingData.Directions[num];
                        int           num2 = 0;
                        while (true)
                        {
                            if (num2 >= data.Targets.Count)
                            {
                                num++;
                                break;
                            }
                            TargetData targetData = data.Targets[num2];
                            if (set.Add(targetData.TargetEntity))
                            {
                                targets.Add(HitTargetAdapter.Adapt(targetData));
                            }
                            num2++;
                        }
                    }
                }
            }
            if (weaponHit.SendStaticHit && evt.TargetingData.HasStaticHit())
            {
                staticHit = evt.TargetingData.BestDirection.StaticHit;
            }
            if ((staticHit == null) && (targets.Count == 0))
            {
                base.ScheduleEvent <SelfHitSkipEvent>(weapon);
            }
            else
            {
                base.ScheduleEvent(new SendHitToServerEvent(evt.TargetingData, targets, staticHit), weapon);
            }
        }
Exemplo n.º 5
0
 private void CompleteTargets(SelfShaftAimingHitEvent hitEvent, TargetingData targeting, float energy)
 {
     hitEvent.Targets   = HitTargetAdapter.Adapt(targeting.BestDirection.Targets);
     hitEvent.StaticHit = targeting.BestDirection.StaticHit;
     hitEvent.HitPower  = 1f - energy;
 }
Exemplo n.º 6
0
 private static HitTarget GetTankHit(TargetingData targetingData) =>
 !targetingData.BestDirection.HasTargetHit() ? null : HitTargetAdapter.Adapt(targetingData.BestDirection.Targets[0]);