private void checkIntersect(Vector2 tapPosition) { foreach (var kv in BeatDictionary.ToDictionary(kv => kv.Key, kv => kv.Value)) { if (kv.Key <= MediaPlayer.PlayPosition.TotalMilliseconds) { ClickablePlayObject tempObject = kv.Value as ClickablePlayObject; if (tempObject != null) { if (tempObject.Bounds.Intersects(new Rectangle((int)tapPosition.X, (int)tapPosition.Y, 1, 1))) { PointGenerator.generatePointEffect(tempObject.Center, tempObject.BeatRing.Scale, (int)MediaPlayer.PlayPosition.TotalMilliseconds); BeatDictionary.Remove(kv.Key); break; } } } else { break; } } checkForEndOfSong(); }
protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); spriteBatch.Begin(); //spriteBatch.DrawString(debugFont, debugstring1, new Vector2(10, 10), Color.Black); //spriteBatch.DrawString(debugFont, debugstring2, new Vector2(10, 40), Color.Black); //spriteBatch.DrawString(debugFont, debugstring3, new Vector2(10, 70), Color.Black); switch (CurrentGameState) { case GameState.MainMenu: //spriteBatch.DrawString(debugFont, gameTimeSinceStart.ToString(), new Vector2(10, 10), Color.Black); //spriteBatch.DrawString(debugFont, gameTimeSincePlaying.ToString(), new Vector2(10, 40), Color.Black); playBeatmapsButton.Draw(spriteBatch); createBeatmapsButton.Draw(spriteBatch); gameTimeSinceStart = (int)gameTime.TotalGameTime.TotalMilliseconds; break; case GameState.Playing: //gameTimeSincePlaying = (int)gameTime.TotalGameTime.TotalMilliseconds - gameTimeSinceStart; spriteBatch.DrawString(debugFont, PointGenerator.TotalPoints.ToString(), new Vector2(10, 10), Color.Black); spriteBatch.DrawString(debugFont, PointGenerator.Multiplicator, new Vector2(10, 30), Color.Black); //this.countShakersAndBeats(); //spriteBatch.DrawString(debugFont, debugstring1, new Vector2(10, 50), Color.Black); //spriteBatch.DrawString(debugFont, debugstring2, new Vector2(10, 70), Color.Black); //spriteBatch.DrawString(debugFont, endTime.ToString(), new Vector2(10, 90), Color.Black); PointGenerator.Draw(spriteBatch, (int)MediaPlayer.PlayPosition.TotalMilliseconds); foreach (var kv in BeatDictionary.ToDictionary(kv => kv.Key, kv => kv.Value)) { if (kv.Key <= MediaPlayer.PlayPosition.TotalMilliseconds) { if (kv.Value.Identifier() == PlayObjectIdentifier.Shaker) { Shaker tempShaker = kv.Value as Shaker; if ((tempShaker.Length + kv.Key) <= (int)MediaPlayer.PlayPosition.TotalMilliseconds) { BeatDictionary.Remove(kv.Key); if (tempShaker.isComplete()) { PointGenerator.generatePointEffect(new Vector2(400f, 240f), PointEffectState.FullPoints, (int)MediaPlayer.PlayPosition.TotalMilliseconds); } else { PointGenerator.generatePointEffect(new Vector2(400f, 240f), PointEffectState.ReducedPoints, (int)MediaPlayer.PlayPosition.TotalMilliseconds); } checkForEndOfSong(); } } else { ClickablePlayObject tempBeat = kv.Value as ClickablePlayObject; if (!tempBeat.thisDraw) { BeatDictionary.Remove(kv.Key); PointGenerator.generatePointEffect(tempBeat.Center, 2f, (int)MediaPlayer.PlayPosition.TotalMilliseconds); } } kv.Value.Draw(spriteBatch); } else { break; } } spriteBatch.DrawString(debugFont, MediaPlayer.PlayPosition.TotalMilliseconds.ToString(), new Vector2(10, 430), Color.Yellow); break; case GameState.BeatmapCreator: gameTimeSinceCreating = (int)gameTime.TotalGameTime.TotalMilliseconds - gameTimeSinceStart; returnToMainMenuButton.Draw(spriteBatch); //spriteBatch.DrawString(debugFont, MediaPlayer.PlayPosition.TotalMilliseconds.ToString(), new Vector2(10, 10), Color.Black); //spriteBatch.DrawString(debugFont, debugstring1, new Vector2(10, 30), Color.Black); //spriteBatch.DrawString(debugFont, debugstring2, new Vector2(10, 50), Color.Black); //spriteBatch.DrawString(debugFont, debugstring3, new Vector2(10, 70), Color.Black); break; case GameState.SaveMenu: break; case GameState.XMLLoadMenu: loadMenu.Draw(spriteBatch); break; case GameState.SongLoadMenu: loadMenu.Draw(spriteBatch); break; case GameState.ScoreMenu: returnToMainMenuButton.Draw(spriteBatch); spriteBatch.DrawString(scoreFont, "Final Score:", new Vector2(150, 200), Color.Red); spriteBatch.DrawString(scoreFont, PointGenerator.TotalPoints.ToString(), new Vector2(150, 300), Color.Red); break; } spriteBatch.End(); base.Draw(gameTime); }