public void Draw(SpriteBatch spriteBatch, GraphicsDeviceManager graphics, Matrix scale)
{
spriteBatch.Begin(SpriteSortMode.Immediate,
BlendState.AlphaBlend,
SamplerState.LinearClamp,
DepthStencilState.None,
RasterizerState.CullCounterClockwise,
null,
scale);
spriteBatch.Draw(_mBackground, new Rectangle(0, 0, graphics.GraphicsDevice.Viewport.Width, graphics.GraphicsDevice.Viewport.Height), Color.White);
var size = new Vector2(_mScreenRect.Width / 4, _mScreenRect.Height / 3);
var padding = new Vector2(size.X * .25f, size.Y * .25f);
Vector2 stringLoc = _mQuartz.MeasureString((_mCurrentPage + 1) + "/" + _mPageCount);
spriteBatch.Draw(_mBack[Convert.ToInt32(_mCurrentIndex == Back)] , new Rectangle(_mScreenRect.Left, _mScreenRect.Top, 70,70), Color.White);
spriteBatch.Draw(_mPrevious[Convert.ToInt32(_mCurrentIndex == Previous)], new Rectangle(_mScreenRect.Center.X - 85, _mScreenRect.Bottom - 75, 75, 50), Color.White);
spriteBatch.DrawString(_mQuartz, (_mCurrentPage + 1) + "/" + _mPageCount, new Vector2(_mScreenRect.Center.X + 10,_mScreenRect.Bottom - 60), Color.White);
spriteBatch.Draw(_mNext[Convert.ToInt32(_mCurrentIndex == Next)], new Rectangle(_mScreenRect.Center.X + 75, _mScreenRect.Bottom - 75, 75, 50), Color.White);
size.X -= 2*padding.X;
size.Y -= 2*padding.Y;
var currentLocation = new Vector2(_mScreenRect.X + 70, _mScreenRect.Top + 70);
var index = 0;
for (var i = 0; i < 12 && i + 12 * _mCurrentPage < _mLevels.Count; i++)
{
if (currentLocation.X + size.X + (padding.X / 4) >= graphics.GraphicsDevice.Viewport.TitleSafeArea.Width)
{
currentLocation.X = _mScreenRect.X + 70;
currentLocation.Y += 1.5f * padding.Y + size.Y;
}
currentLocation.X += (padding.X / 4);
var rect = new Rectangle((int)currentLocation.X, (int)currentLocation.Y, (int)size.X, (int)size.Y);
spriteBatch.Draw(_mLevels[i + 12 * _mCurrentPage].Thumbnail, rect, Color.White);
Vector2 stringSize = _mQuartz.MeasureString(_mLevels[i + 12 * _mCurrentPage].Level.Name);
var stringLocation = new Vector2(rect.Center.X - stringSize.X/2, rect.Top - stringSize.Y);
spriteBatch.DrawString(_mQuartz, _mLevels[i + 12 * _mCurrentPage].Level.Name, stringLocation, Color.White);
if (index == _mCurrentIndex - 1) spriteBatch.Draw(_mSelectBox, rect, Color.White);
if (!_mLevels[i + 12 * _mCurrentPage].Unlocked)
{
//DRAW LOCKED SYMBOL
spriteBatch.Draw(_mLocked, new Vector2(rect.Center.X - (_mLocked.Width / 2 * 0.25f), rect.Center.Y - (_mLocked.Height / 2 * 0.25f)),
null, Color.White, 0.0f, Vector2.Zero, 0.25f, SpriteEffects.None, 0.0f);
}
else
{
var time = _mLevels[i + 12 * _mCurrentPage].TimerStar;
var collect = _mLevels[i + 12 * _mCurrentPage].CollectionStar;
var death = _mLevels[i + 12 * _mCurrentPage].DeathStar;
var starScale = 0.5f;
//DUBUG//
//time = collect = death = 3;
//END DEBUG//
//TIME SCORE
if (time >= 1)
spriteBatch.Draw(_mStar, new Vector2(rect.Left, rect.Bottom - (_mStar.Height * 0.8f)),
null, Color.White, 0.0f, Vector2.Zero, starScale, SpriteEffects.None, 0.0f);
if (time >= 2)
spriteBatch.Draw(_mStar, new Vector2(rect.Left, rect.Bottom - (_mStar.Height * 0.4f)),
null, Color.White, 0.0f, Vector2.Zero, starScale, SpriteEffects.None, 0.0f);
if (time == 3)
spriteBatch.Draw(_mStar, new Vector2(rect.Left + (_mStar.Width * 0.4f), rect.Bottom - (_mStar.Height * 0.6f)),
null, Color.White, 0.0f, Vector2.Zero, starScale, SpriteEffects.None, 0.0f);
//COLLECTABLES SCORE
if (collect >= 1)
spriteBatch.Draw(_mStar, new Vector2(rect.Center.X - (_mStar.Width * starScale), rect.Bottom - (_mStar.Height * 0.8f)),
null, Color.White, 0.0f, Vector2.Zero, starScale, SpriteEffects.None, 0.0f);
if (collect >= 2)
spriteBatch.Draw(_mStar, new Vector2(rect.Center.X - (_mStar.Width * starScale), rect.Bottom - (_mStar.Height * 0.4f)),
null, Color.White, 0.0f, Vector2.Zero, starScale, SpriteEffects.None, 0.0f);
if (collect == 3)
spriteBatch.Draw(_mStar, new Vector2(rect.Center.X - (_mStar.Width * starScale) + (_mStar.Width * 0.4f), rect.Bottom - (_mStar.Height * 0.6f)),
null, Color.White, 0.0f, Vector2.Zero, starScale, SpriteEffects.None, 0.0f);
//DEATH SCORE
if (death >= 1)
spriteBatch.Draw(_mStar, new Vector2(rect.Right - (2 * _mStar.Width * starScale), rect.Bottom - (_mStar.Height * 0.8f)),
null, Color.White, 0.0f, Vector2.Zero, starScale, SpriteEffects.None, 0.0f);
if (death >= 2)
spriteBatch.Draw(_mStar, new Vector2(rect.Right - (2 * _mStar.Width * starScale), rect.Bottom - (_mStar.Height * 0.4f)),
null, Color.White, 0.0f, Vector2.Zero, starScale, SpriteEffects.None, 0.0f);
if (death == 3)
spriteBatch.Draw(_mStar, new Vector2(rect.Right - (2 * _mStar.Width * starScale) + (_mStar.Width * 0.4f), rect.Bottom - (_mStar.Height * 0.6f)),
null, Color.White, 0.0f, Vector2.Zero, starScale, SpriteEffects.None, 0.0f);
}
currentLocation.X += size.X + padding.X;
index++;
}
spriteBatch.End();
}