Ejemplo n.º 1
0
        /// <summary>
        /// This is called when the game should draw itself.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Draw(GameTime gameTime)
        {
            /*Random random2 = new Random(DateTime.Now.Millisecond);
             *
             * byte r = (byte)random2.Next(0, 255);
             * byte g = (byte)random2.Next(0, 255);
             * byte b = (byte)random2.Next(0, 255);
             *
             * Color tempCol;
             * tempCol = new Color(r, g, b);
             *
             * GraphicsDevice.Clear(tempCol);*/

            GraphicsDevice.Clear(bgColor);
            String Score;



            if (gameOver == false)
            {
                //Vector2 averagePos;
                //averagePos.X = (MyCircle.Pos.X + MyCircle2.Pos.X) / 2;
                //averagePos.Y = (MyCircle.Pos.Y + MyCircle2.Pos.Y) / 2;
                // TODO: Add your drawing code here

                /*if (averagePos.Y > windowHeight / 2)
                 * {
                 *  camY = 0;
                 * }
                 * else
                 * {
                 *  camY = -averagePos.Y + windowHeight / 2.0f;
                 * }
                 * if (averagePos.X < windowWidth / 2 || Level.levelType == 1)
                 * {
                 *  camX = 0;
                 * }
                 * else
                 * {
                 *  camX = -averagePos.X + windowWidth / 2.0f;
                 *
                 * }*/

                if (MyCircle.Pos.Y > windowHeight / 2)
                {
                    camY = 0;
                }
                else
                {
                    camY = -MyCircle.Pos.Y + windowHeight / 2.0f;
                }
                if ((MyCircle.Pos.X < windowWidth / 2 || Level.levelType == 1))
                {
                    camX = 0;
                }
                else
                {
                    camX = -MyCircle.Pos.X + windowWidth / 2.0f;
                }

                /*if (MyCircle.Pos.X - MyCircle2.Pos.X > windowWidth)
                 * {
                 *  MyCircle2.Pos.X = MyCircle.Pos.X - windowWidth / 2 +50;
                 *  for (int i = Game1.surfaces.Count - 1; i >= 0; i--)
                 *  {
                 *      while (Game1.surfaces[i].CheckCollision(MyCircle2) != 0)
                 *      {
                 *          MyCircle2.Pos.X += 4;
                 *      }
                 *  }
                 * }
                 *
                 * if (MyCircle2.Pos.X - MyCircle.Pos.X > windowWidth)
                 * {
                 *  MyCircle.Pos.X = MyCircle2.Pos.X - windowWidth / 2 + 50;
                 *  for (int i = Game1.surfaces.Count - 1; i >= 0; i--)
                 *  {
                 *      while (Game1.surfaces[i].CheckCollision(MyCircle) != 0)
                 *      {
                 *          MyCircle.Pos.X += 4;
                 *      }
                 *  }
                 * }*/


                Vector3 transVector = new Vector3(camX, camY - 10 * currentLevel.Grid.Count, 0.0f);
                float   distance    = (float)Math.Sqrt((Math.Pow((MyCircle.Pos.Y - MyCircle2.Pos.Y), 2) + Math.Pow((MyCircle.Pos.X - MyCircle2.Pos.X), 2)));
                Console.WriteLine(distance);
                Matrix SpriteScale = Matrix.CreateScale(graphics.GraphicsDevice.Viewport.Width / 800f, graphics.GraphicsDevice.Viewport.Width / 800f, 1);
                //Matrix SpriteScale = Matrix.CreateScale(distance, distance, 1);
                spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend, null, null, null, null, SpriteScale);

                spriteBatch.Draw(BGTexture, new Vector2(0, 0), Color.White);


                spriteBatch.End();

                spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, null, null, null, null, Matrix.CreateTranslation(transVector) * SpriteScale);
                //MyLevel1.draw()

                for (int i = 0; i < surfaces.Count; i++)
                {
                    surfaces[i].draw();
                }

                for (int i = 0; i < items.Count; i++)
                {
                    items[i].spawn();
                }

                MyCircle.draw();
                MyCircle2.draw();
                MyCircle3.draw();
                MyCircle4.draw();


                spriteBatch.End();

                ForegroundBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, null, null, null, null, SpriteScale);
                Score = score.ToString();
                Vector2 FontOrigin = Segoi.MeasureString("Score: " + Score) / 2;
                Vector2 fpos       = new Vector2(130, 50);

                Color temp = new Color(12, 179, 238);
                ForegroundBatch.DrawString(Segoi, "Player 1: " + MyCircle.Score, fpos, temp,
                                           0f, FontOrigin, .5f, SpriteEffects.None, 0.5f);

                fpos = new Vector2(670, 50);

                ForegroundBatch.DrawString(Segoi, "Player 2: " + MyCircle2.Score, fpos, temp,
                                           0f, FontOrigin, .5f, SpriteEffects.None, 0.5f);

                fpos = new Vector2(130, 420);


                ForegroundBatch.DrawString(Segoi, "Player 3: " + MyCircle3.Score, fpos, temp,
                                           0f, FontOrigin, .5f, SpriteEffects.None, 0.5f);

                fpos = new Vector2(670, 420);


                ForegroundBatch.DrawString(Segoi, "Player 4: " + MyCircle4.Score, fpos, temp,
                                           0f, FontOrigin, .5f, SpriteEffects.None, 0.5f);
                ForegroundBatch.End();
            }

            base.Draw(gameTime);
        }