public static void Initialize()
        {
            if (GameSettings.MusicOn)
            {
                MediaPlayer.IsRepeating = true;
                MediaPlayer.Volume = GameSettings.MusicVolume;
                MediaPlayer.Play(MenuSong);
            }

            buttonRecs = new fRectangle[4];
            fRectangle reference = new fRectangle(Gl.graphics.Viewport.Width / 2f, Gl.graphics.Viewport.Height / 3f * 2f, btStart.Width * 4, btStart.Height * 2);
            buttonRecs[0] = reference + new Vector2(-100, -50);
            buttonRecs[1] = reference + new Vector2(100, -50);
            buttonRecs[2] = reference + new Vector2(-100, 50);
            buttonRecs[3] = reference + new Vector2(100, 50);

            hoveringCurrent = 0;
        }
        public static void Draw()
        {
            Gl.graphics.Clear(Color.Black);

            Gl.sB.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.Default, RasterizerState.CullNone);
            if (Gl.game.isLoading)
            {
                Gl.sB.DrawString(font, "Loading...", Vector2.Zero, Color.White);
            }

            #region Intro Sequence
            //Logo
            float alpha = 1;
            if (time >= 30 && time < 125)
                alpha = (time - 30) / 95f;
            else if (time >= 170)
                alpha = 0;
            Gl.sB.Draw(logoTexture, new Vector2(Gl.graphics.Viewport.Width / 2f, Gl.graphics.Viewport.Height / 2f), null, Color.White * alpha, 0f,
                new Vector2(logoTexture.Width / 2f, logoTexture.Height / 2f), 1f, SpriteEffects.None, 0f);

            //Banner
            if (time > 230)
            {
                Gl.sB.Draw(banner, new Rectangle(0, 0, Gl.graphics.Viewport.Width, banner.Height * (Gl.graphics.Viewport.Width / banner.Width)), Color.White);
            }
            //Buttons
            if (time > 280)
            {
                fRectangle reference = new fRectangle(Gl.graphics.Viewport.Width / 2f, Gl.graphics.Viewport.Height / 3f * 2f, btStart.Width * 4, btStart.Height * 2);
                Gl.sB.Draw(btStart, (reference + new Vector2(-100, -50)).Convert(), new Rectangle(0, 0, btStart.Width, btStart.Height / 2), Color.White);
                Gl.sB.Draw(btSettings, (reference + new Vector2(100, -50)).Convert(), new Rectangle(0, 0, btSettings.Width, btSettings.Height / 2), Color.White);
                Gl.sB.Draw(btEditor, (reference + new Vector2(-100, 50)).Convert(), new Rectangle(0, 0, btEditor.Width, btEditor.Height / 2), Color.White);
                Gl.sB.Draw(btExit, (reference + new Vector2(100, 50)).Convert(), new Rectangle(0, 0, btExit.Width, btExit.Height / 2), Color.White);
            }
            #endregion

            Gl.sB.End();
        }
 public static void DrawRectangle(fRectangle rec, Color color, Color borderColor, float borderThickness = 1f, float depth = 0f)
 {
     sB.Draw(dot,  rec.Position, null, color, 0f, Vector2.Zero, rec.Size, SpriteEffects.None, depth);
     if (borderThickness != 0f)
     {
         DrawRectangle(new fRectangle(rec.X, rec.Y, rec.Width, borderThickness), borderColor, depth);
         DrawRectangle(new fRectangle(rec.X, rec.Y, borderThickness, rec.Height), borderColor, depth);
         DrawRectangle(new fRectangle(rec.X, rec.Bottom - borderThickness, rec.Width, borderThickness), borderColor, depth);
         DrawRectangle(new fRectangle(rec.Right - borderThickness, rec.Y, borderThickness, rec.Height), borderColor, depth);
     }
 }
 public static void DrawRectangle(fRectangle rec, Color color, float depth = 0f)
 {
     sB.Draw(dot, rec.Position, null, color, 0f, Vector2.Zero, rec.Size, SpriteEffects.None, depth);
 }
 /// <summary>
 /// Returns a bool indicating whether the two rectangles overlap (inclusive)
 /// </summary>
 public bool Intersects(fRectangle rec)
 {
     return (Math.Abs(Center.X - rec.Center.X) * 2 <= (Width + rec.Width)) &&
         (Math.Abs(Center.Y - rec.Center.Y) * 2 <= (Height + rec.Height));
 }
 public static bool Intersects(Rectangle recA, fRectangle recB)
 {
     return (Math.Abs(recA.Center.X - recB.Center.X) <= (recA.Width + recB.Width)) &&
         (Math.Abs(recA.Center.Y - recA.Center.Y) <= (recA.Height + recB.Height));
 }
 public static bool Contains(fRectangle rec, Point point)
 {
     return (point.X >= rec.Left && point.X <= rec.Right && point.Y >= rec.Top && point.Y <= rec.Bottom);
 }