public SlideDownFlagDecorator(IMario mario, Vector2 locationOfBase) : base(mario) { this.locationOfBase = locationOfBase; slidingState = SlidingStates.SLIDING_DOWN; ScoringSystem.Instance.AddPointsForFinalPole(mario.Box); LevelCounter.Instance.LevelUp(); SoundManager.StopSong(); SoundManager.Instance.PlaySoundEffect("clearStage"); }
public override void Update() { switch (slidingState) { case SlidingStates.SLIDING_DOWN: Timer.StopTimer(); if (Math.Abs(DecoratedMario.Position.Y - locationOfBase.Y) > DecoratorUtil.locationOffset) { DecoratedMario.Position += Vector2.UnitY * DecoratorUtil.locationOffset; } else { slidingState = SlidingStates.WALKING_RIGHT; } break; case SlidingStates.WALKING_RIGHT: if (DecoratedMario.Position.X > GameObjectManager.Instance.EndOfLevelXPosition + DecoratorUtil.walkRightOffset) { slidingState = SlidingStates.HOLDING; } else { this.DecoratedMario.GoRight(); this.DecoratedMario.Position += Vector2.UnitX * DecoratorUtil.Double; } break; case SlidingStates.HOLDING: if (holdingTime <= 0) { holdingTime--; } else { slidingState = SlidingStates.EXIT; } break; default: RemoveSelf(); break; } }