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(); }
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); } } }