private void AnimationFinishedHandler(string animationName) { if (animationName == "StretchOutBorderWidth" || animationName == "StretchOutBorderHeight") { // Retrieve the candy bar position var spriteData = Boss.CurrentAnimator.FrameData.SpriteData; int folderId = 0; var body2File = SpriterUtils.GetSpriterFile("body2.png", Boss.CurrentAnimator, out folderId); var worldPosition = SpriterUtils.GetWorldPosition("body2.png", Boss.CurrentAnimator, new Vector2(body2File.Width / 2f, 0f)); var angle = Boss.Rotation(); var candyBar = Boss.CurrentAnimator.Clone(); candyBar.StretchOut = false; candyBar.Position = worldPosition; candyBar.Rotation = angle; candyBar.Progress = 0; candyBar.Speed = 1; candyBar.Play("StretchInBorderWidth"); _candyBars.Clear(); _candyBars.Add(candyBar); var bodyFile = SpriterUtils.GetSpriterFile("body.png", Boss.CurrentAnimator, out folderId); var bodyPosition = SpriterUtils.GetWorldPosition("body.png", Boss.CurrentAnimator); var bodyRotation = Boss.Rotation() + MathHelper.Pi + ((float)Boss.Game.GameManager.Random.NextDouble() * (-(MathHelper.PiOver4 / 1.5f))); if (bodyPosition.Y <= 0) { bodyPosition.X += Boss.Width() / 2f + body2File.Width; bodyPosition.Y = 0; bodyRotation = -MathHelper.PiOver2; } else if (bodyPosition.Y > Boss.Game.ViewportAdapter.VirtualHeight) { bodyPosition.X -= Boss.Width() / 2f + body2File.Width; bodyPosition.Y = Boss.Game.ViewportAdapter.VirtualHeight; bodyRotation = MathHelper.PiOver2; } else if (bodyPosition.X > Boss.Game.ViewportAdapter.VirtualWidth) { bodyPosition.X = Boss.Game.ViewportAdapter.VirtualWidth; bodyPosition.Y += Boss.Height(); bodyRotation = 0; } else if (bodyPosition.X <= 0) { bodyPosition.X = 0; bodyPosition.Y -= Boss.Height(); bodyRotation = MathHelper.Pi; } Boss.Position(bodyPosition); Boss.Rotation(bodyRotation); //Boss.CurrentAnimator.Play("StretchOutBorderHeight"); } }
public SpriterCollisionConvexPolygon(ISpriterPhysicsEntity entity, String spritePartName, Vector2?relativePosition = null, float scale = 1f) : base(entity) { _spriterPhysicsEntity = entity; int folderId = 0; _spriterPartFile = SpriterUtils.GetSpriterFile(spritePartName, _spriterPhysicsEntity.GetCurrentAnimator(), out folderId); _relativePosition = relativePosition ?? Vector2.Zero; Vertices.Add(Vector2.Zero); Vertices.Add(new Vector2(_spriterPartFile.Width, 0) * scale); Vertices.Add(new Vector2(_spriterPartFile.Width, _spriterPartFile.Height) * scale); Vertices.Add(new Vector2(0, _spriterPartFile.Height) * scale); }
public override void Start() { base.Start(); _initialized = false; Boss.MoveTo(new Vector2(GameConfig.VirtualResolution.X / 2f, GameConfig.VirtualResolution.Y / 5f), 0.5f, true); Boss.CurrentAnimator.Play("Idle"); Boss.CurrentAnimator.AnimationFinished += AnimationFinishedHandler; _branch1File = SpriterUtils.GetSpriterFile("branch1.png", Boss.CurrentAnimator); _branch2File = SpriterUtils.GetSpriterFile("branch2.png", Boss.CurrentAnimator); _branches = new List <XmasSnowflakeBranch>(8); }
public SpriterCollisionConvexPolygon(ISpriterPhysicsEntity entity, String spritePartName, Vector2?relativePosition = null, Vector2?scaleVector = null) : base(entity) { var scale = Vector2.One; if (scaleVector.HasValue) { scale = scaleVector.Value; } _spriterPhysicsEntity = entity; _spriterPartFile = SpriterUtils.GetSpriterFile(spritePartName, _spriterPhysicsEntity.GetCurrentAnimator()); _relativePosition = relativePosition ?? Vector2.Zero; Vertices.Add(Vector2.Zero); Vertices.Add(new Vector2(_spriterPartFile.Width, 0) * scale); Vertices.Add(new Vector2(_spriterPartFile.Width, _spriterPartFile.Height) * scale); Vertices.Add(new Vector2(0, _spriterPartFile.Height) * scale); }
public override void Start() { base.Start(); Boss.Speed = GameConfig.BossDefaultSpeed * 2.5f; Boss.CurrentAnimator.AnimationFinished += AnimationFinishedHandler; Boss.CurrentAnimator.EventTriggered += EventTriggeredHandler; Boss.MoveOutside(true); _candyBars = new List <XmasCandyBar>(); _patternStarted = false; _stretchOut = false; _stretchIn = false; Boss.StartShootTimer = false; Boss.ShootTimerTime = 0.0005f; Boss.ShootTimerFinished += ShootTimerFinished; _body2File = SpriterUtils.GetSpriterFile("body2.png", Boss.CurrentAnimator); }