コード例 #1
0
 protected virtual void TurretTick()
 {
     if (!turrets.NullOrEmpty())
     {
         for (int i = 0; i < turrets.Count; i++)
         {
             CompCannons.TurretData turretData = turrets[i];
             VehicleTurret          turret     = turretData.turret;
             if (!turret.HasAmmo && !DebugSettings.godMode)
             {
                 turrets.Remove(turretData);
                 shotsFired = turrets.NullOrEmpty();
                 continue;
             }
             if (turret.OnCooldown)
             {
                 turret.SetTarget(LocalTargetInfo.Invalid);
                 turrets.Remove(turretData);
                 shotsFired = turrets.NullOrEmpty();
                 continue;
             }
             turrets[i].turret.AlignToTargetRestricted();
             if (turrets[i].ticksTillShot <= 0)
             {
                 FireTurret(turret);
                 int shotsIncrement = shotsFromTurret[turret] + 1;
                 shotsFromTurret[turret] = shotsIncrement;
                 turret.CurrentTurretFiring++;
                 turretData.shots--;
                 turretData.ticksTillShot = turret.TicksPerShot;
                 if (turret.OnCooldown || turretData.shots == 0 || (turret.turretDef.ammunition != null && turret.shellCount <= 0))
                 {
                     turret.SetTarget(LocalTargetInfo.Invalid);
                     turrets.RemoveAll(t => t.turret == turret);
                     shotsFired = turrets.NullOrEmpty();
                     continue;
                 }
             }
             else
             {
                 turretData.ticksTillShot--;
             }
             turrets[i] = turretData;
         }
     }
 }
コード例 #2
0
ファイル: CannonTargeter.cs プロジェクト: SmashPhil/Vehicles
 public void BeginTargeting(TargetingParameters targetParams, Action <LocalTargetInfo> action, VehicleTurret cannon, Action actionWhenFinished = null, Texture2D mouseAttachment = null)
 {
     this.action       = action;
     this.targetParams = targetParams;
     vehicle           = cannon.vehicle;
     Cannon            = cannon;
     Cannon.SetTarget(LocalTargetInfo.Invalid);
     this.actionWhenFinished = actionWhenFinished;
     this.mouseAttachment    = mouseAttachment;
     map = cannon.vehicle.Map;
 }
コード例 #3
0
 public override void ProcessInput(Event ev)
 {
     if (turrets.All(t => t.reloadTicks <= 0))
     {
         base.ProcessInput(ev);
         SoundDefOf.Tick_Tiny.PlayOneShotOnCamera(null);
         CannonTargeter.Instance.BeginTargeting(targetingParams, delegate(LocalTargetInfo target)
         {
             turret.SetTarget(target);
             turret.ResetPrefireTimer();
         }, turret, null, null);
     }
 }