示例#1
0
 public void OnRegisterFlakBullet(FlakBullet flakBullet)
 {
     AddJob(MethodBase.GetCurrentMethod().Name, new object[] { flakBullet });
 }
示例#2
0
        /// <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;
                }
            }
        }
示例#3
0
 public void OnRegisterFlakBullet(FlakBullet flakBullet)
 {
 }