Beispiel #1
0
        public override void EnterFrame()
        {
            //Anyone to fire?
            if (this._invaders.Count == 0)
            {
                return;
            }

            Random rnd = new Random();

            if (rnd.Next(30) == 0)             //yup, fire a shot!
            {
                Invader inv = null;
                if (rnd.Next(4) == 0)                 //sometimes, let that someone be close to player to make it harder:
                {
                    Invader invClosest = null;
                    float   fXClosest  = 9999;

                    for (int nColIndex = 0; nColIndex < this._columnSortedInvaders.Count; nColIndex++)
                    {
                        SortedList <int, Invader> slCol = this._columnSortedInvaders.Values[nColIndex];
                        inv = slCol.Values[slCol.Count - 1];

                        float fXDiff = Math.Abs(inv.LocX - GameMain.Instance.m_player.LocX);

                        if (fXDiff < fXClosest)
                        {
                            invClosest = inv;
                            fXClosest  = fXDiff;
                        }
                    }
                    inv = invClosest;
                }
                else
                {
                    SortedList <int, Invader> slCol = this._columnSortedInvaders.Values[rnd.Next(this._columnSortedInvaders.Count)];
                    inv = slCol.Values[slCol.Count - 1];
                }
                inv.Fire();
            }


            if (m_nNumWaitFrames-- > 0)
            {
                return;
            }

            this.Step();
        }