private int GetCurrentXPostion(int i, int spacing, int modImgWidth, int widthOfGeneratedMods, int imageWidth, DrawSide drawSide, DrawDirection drawDirection) { int xPos = i * (modImgWidth + spacing); if (drawSide == DrawSide.Left) { if (drawDirection == DrawDirection.FromRightToLeft) { xPos = widthOfGeneratedMods - xPos - modImgWidth; } return(xPos); } else { if (drawDirection == DrawDirection.FromRightToLeft) { xPos = imageWidth - xPos - modImgWidth; } else { xPos += imageWidth - widthOfGeneratedMods; } return(xPos); } }
public override void Draw(GameTime gameTime, DrawSide drawSide) { Matrix drawMatrix = Matrix.Identity; drawMatrix *= Matrix.CreateScale(1, game.CompressFactor, 1); if (drawSide == DrawSide.Right) { drawMatrix *= Matrix.CreateTranslation(offset.X - game.DrawOffset.X, game.DrawOffset.Y, 0); } else { drawMatrix *= Matrix.CreateTranslation(game.DrawOffset.X, game.DrawOffset.Y, 0); } spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, drawMatrix); spriteBatch.Draw(background, new Rectangle(0, 0, graphics.PreferredBackBufferWidth / 2, graphics.PreferredBackBufferHeight), null, Color.White); player.Draw(gameTime, spriteBatch); foreach (Projectile p in projectiles) { p.Draw(gameTime, spriteBatch); } foreach (Mob m in mobs) { m.Draw(gameTime, spriteBatch); } spriteBatch.End(); }
public Bitmap GenerateImage(string[] modsList) { int imageWidth = _settings.Get <int>(_names.ImageWidth); int modHeight = _settings.Get <int>(_names.ModHeight); int modWidth = _settings.Get <int>(_names.ModWidth); int spacing = _settings.Get <int>(_names.ModImageSpacing); float opacity = (float)_settings.Get <int>(_names.ModImageOpacity) / 100; DrawSide drawSide = _settings.Get <bool>(_names.DrawOnRightSide) ? DrawSide.Right : DrawSide.Left; DrawDirection drawDirection = _settings.Get <bool>(_names.DrawFromRightToLeft) ? DrawDirection.FromRightToLeft : DrawDirection.FromLeftToRight; List <string> validModPaths = new List <string>(); foreach (var mod in modsList) { string effectiveModPath = Path.Combine(_saver.SaveDirectory, ImagesFolderName, mod.ToUpper() + ".png"); if (ModImageExists(effectiveModPath)) { validModPaths.Add(effectiveModPath); } } int widthOfGeneratedMods = GetWidthOfGeneratedMods(validModPaths.Count, modWidth, spacing); if (drawDirection == DrawDirection.FromRightToLeft) { validModPaths.Reverse(); } Bitmap bitmap = new Bitmap(imageWidth, modHeight); bitmap.MakeTransparent(); using (var g = Graphics.FromImage(bitmap)) { g.InterpolationMode = InterpolationMode.HighQualityBicubic; for (int i = 0; i < validModPaths.Count; i++) { var singleModImage = Image.FromFile(validModPaths[i]); using (var singleModImageWithOpacity = SetImageOpacity(singleModImage, opacity)) { int xPos = GetCurrentXPostion(i, spacing, modWidth, widthOfGeneratedMods, imageWidth, drawSide, drawDirection); g.DrawImage(singleModImageWithOpacity, new Point(xPos, 0)); } singleModImage.Dispose(); } g.Save(); } //bitmap.Save(ImageFullPath, ImageFormat.Png); return(bitmap); }
public override void Draw(GameTime gameTime, DrawSide drawSide) { Matrix drawMatrix = Matrix.Identity; drawMatrix *= drawMatrix *= Matrix.CreateScale(1, game.CompressFactor, 1); if (drawSide == DrawSide.Left) { drawMatrix *= Matrix.CreateTranslation(game.DrawOffset.X, 0, 0); } else { drawMatrix *= Matrix.CreateTranslation(offset.X - game.DrawOffset.X, 0, 0); } spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, drawMatrix); spriteBatch.Draw(background, new Rectangle(0, 0, graphics.PreferredBackBufferWidth / 2, graphics.PreferredBackBufferHeight), null, Color.White); player.Draw(gameTime, spriteBatch); for (int i = 0; i < barriers.Count; i++) { barriers[i].Draw(gameTime, spriteBatch); } if (powerUp != null) { powerUp.Draw(gameTime, spriteBatch); } if (currentTimer != null) { currentTimer.Draw(gameTime, spriteBatch); } if (smashLabel != null) { smashLabel.Draw(gameTime, spriteBatch); } if (freezeLabel != null) { freezeLabel.Draw(gameTime, spriteBatch); } spriteBatch.End(); }
abstract public void Draw(GameTime gameTime, DrawSide drawSide);
private int GetCurrentXPostion(int i, int spacing, int modImgWidth, int widthOfGeneratedMods, int imageWidth, DrawSide drawSide, DrawDirection drawDirection) { int xPos = i * (modImgWidth + spacing); if (drawSide == DrawSide.Left) { if (drawDirection == DrawDirection.FromRightToLeft) xPos = widthOfGeneratedMods - xPos - modImgWidth; return xPos; } else { if (drawDirection == DrawDirection.FromRightToLeft) xPos = imageWidth - xPos - modImgWidth; else xPos += imageWidth - widthOfGeneratedMods; return xPos; } }