/// <summary> /// To easily get the right animation/texture for falling mario with a single call. /// You need to get set mario's source rectangle equal to the rectangle you pass in. /// To do this: /// Rectangle source = SourceRectangle; /// MarioSpriteFactory.FallingJump(ref source); /// SourceRectangle = source; /// </summary> /// <param name="source"></param> public static Rectangle FallingJump(Rectangle source, Mario.ActionStateType action) { if (source.X >= RightFacingStart) { source.X = FallingStart + RightFacingStart; } else { source.X = FallingStart; } if (source.Y < SuperMarioStart) { source.Y = NormalMarioJump; source.Height = FallingHeightNormal; } else if (source.Y < FireMarioStart) { source.Y = SuperMarioJump; source.Height = FallingHeightSuper; } else { source.Y = FireMarioJump; source.Height = FallingHeightSuper; } return(source); }
public static void Walking(ref Rectangle source, int frame, Mario.PowerStateType power, Mario.ActionStateType walkingDir) { if (frame == 0) { if (power != Mario.PowerStateType.Normal) { source.Width = WalkingSuperWidth; source.X = 0; source.Y = SuperMarioStart; if (power == Mario.PowerStateType.Fire) { source.Y = FireMarioStart; } } else { source.Width = IdleWidthNormal; source.X = 0; source.Y = NormalMarioStart; } } else if (frame == 1) { if (power != Mario.PowerStateType.Normal) { source.Width = WalkingSuperWidth; source.X = SuperFrame2; source.Y = SuperMarioStart; if (power == Mario.PowerStateType.Fire) { source.Y = FireMarioStart; } } else { source.Width = IdleWidthNormal; source.X = NormalFrame2; source.Y = NormalMarioStart; } } else { if (power != Mario.PowerStateType.Normal) { source.Width = WalkingSuperWidth; source.X = SuperFrame3; source.Y = SuperMarioStart; if (power == Mario.PowerStateType.Fire) { source.Y = FireMarioStart; } } else { source.Width = IdleWidthNormal; source.X = NormalFrame3; source.Y = NormalMarioStart; } } if (walkingDir == Mario.ActionStateType.WalkingRight) { source.X += RightFacingStart; } }
public static void ShellWalking(ref Rectangle source, int frame, Mario.PowerStateType power, Mario.ActionStateType walkingDir) { if (frame == 0) { if (power != Mario.PowerStateType.Normal) { source.Width = ShellSuperWidth; source.X = 0; source.Height = ShellSuperHeight; if (power == Mario.PowerStateType.Fire) { source.Y = ShellFire; } else { source.Y = ShellSuper; } } else { source.Width = ShellNormalWidth; source.X = 0; source.Y = ShellNormal; source.Height = ShellNormalHeight; } } else if (frame == 1) { if (power != Mario.PowerStateType.Normal) { source.Width = ShellNormalWidth; source.X = ShellNormalWidth; source.Y = ShellSuper; source.Height = RunningSuperHeight; if (power == Mario.PowerStateType.Fire) { source.Y = ShellFire; } } else { source.Width = ShellNormalWidth; source.X = ShellNormalWidth; source.Y = ShellNormal; source.Height = ShellNormalHeight; } } else { if (power != Mario.PowerStateType.Normal) { source.Width = ShellSuperWidth; source.X = 2 * ShellSuperWidth; source.Y = ShellSuper; source.Height = ShellSuperHeight3; if (power == Mario.PowerStateType.Fire) { source.Y = ShellFire; } } else { source.Width = ShellNormalWidth; source.X = ShellNormalWidth * 2; source.Y = ShellNormal; source.Height = ShellNormalHeight3; } } if (walkingDir == Mario.ActionStateType.WalkingRight) { source.X += RightFacingStart; } }
public static void SetSourceRectangle(ref Rectangle source, Mario.PowerStateType power, Mario.ActionStateType action) { Point location = new Point(); Point size = new Point(); if (source.X >= RightFacingStart) { location.X = RightFacingStart; } else { location.X = 0; } //set the location to the beginning of the 'set' of sprites for each power state switch (power) { case Mario.PowerStateType.Normal: location.Y = NormalMarioStart; size.X = IdleWidthNormal; size.Y = IdleHeightNormal; break; case Mario.PowerStateType.Super: location.Y = SuperMarioStart; size.X = IdleWidthSuper; size.Y = IdleHeightSuper; break; case Mario.PowerStateType.Fire: location.Y = FireMarioStart; size.X = IdleWidthSuper; size.Y = IdleHeightSuper; break; case Mario.PowerStateType.Dead: location.Y = DeadMarioStart; location.X = 0; size.X = DeadWidth; size.Y = DeadHeight; break; } switch (action) { case Mario.ActionStateType.WalkingLeft: if (location.Y > SuperMarioStart) { size.X = IdleWidthSuper; } break; case Mario.ActionStateType.WalkingRight: location.X = RightFacingStart; if (location.Y > SuperMarioStart) { size.X = IdleWidthSuper; } break; case Mario.ActionStateType.Jumping: switch (power) { case Mario.PowerStateType.Normal: location.Y = NormalMarioJump; size.Y = JumpHeightNormal; break; case Mario.PowerStateType.Super: location.Y = SuperMarioJump; size.Y = JumpHeightSuper; break; case Mario.PowerStateType.Fire: location.Y = FireMarioJump; size.Y = JumpHeightSuper; break; } size.X = JumpWidth; break; case Mario.ActionStateType.Crouching: switch (power) { case Mario.PowerStateType.Normal: location.Y = NormalMarioCrouch; size.Y = CrouchHeightNormal; size.X = CrouchWidthNormal; break; case Mario.PowerStateType.Super: location.Y = SuperMarioCrouch; size.Y = CrouchHeightSuper; size.X = CrouchWidthSuper; break; case Mario.PowerStateType.Fire: location.Y = FireMarioCrouch; size.Y = CrouchHeightSuper; size.X = CrouchWidthSuper; break; } break; case Mario.ActionStateType.HoldingShell: switch (power) { case Mario.PowerStateType.Normal: location.Y = ShellNormal; size.Y = ShellNormalHeight; size.X = ShellNormalWidth; break; case Mario.PowerStateType.Super: location.Y = ShellSuper; size.Y = ShellSuperHeight; size.X = ShellNormalWidth; break; case Mario.PowerStateType.Fire: location.Y = ShellFire; size.Y = ShellSuperHeight; size.X = ShellSuperWidth; break; } break; } source.Location = location; source.Size = size; }