/// <summary> /// Creates Dictionary for all Animations available to MainPlayer /// </summary> private void CreateAnimationDictionary() { Animations = new Dictionary <string, Animation>(); Animations.Add("MoveUp", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(32, 160))); Animations.Add("MoveDown", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(0, 160))); Animations.Add("MoveLeft", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(96, 160))); Animations.Add("MoveRight", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(64, 160))); Animations.Add("SwordDown", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(0, 176))); Animations.Add("SwordUp", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(32, 176))); Animations.Add("SwordRight", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(64, 176))); Animations.Add("SwordLeft", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(96, 176))); Animations.Add("PushingDown", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(0, 192))); Animations.Add("PushingUp", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(32, 192))); Animations.Add("PushingRight", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(64, 192))); Animations.Add("PushingLeft", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(96, 192))); Animations.Add("PullingDown", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(0, 208))); Animations.Add("PullingUp", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(32, 208))); Animations.Add("PullingRight", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(64, 208))); Animations.Add("PullingLeft", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(96, 208))); Animations.Add("CarryDown", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(0, 224))); Animations.Add("CarryUp", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(32, 224))); Animations.Add("CarryRight", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(64, 224))); Animations.Add("CarryLeft", new Animation(AssetManager.SpriteSheets["PlayerSheet"], 2, 16, 16, 0.2f, new Vector2(96, 224))); CurrentAnimation = "MoveDown"; AnimationLibrary = new AnimationLibrary("MainPlayer", Animations); AnimationManager = new AnimationManager(AnimationLibrary); AnimationManager.Play(CurrentAnimation); }
public override void Draw(SpriteBatch spriteBatch) { AnimationManager.Draw(spriteBatch, Position); }
public override void Update(GameTime gameTime) { AnimationManager.Update(gameTime); }
public void MoveToNewArea(Rectangle collisionRectangle, Rectangle areaRectangle, GameTime gameTime) { float deltaTime = (float)gameTime.ElapsedGameTime.TotalSeconds; if (TransitionMoveState == AreaTransitionMoveState.Start) { // Check Rectangle width/height float _collisionWidth, _collisionHeight; _collisionHeight = collisionRectangle.Height; _collisionWidth = collisionRectangle.Width; if (_collisionWidth < _collisionHeight) { // Slide into new area using X-coordinate if (OriginPoint.X < areaRectangle.Left) { TransitionMoveState = AreaTransitionMoveState.SlideRight; TransformPosition = Position + new Vector2(16, 0); } else { TransitionMoveState = AreaTransitionMoveState.SlideLeft; TransformPosition = Position + new Vector2(-16, 0); } return; } else { // Slide into new area using Y-coordinate if (OriginPoint.Y > areaRectangle.Bottom) { TransitionMoveState = AreaTransitionMoveState.SlideUp; TransformPosition = Position + new Vector2(0, -16); } else { TransitionMoveState = AreaTransitionMoveState.SlideDown; TransformPosition = Position + new Vector2(0, 16); } return; } } else { Vector2 movePosition = new Vector2(0, 0); switch (TransitionMoveState) { case AreaTransitionMoveState.SlideDown: { if (Position.Y >= TransformPosition.Y) { TransitionMoveState = AreaTransitionMoveState.Complete; } else { movePosition = movePosition + new Vector2(0, (32 * deltaTime)); } break; } case AreaTransitionMoveState.SlideUp: { if (Position.Y <= TransformPosition.Y) { TransitionMoveState = AreaTransitionMoveState.Complete; } else { movePosition = movePosition + new Vector2(0, -(32 * deltaTime)); } break; } case AreaTransitionMoveState.SlideRight: { if (Position.X >= TransformPosition.X) { TransitionMoveState = AreaTransitionMoveState.Complete; } else { movePosition = movePosition + new Vector2((32 * deltaTime), 0); } break; } case AreaTransitionMoveState.SlideLeft: { if (Position.X <= TransformPosition.X) { TransitionMoveState = AreaTransitionMoveState.Complete; } else { movePosition = movePosition + new Vector2(-(32 * deltaTime), 0); } break; } } Position = Position + movePosition; UpdateBoundingBoxPosition(); AnimationManager.Update(gameTime); } }
public void Update(GameTime gameTime) { HandleInput(); Vector2 _position = new Vector2(0); if (ControlKeys["UpKey"] == true) { if (IsAnimated == false) { IsAnimated = true; } if (IsColliding == true && IsCollisionAbove(SolidBoundingBox.Bottom) == true) { CurrentAnimation = "PushingUp"; } else { CurrentAnimation = "MoveUp"; } _position = _position + new Vector2(0, -MoveSpeed); Facing = PlayerFacing.Up; } if (ControlKeys["DownKey"] == true) { if (IsAnimated == false) { IsAnimated = true; } if (IsColliding == true && IsCollisionLeft(SolidBoundingBox.Top) == true) { CurrentAnimation = "PushingDown"; } else { CurrentAnimation = "MoveDown"; } _position = _position + new Vector2(0, MoveSpeed); Facing = PlayerFacing.Down; } if (ControlKeys["RightKey"] == true) { if (IsAnimated == false) { IsAnimated = true; } if (IsColliding == true && IsCollisionRight(SolidBoundingBox.Left) == true) { CurrentAnimation = "PushingRight"; } else { CurrentAnimation = "MoveRight"; } _position = _position + new Vector2(MoveSpeed, 0); Facing = PlayerFacing.Right; } if (ControlKeys["LeftKey"] == true) { if (IsAnimated == false) { IsAnimated = true; } if (IsColliding == true && IsCollisionLeft(SolidBoundingBox.Right) == true) { CurrentAnimation = "PushingLeft"; } else { CurrentAnimation = "MoveLeft"; } _position = _position + new Vector2(-MoveSpeed, 0); Facing = PlayerFacing.Left; } if (ControlKeys["NoMoveKeys"] == true) { IsAnimated = false; switch (Facing) { case PlayerFacing.Down: { CurrentAnimation = "MoveDown"; break; } case PlayerFacing.Up: { CurrentAnimation = "MoveUp"; break; } case PlayerFacing.Left: { CurrentAnimation = "MoveLeft"; break; } case PlayerFacing.Right: { CurrentAnimation = "MoveRight"; break; } } AnimationManager.Play(CurrentAnimation); } if (IsColliding == true) { foreach (Rectangle _collision in CollisionBoxes) { Uncollide(_collision); } for (int i = CollisionBoxes.Count - 1; i >= 0; i--) { CollisionBoxes.RemoveAt(i); } IsColliding = false; } UpdatePosition(_position); if (IsAnimated == true) { AnimationManager.Play(CurrentAnimation); AnimationManager.Update(gameTime); } }