public void OnRegisterFlakBullet(FlakBullet flakBullet) { AddJob(MethodBase.GetCurrentMethod().Name, new object[] { flakBullet }); }
/// <summary> /// Prowadzi ostrzal samolotu. /// </summary> public override void Fire(int time) { base.Fire(time); //jesli nie jest zniszczony i samolot jeszcze jest caly if (!IsDestroyed && UserPlaneNotYetDestroyed) { bool fireCondition = IsFireConditionMet; //wyliczam kat tylko jesli nie obracamy if (!changeDirection.HasValue) { float angleBefore = angle; SetAngle(time); if (adjustingBarrelAfterDirectionChange) { float diff = angle - angleBefore; angle = angleBefore + diff * BarrelAdjustmentSpeed * time; // Console.WriteLine("angle:" + angle + "; diff:" + diff); if (Math.Abs(angle - angleBefore) < Epislon) { adjustingBarrelAfterDirectionChange = false; } } } else { adjustingBarrelAfterDirectionChange = false; // przerwij } //jesli uplynal czas od ostatniego strzalu. if (currentTime > GameConsts.FlakBunker.FireDelay) { //jesli samolot jest w polu razenia. if (fireCondition) { //zadaje uszkodzenia. float localAngle = angle; if (localAngle > Mogre.Math.HALF_PI) { localAngle = Mogre.Math.PI - localAngle; } FlakBullet bullet = weaponManager.FlakFire(refToLevel.UserPlane, localAngle); //powiadamia controler o strzale. refToLevel.Controller.OnBunkerFire(this, refToLevel.UserPlane, false); // Console.WriteLine("ANGLE: "+angle); //Zeruje licznik. Czekam kolejna sekunde. currentTime = 0; } } else //zwiekszam odstep czasu od ostatniego strzalu { currentTime += time; } } }
public void OnRegisterFlakBullet(FlakBullet flakBullet) { }