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);
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #4
0
        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();
        }
Beispiel #5
0
 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;
     }
 }