示例#1
0
        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();
        }
示例#2
0
        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);
        }