Esempio n. 1
0
 public void ScheduleHitFeedbackOnSelfHitEvent(SelfHitEvent e, DiscreteWeaponNode weapon, [JoinByTank] SelfTankNode tank, [JoinByBattle] BattleNode battle)
 {
     if (this.ValidateSelfHit(e, tank, battle))
     {
         base.ScheduleEvent <HitFeedbackEvent>(tank);
     }
 }
Esempio n. 2
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;
                 }
             }
         }
     }
 }
        public void SendTargetsToServer(CollectTargetsInRadius evt, ExplosiveMassEffectNode effect, SelfTankNode tank)
        {
            SelfHitEvent eventInstance = new SelfHitEvent {
                Targets = new List <HitTarget>()
            };

            foreach (Entity entity in evt.Targets)
            {
                Entity tankIncarnation = entity.SendEvent <GetTankIncarnationEvent>(new GetTankIncarnationEvent()).TankIncarnation;
                if (tankIncarnation != null)
                {
                    HitTarget item = new HitTarget {
                        Entity            = entity,
                        LocalHitPoint     = Vector3.zero,
                        HitDirection      = Vector3.zero,
                        HitDistance       = 0f,
                        IncarnationEntity = tankIncarnation,
                        TargetPosition    = Vector3.zero
                    };
                    eventInstance.Targets.Add(item);
                }
            }
            base.ScheduleEvent <SynchronizeSelfTankPositionBeforeEffectEvent>(tank);
            base.ScheduleEvent(eventInstance, effect);
        }
Esempio n. 4
0
 public void DrawHitDecal(SelfHitEvent evt, SingleNode <ShaftQuickShotDecalProjectorComponent> decalProjectorNode, [JoinByTank] SingleNode <MuzzlePointComponent> muzzlePointNode, [JoinAll] SingleNode <DecalManagerComponent> decalManagerNode)
 {
     if (decalManagerNode.component.EnableDecals)
     {
         base.DrawHitDecal(evt, decalManagerNode.component, decalProjectorNode.component, muzzlePointNode.component);
     }
 }
Esempio n. 5
0
        public void SendHitToServer(SendHitToServerEvent e, UnblockedWeaponNode weapon)
        {
            SelfHitEvent eventInstance = new SelfHitEvent(e.Targets, e.StaticHit)
            {
                ShotId = weapon.shotId.ShotId
            };

            base.ScheduleEvent(eventInstance, weapon);
        }
Esempio n. 6
0
 public void AddStreamWeaponHitFeedback(SelfHitEvent e, StreamWeaponWorkingFeedbackControllerNode weapon, [JoinByTank] SelfTankNode tank, [JoinByBattle] BattleNode battle)
 {
     if (this.ValidateSelfHit(e, tank, battle))
     {
         weapon.Entity.AddComponentIfAbsent <StreamHitEnemyFeedbackComponent>();
     }
     else
     {
         weapon.Entity.RemoveComponentIfPresent <StreamHitEnemyFeedbackComponent>();
     }
 }
Esempio n. 7
0
 public void ValidateHitEvent(SelfHitEvent e, HitNode weapon)
 {
     if ((e.Targets != null) && (e.Targets.Count > 0))
     {
         if (e.Targets.Count > 1)
         {
             throw new Exception("Invalid stream hit. Targets.Count=" + e.Targets.Count);
         }
         Entity entity  = e.Targets.Single <HitTarget>().Entity;
         Entity entity2 = weapon.streamHit.TankHit.Entity;
         if (!entity.Equals(entity2))
         {
             object[] objArray1 = new object[] { "Invalid stream hit. targetTankInEvent=", entity, " targetTankInComponent=", entity2 };
             throw new Exception(string.Concat(objArray1));
         }
     }
 }
Esempio n. 8
0
 private bool ValidateSelfHit(SelfHitEvent e, SelfTankNode tank, BattleNode battle) =>
 (e.Targets != null) ? ((e.Targets.Count != 0) ? this.ValidateTargets(e.Targets, tank, battle) : false) : false;
Esempio n. 9
0
 public void CreateShaftQuickHitSoundEffect(SelfHitEvent evt, ShaftQuickHitSoundNode weapon, [JoinAll] SingleNode <SoundListenerBattleStateComponent> soundListener)
 {
     this.CreateShaftHitSoundEffect(evt, weapon.shaftQuickHitSoundEffect);
 }