コード例 #1
0
ファイル: MenuState.cs プロジェクト: BCProgramming/DodgerX
        public virtual void Update(DodgerX gameobject, GameTime gameTime)
        {
            if (prevmousestate == null) prevmousestate = Mouse.GetState();
            ElapseCounter += gameTime.ElapsedGameTime;
            if (ElapseCounter > SpawnObjectDelay)
            {

                ElapseCounter = ElapseCounter - SpawnObjectDelay;
                for (int i = 0; i < 2; i++)
                {
                    AttackingObject ao = new AttackingObject(new Vector2(0, 0), new Vector2(0, 0),
                                                             gameobject.attackerTexture);
                    ao.SetRandomStartPosition(gameobject, 8);

                    grd.Attackers.Add(ao);
                }

            }
            _grd.Update(gameobject, gameTime);
            MenuSelect = DodgerX.soundBank.GetCue("MenuSel");
            //Update the selected item based on the mouse position.
            MenuStateItem foundhit = null;
            foreach (var msi in MenuItems)
            {

                if (msi.HitTest(gameobject, new Vector2(Mouse.GetState().X, Mouse.GetState().Y)))
                {
                    foundhit = msi;
                    break;
                }

            }
            if (SelectedItem != foundhit)
            {
                if (MenuSelect.IsPlaying) MenuSelect.Stop(AudioStopOptions.AsAuthored);
                try
                {
                    MenuSelect.Play();
                } catch
                {
                }
            }
            SelectedItem = foundhit;
            Debug.Print("SelectedItem is now " + (SelectedItem==null?"Null":SelectedItem.Caption));

            if (SelectedItem != null)
            {

                if (Mouse.GetState().LeftButton == ButtonState.Pressed && prevmousestate.Value.LeftButton==ButtonState.Released)
                {

                    //gameobject.CurrentState = SelectedItem.AdvanceState;
                    InvokeClick(SelectedItem,gameobject);
                    SelectedItem.AdvanceRoutine(SelectedItem, gameobject);

                }

            }

            prevmousestate = Mouse.GetState();
        }
コード例 #2
0
        public void Update(DodgerX gameobject, GameTime gameTime)
        {
            TotalRunningTime += gameTime.ElapsedGameTime;

            if(NextTimeGen ==null) NextTimeGen = TotalRunningTime + new TimeSpan(0,0,0,3);

            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                gameobject.Exit();

            if (grd.PlayerObject == null)
            {
                grd.Attackers.Clear();
                grd.PlayerObject = new Player(gameobject, 8);
                grd.PlayerObject.Position = new Vector2(gameobject.Window.ClientBounds.Width / 2, gameobject.Window.ClientBounds.Height / 2);
                grd.PlayerObject.PlayerDeath += new Action<DodgerX, Player>(PlayerObject_PlayerDeath);
            }

            grd.Update(gameobject, gameTime);

            if (TotalRunningTime > NextTimeGen.Value && !grd.Attackers.Any((w)=>w is HealyBall ))
            {
                CurrentScore += ((numgens + 1) * ReleaseCount) * grd.PlayerObject.NumItemsLeft();
                numgens++;
                //release 5+numgens healyOrbs.

                TimeSpan addthis = new TimeSpan(new TimeSpan(0, 0, 0, 2,500).Ticks - (numgens * 1000000));
                if (addthis < Minimumspan)
                {
                    numgens = 0;
                    ReleaseCount++;
                    LevelNumber++;
                    for (int addorb = 0; addorb < 8 + numgens; addorb++)
                    {
                        Vector2 chosenLocation = new Vector2((float)(gameobject.Window.ClientBounds.Width * DodgerX.rgen.NextDouble()),
                                                         (float)(gameobject.Window.ClientBounds.Y * DodgerX.rgen.NextDouble()));
                        Vector2 chosenspeed = new Vector2(((float)DodgerX.rgen.NextDouble() * MaximumSpeed) - HalfMaxSpeed,
                                                          ((float)DodgerX.rgen.NextDouble() * MaximumSpeed) - HalfMaxSpeed);

                        //ao.SetRandomStartPosition(gameobject, MaximumSpeed);
                        HealyBall hb = new HealyBall(chosenLocation, chosenspeed*(3/4), gameobject.healyTexture);
                        hb.SetRandomStartPosition(gameobject, MaximumSpeed);
                        grd.Attackers.Add(hb);
                    }
                }
                Debug.Print("adding " + addthis.ToString() + " to nexttimegen...");
                NextTimeGen += addthis;

                for (int i = 0; i < ReleaseCount; i++)
                {

                    Vector2 chosenLocation = new Vector2((float) (gameobject.Window.ClientBounds.Width*DodgerX.rgen.NextDouble()),
                                                         (float) (gameobject.Window.ClientBounds.Y*DodgerX.rgen.NextDouble()));
                    Vector2 chosenspeed = new Vector2(((float) DodgerX.rgen.NextDouble()*MaximumSpeed) - HalfMaxSpeed,
                                                      ((float) DodgerX.rgen.NextDouble()*MaximumSpeed) - HalfMaxSpeed);
                    AttackingObject ao = new AttackingObject(chosenLocation, chosenspeed, gameobject.attackerTexture);
                    ao.SetRandomStartPosition(gameobject, 4);
                    grd.Attackers.Add(ao);
                    //SetRandomStartPosition
                    Debug.Print("attacker added at " + chosenLocation + " with speed " + chosenspeed);
                }
            }
        }