Exemplo n.º 1
0
		private void LogicDraw() {
			mSpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied);

			var drawOffset = RenderDisplayCenterPosition;
			var onDrawImage = new OnDrawTileAnimationFrameImageDelegate(delegate(TileAnimationFrame frame, TileAnimationFrameImage image) {
				var i = frame.IndexOf(image);
				// Border + frame number (skip on animation)
				if (AnimationTimerRunning) {
					return;
				}

				var destRectangle = image.GetDestinationRectangle(drawOffset);
				var drawColor = (mSelectedDrawnAnimation == i ? Color.White : Color.Red);
				mSpriteBatch.DrawRectangle(mLineTexture, destRectangle, 1, drawColor);
				var drawFrameNum = (i + 1).ToString(CultureInfo.InvariantCulture);
				var drawPos = new Vector2(destRectangle.X + 3, destRectangle.Y + 2);
				mSpriteBatch.DrawString(mSpriteFont, drawFrameNum, drawPos, drawColor);
			});
			var onDrawLastImage = new OnDrawTileAnimationFrameImageDelegate(delegate(TileAnimationFrame frame, TileAnimationFrameImage image) {
				var i = frame.IndexOf(image);
				// Border + frame number (skip on animation)
				if (AnimationTimerRunning) {
					return;
				}

				var destRectangle = image.GetDestinationRectangle(drawOffset);
				var drawColor = Color.SlateBlue;
				mSpriteBatch.DrawRectangle(mLineTexture, destRectangle, 1, drawColor);
				var drawFrameNum = (i + 1).ToString(CultureInfo.InvariantCulture);
				var drawPos = new Vector2(destRectangle.X + 3, destRectangle.Y + 2);
				mSpriteBatch.DrawString(mSpriteFont, drawFrameNum, drawPos, drawColor);
			});

			if (AnimationTimerRunning == false) {
				// draw a Cross
				// ---
				var drawRect = new Rectangle(0, RenderDisplayAnimation.Height / 2 - 1, RenderDisplayAnimation.Width, 1);
				mSpriteBatch.Draw(mLineTexture, drawRect, Color.Violet);
				//  |
				drawRect = new Rectangle(RenderDisplayAnimation.Width / 2 - 1, 0, 1, RenderDisplayAnimation.Height);
				mSpriteBatch.Draw(mLineTexture, drawRect, Color.Violet);
			}

			// Background Images, if a Frame is selected
			if (mSelectedFrame != -1) {
				if (chkDrawLastFrame.Checked && mSelectedFrame > 0) {
					var lastFrame = mAnimation.Frames[mSelectedFrame - 1];
					lastFrame.DrawBackground(mSpriteBatch, drawOffset, onDrawLastImage);
				}

				var frame = mAnimation.Frames[mSelectedFrame];
				frame.DrawBackground(mSpriteBatch, drawOffset, onDrawImage);
			}

			// draw the Char
			if (chkCharDisplay.Checked && mOrientationChar != null) {
				var destRect = new Rectangle(drawOffset.X + SliderCharX.Value, drawOffset.Y + SliderCharY.Value, Constants.CharTileWidth, Constants.CharTileHeight);
				var srcRect = new Rectangle(0, 0, Constants.CharTileWidth, Constants.CharTileHeight);
				destRect.X -= Constants.CharTileWidth / 2;
				destRect.Y -= Constants.CharTileHeight / 2;
				mSpriteBatch.Draw(mOrientationChar, destRect, srcRect, Color.White);
			}

			// Foreground Images, if a Frame is selected
			if (mSelectedFrame != -1) {
				if (chkDrawLastFrame.Checked && mSelectedFrame > 0) {
					var lastFrame = mAnimation.Frames[mSelectedFrame - 1];
					lastFrame.DrawForeground(mSpriteBatch, drawOffset, onDrawLastImage);
				}

				var frame = mAnimation.Frames[mSelectedFrame];
				frame.DrawForeground(mSpriteBatch, drawOffset, onDrawImage);
			}


			// Image Selection? draw Position
			if (mSelectedFrame != -1 && mSelectedDrawnAnimation != -1) {
				var frameImage = mAnimation.Frames[mSelectedFrame][mSelectedDrawnAnimation];
				var drawString = string.Format("{0:000} / {1:000}",
					frameImage.Offset.X,
					frameImage.Offset.Y
				);
				var drawPos = new Vector2(RenderDisplayAnimation.Width - mSpriteFont.MeasureString(drawString).X - 10, RenderDisplayAnimation.Height - 20);
				mSpriteBatch.DrawString(mSpriteFont, drawString, drawPos, Color.White);
			}

			mSpriteBatch.End();
		}
Exemplo n.º 2
0
        private void LogicDraw()
        {
            mSpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied);

            var drawOffset  = RenderDisplayCenterPosition;
            var onDrawImage = new OnDrawTileAnimationFrameImageDelegate(delegate(TileAnimationFrame frame, TileAnimationFrameImage image) {
                var i = frame.IndexOf(image);
                // Border + frame number (skip on animation)
                if (AnimationTimerRunning)
                {
                    return;
                }

                var destRectangle = image.GetDestinationRectangle(drawOffset);
                var drawColor     = (mSelectedDrawnAnimation == i ? Color.White : Color.Red);
                mSpriteBatch.DrawRectangle(mLineTexture, destRectangle, 1, drawColor);
                var drawFrameNum = (i + 1).ToString(CultureInfo.InvariantCulture);
                var drawPos      = new Vector2(destRectangle.X + 3, destRectangle.Y + 2);
                mSpriteBatch.DrawString(mSpriteFont, drawFrameNum, drawPos, drawColor);
            });
            var onDrawLastImage = new OnDrawTileAnimationFrameImageDelegate(delegate(TileAnimationFrame frame, TileAnimationFrameImage image) {
                var i = frame.IndexOf(image);
                // Border + frame number (skip on animation)
                if (AnimationTimerRunning)
                {
                    return;
                }

                var destRectangle = image.GetDestinationRectangle(drawOffset);
                var drawColor     = Color.SlateBlue;
                mSpriteBatch.DrawRectangle(mLineTexture, destRectangle, 1, drawColor);
                var drawFrameNum = (i + 1).ToString(CultureInfo.InvariantCulture);
                var drawPos      = new Vector2(destRectangle.X + 3, destRectangle.Y + 2);
                mSpriteBatch.DrawString(mSpriteFont, drawFrameNum, drawPos, drawColor);
            });

            if (AnimationTimerRunning == false)
            {
                // draw a Cross
                // ---
                var drawRect = new Rectangle(0, RenderDisplayAnimation.Height / 2 - 1, RenderDisplayAnimation.Width, 1);
                mSpriteBatch.Draw(mLineTexture, drawRect, Color.Violet);
                //  |
                drawRect = new Rectangle(RenderDisplayAnimation.Width / 2 - 1, 0, 1, RenderDisplayAnimation.Height);
                mSpriteBatch.Draw(mLineTexture, drawRect, Color.Violet);
            }

            // Background Images, if a Frame is selected
            if (mSelectedFrame != -1)
            {
                if (chkDrawLastFrame.Checked && mSelectedFrame > 0)
                {
                    var lastFrame = mAnimation.Frames[mSelectedFrame - 1];
                    lastFrame.DrawBackground(mSpriteBatch, drawOffset, onDrawLastImage);
                }

                var frame = mAnimation.Frames[mSelectedFrame];
                frame.DrawBackground(mSpriteBatch, drawOffset, onDrawImage);
            }

            // draw the Char
            if (chkCharDisplay.Checked && mOrientationChar != null)
            {
                var destRect = new Rectangle(drawOffset.X + SliderCharX.Value, drawOffset.Y + SliderCharY.Value, Constants.CharTileWidth, Constants.CharTileHeight);
                var srcRect  = new Rectangle(0, 0, Constants.CharTileWidth, Constants.CharTileHeight);
                destRect.X -= Constants.CharTileWidth / 2;
                destRect.Y -= Constants.CharTileHeight / 2;
                mSpriteBatch.Draw(mOrientationChar, destRect, srcRect, Color.White);
            }

            // Foreground Images, if a Frame is selected
            if (mSelectedFrame != -1)
            {
                if (chkDrawLastFrame.Checked && mSelectedFrame > 0)
                {
                    var lastFrame = mAnimation.Frames[mSelectedFrame - 1];
                    lastFrame.DrawForeground(mSpriteBatch, drawOffset, onDrawLastImage);
                }

                var frame = mAnimation.Frames[mSelectedFrame];
                frame.DrawForeground(mSpriteBatch, drawOffset, onDrawImage);
            }


            // Image Selection? draw Position
            if (mSelectedFrame != -1 && mSelectedDrawnAnimation != -1)
            {
                var frameImage = mAnimation.Frames[mSelectedFrame][mSelectedDrawnAnimation];
                var drawString = string.Format("{0:000} / {1:000}",
                                               frameImage.Offset.X,
                                               frameImage.Offset.Y
                                               );
                var drawPos = new Vector2(RenderDisplayAnimation.Width - mSpriteFont.MeasureString(drawString).X - 10, RenderDisplayAnimation.Height - 20);
                mSpriteBatch.DrawString(mSpriteFont, drawString, drawPos, Color.White);
            }

            mSpriteBatch.End();
        }
Exemplo n.º 3
0
 public void DrawForeground(SpriteBatch spriteBatch, OnDrawTileAnimationFrameImageDelegate onDraw = null)
 {
     Draw(spriteBatch, Point2D.Zero, false, onDraw);
 }
Exemplo n.º 4
0
        public void Draw(SpriteBatch spriteBatch, Point2D basePos, bool drawBackground, OnDrawTileAnimationFrameImageDelegate onDraw = null)
        {
            // Default to faster alternative
            if (onDraw == null)
            {
                Draw(spriteBatch, basePos);
                return;
            }

            foreach (var img in this.Where(img => img.IsBackground == drawBackground))
            {
                img.Draw(spriteBatch, basePos);

                onDraw.Invoke(this, img);
            }
        }
Exemplo n.º 5
0
 public void DrawBackground(SpriteBatch spriteBatch, Point2D basePos, OnDrawTileAnimationFrameImageDelegate onDraw = null)
 {
     Draw(spriteBatch, basePos, true, onDraw);
 }