/School_Project_GameBuild-master/GameBuild/GameBuild/Game/AnimationComponent.cs
C# | 210 lines | 149 code | 27 blank | 34 comment | 11 complexity | d81e6a476768eb7870530d69a29aa0da MD5 | raw file
- /*
- ____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
- / / \
- / / ooOOOOOOOOOOOOOOOOOOOO ssSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS ccCCCCCCCCCCCCCCCCCCCCCCCCCC iiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII llLLLLLLLLLL llLLLLLLLLLL aaAAAAAAAAAAAAAAAA ttTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT iiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ooOOOOOOOOOOOOOOOOOOOO nnNNNNNNNNNN nnNNNNNNNNNN \
- / / ooOOOOOOOOOOOOOOOOOOOOOOOOOOOO ssSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS ccCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC iiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII llLLLLLLLLLL llLLLLLLLLLL aaAAAAAAAAAAAAAAAA ttTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT iiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ooOOOOOOOOOOOOOOOOOOOOOOOOOOOO nnNNNNNNNNNNNN nnNNNNNNNNNN \
- | | ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ssSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS ccCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC iiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII llLLLLLLLLLL llLLLLLLLLLL aaAAAAAAAAAAAAAAAAAA ttTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT iiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO nnNNNNNNNNNNNN nnNNNNNNNNNN |
- | | ooOOOOOOOOOOOO ooOOOOOOOOOOOO ssSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS ccCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC iiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII llLLLLLLLLLL llLLLLLLLLLL aaAAAAAAAAAAAAAAAAAA ttTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT iiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ooOOOOOOOOOOOO ooOOOOOOOOOOOO nnNNNNNNNNNNNNNN nnNNNNNNNNNN |
- | | ooOOOOOOOO ooOOOOOOOO ssSSSSSSSSS ccCCCCCCCC iiIIIIIIIIII llLLLLLLLLLL llLLLLLLLLLL aaAAAAAAAAAAAAAAAAAAAA ttTTTTTTTTTT iiIIIIIIIIII ooOOOOOOOO ooOOOOOOOO nnNNNNNNNNNNNNNN nnNNNNNNNNNN |
- | | ooOOOOOOOO ooOOOOOOOO ssSSSSSSSSS ccCCCCCCCC iiIIIIIIIIII llLLLLLLLLLL llLLLLLLLLLL aaAAAAAAAAAAAAAAAAAAAA ttTTTTTTTTTT iiIIIIIIIIII ooOOOOOOOO ooOOOOOOOO nnNNNNNNNNNNNNNNNN nnNNNNNNNNNN |
- | | ooOOOOOOOO ooOOOOOOOO ssSSSSSSSSS ccCCCCCCCC iiIIIIIIIIII llLLLLLLLLLL llLLLLLLLLLL aaAAAAAAAAAAaaAAAAAAAAAA ttTTTTTTTTTT iiIIIIIIIIII ooOOOOOOOO ooOOOOOOOO nnNNNNNNNNNNNNNNNN nnNNNNNNNNNN |
- | | ooOOOOOOOO ooOOOOOOOO ssSSSSSSSSS ccCCCCCCCC iiIIIIIIIIII llLLLLLLLLLL llLLLLLLLLLL aaAAAAAAAAAAaaAAAAAAAAAA ttTTTTTTTTTT iiIIIIIIIIII ooOOOOOOOO ooOOOOOOOO nnNNNNNNNNNNNNNNNNNN nnNNNNNNNNNN |
- | | ooOOOOOOOO ooOOOOOOOO ssSSSSSSSSS ccCCCCCCCC iiIIIIIIIIII llLLLLLLLLLL llLLLLLLLLLL aaAAAAAAAAAA aaAAAAAAAAAA ttTTTTTTTTTT iiIIIIIIIIII ooOOOOOOOO ooOOOOOOOO nnNNNNNNNNNNNNNNNNNN nnNNNNNNNNNN |
- | | ooOOOOOOOO ooOOOOOOOO ssSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS ccCCCCCCCC iiIIIIIIIIII llLLLLLLLLLL llLLLLLLLLLL aaAAAAAAAAAA aaAAAAAAAAAA ttTTTTTTTTTT iiIIIIIIIIII ooOOOOOOOO ooOOOOOOOO nnNNNNNNNNNNNNNNNNNNNNnnNNNNNNNNNN |
- | | ooOOOOOOOO ooOOOOOOOO ssSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS ccCCCCCCCC iiIIIIIIIIII llLLLLLLLLLL llLLLLLLLLLL aaAAAAAAAAAA aaAAAAAAAAAA ttTTTTTTTTTT iiIIIIIIIIII ooOOOOOOOO ooOOOOOOOO nnNNNNNNNNNNnnNNNNNNNNNNNNNNNNNNNN |
- | | ooOOOOOOOO ooOOOOOOOO ssSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS ccCCCCCCCC iiIIIIIIIIII llLLLLLLLLLL llLLLLLLLLLL aaAAAAAAAAAA aaAAAAAAAAAA ttTTTTTTTTTT iiIIIIIIIIII ooOOOOOOOO ooOOOOOOOO nnNNNNNNNNNNnnNNNNNNNNNNNNNNNNNNNN |
- | | ooOOOOOOOO ooOOOOOOOO ssSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS ccCCCCCCCC iiIIIIIIIIII llLLLLLLLLLL llLLLLLLLLLL aaAAAAAAAAAAAAAAAAAAAAAAAAAAAA ttTTTTTTTTTT iiIIIIIIIIII ooOOOOOOOO ooOOOOOOOO nnNNNNNNNNNN nnNNNNNNNNNNNNNNNNNN |
- | | ooOOOOOOOO ooOOOOOOOO ssSSSSSSSSS ccCCCCCCCC iiIIIIIIIIII llLLLLLLLLLL llLLLLLLLLLL aaAAAAAAAAAAAAAAAAAAAAAAAAAAAA ttTTTTTTTTTT iiIIIIIIIIII ooOOOOOOOO ooOOOOOOOO nnNNNNNNNNNN nnNNNNNNNNNNNNNNNNNN |
- | | ooOOOOOOOO ooOOOOOOOO ssSSSSSSSSS ccCCCCCCCC iiIIIIIIIIII llLLLLLLLLLL llLLLLLLLLLL aaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ttTTTTTTTTTT iiIIIIIIIIII ooOOOOOOOO ooOOOOOOOO nnNNNNNNNNNN nnNNNNNNNNNNNNNNNN |
- | | ooOOOOOOOO ooOOOOOOOO ssSSSSSSSSS ccCCCCCCCC iiIIIIIIIIII llLLLLLLLLLL llLLLLLLLLLL aaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ttTTTTTTTTTT iiIIIIIIIIII ooOOOOOOOO ooOOOOOOOO nnNNNNNNNNNN nnNNNNNNNNNNNNNNNN |
- | | ooOOOOOOOO ooOOOOOOOO ssSSSSSSSSS ccCCCCCCCC iiIIIIIIIIII llLLLLLLLLLL llLLLLLLLLLL aaAAAAAAAAAA aaAAAAAAAAAA ttTTTTTTTTTT iiIIIIIIIIII ooOOOOOOOO ooOOOOOOOO nnNNNNNNNNNN nnNNNNNNNNNNNNNN |
- | | ooOOOOOOOOOOOO ooOOOOOOOOOOOO ssSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS ccCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC iiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII llLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL llLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL aaAAAAAAAAAA aaAAAAAAAAAA ttTTTTTTTTTT iiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ooOOOOOOOOOOOO ooOOOOOOOOOOOO nnNNNNNNNNNN nnNNNNNNNNNNNNNN |
- | | ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ssSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS ccCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC iiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII llLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL llLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL aaAAAAAAAAAA aaAAAAAAAAAA ttTTTTTTTTTT iiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO nnNNNNNNNNNN nnNNNNNNNNNNNN |
- \ \ ooOOOOOOOOOOOOOOOOOOOOOOOOOOOO ssSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS ccCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC iiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII llLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL llLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL aaAAAAAAAAAA aaAAAAAAAAAA ttTTTTTTTTTT iiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ooOOOOOOOOOOOOOOOOOOOOOOOOOOOO nnNNNNNNNNNN nnNNNNNNNNNNNN /
- \ \ ooOOOOOOOOOOOOOOOOOOOO ssSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS ccCCCCCCCCCCCCCCCCCCCCCCCCCC iiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII llLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL llLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL aaAAAAAAAAAA aaAAAAAAAAAA ttTTTTTTTTTT iiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ooOOOOOOOOOOOOOOOOOOOO nnNNNNNNNNNN nnNNNNNNNNNN /
- \_\___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________/
- */
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using Microsoft.Xna.Framework;
- using Microsoft.Xna.Framework.Graphics;
- namespace GameBuild
- {
- public class AnimationComponent
- {
- #region Declarations
- public bool playing;
- bool loop;
- //bool paused; //never used, only set
- int spriteSheetWidth, spriteSheetHeight;
- int frameWidth, frameHeight;
- Point defaultFrame;
- public Point currentFrame;
- int maxFrameCount;
- float frameDelay; //milliseconds
- float timer;
- const float DEFAULT_DELAY = 50;
- public int MaxFrameCount
- {
- get { return maxFrameCount; }
- set { maxFrameCount = value; }
- }
- #endregion
- #region Constructors
- public AnimationComponent(int spriteSheetWidth, int spriteSheetHeight, int frameWidth, int frameHeight)
- {
- this.spriteSheetWidth = spriteSheetWidth;
- this.spriteSheetHeight = spriteSheetHeight;
- this.frameWidth = frameWidth;
- this.frameHeight = frameHeight;
- this.frameDelay = DEFAULT_DELAY;
- timer = 0;
- this.defaultFrame = Point.Zero;
- currentFrame = defaultFrame;
- playing = false;
- loop = false;
- //paused = false;
- maxFrameCount = spriteSheetWidth;
- }
- public AnimationComponent(int spriteSheetWidth, int spriteSheetHeight, int frameWidth, int frameHeight, float frameDelay, Point defaultFrame)
- {
- this.spriteSheetWidth = spriteSheetWidth;
- this.spriteSheetHeight = spriteSheetHeight;
- this.frameWidth = frameWidth;
- this.frameHeight = frameHeight;
- this.frameDelay = frameDelay;
- timer = 0;
- this.defaultFrame = defaultFrame;
- currentFrame = defaultFrame;
- playing = false;
- loop = false;
- //paused = false;
- maxFrameCount = spriteSheetWidth-1; //cuz the points work off of a Zero based index
- }
- #endregion
- private Rectangle PointToFrame(Point p)
- {
- return new Rectangle(p.X*frameWidth, p.Y*frameHeight, frameWidth, frameHeight);
- }
- public void UpdateAnimation(GameTime gameTime)
- {
- if (playing)
- {
- timer += (float)gameTime.ElapsedGameTime.TotalMilliseconds;
- if (timer > frameDelay)
- {
- ResetTimer();
- currentFrame.X++;
-
- if (currentFrame.X > maxFrameCount && loop)
- {
- currentFrame.X = 0;
- }
- else if (currentFrame.X > maxFrameCount)
- {
- StopAnimation();
- }
- }
- }
- }
- public bool IsAnimationPlaying(int animation)
- {
- if (currentFrame.Y == animation && playing)
- return true;
- else
- return false;
- }
- private void ResetTimer()
- {
- timer = 0;
- }
- public void PlayAnimation(int animation)
- {
- if (animation < spriteSheetHeight)
- {
- ResetTimer();
- currentFrame.Y = animation;
- currentFrame.X = 0;
- playing = true;
- loop = false;
- }
- else
- {
- //ExceptionAnimationOutOfBounds();
- }
- }
- public void LoopAnimation(int animation)
- {
- //paused = false;
- if (animation < spriteSheetHeight)
- {
- currentFrame.Y = animation;
- currentFrame.X = 0;
- playing = true;
- loop = true;
- }
- else
- {
- //ExceptionAnimationOutOfBounds();
- }
- }
- public void StopAnimation()
- {
- playing = false;
- loop = false;
- currentFrame = defaultFrame;
- ResetTimer();
- }
- public void PauseAnimation()
- {
- playing = false;
- //paused = true;
- }
- public void ResumeAnimation()
- {
- playing = true;
- //paused = false;
- }
- public void ResetAnimation()
- {
- playing = false;
- currentFrame.X = 0;
- }
- public Rectangle GetFrame()
- {
- return PointToFrame(currentFrame);
- }
- private void ExceptionAnimationOutOfBounds()
- {
- throw new Exception("Animation is out of bounds of the sprite sheet.");
- }
- }
- }