public void Add(Bullet bullet)
 {
     LiveBullets.Add(new LiveBullet
     {
         Bullet   = bullet,
         Position = GetNewLiveBulletPosition(bullet)
     });
 }
 private void AnimatedControl_Draw(ICanvasAnimatedControl sender, CanvasAnimatedDrawEventArgs args)
 {
     foreach (var item in LiveBullets.ToList())
     {
         var textFormat = new CanvasTextFormat
         {
             FontSize = item.Bullet.FontSize
         };
         args.DrawingSession.DrawText(item.Bullet.Text, item.Position, item.Bullet.Color, textFormat);
     }
 }
        private Vector2 GetNewLiveBulletPosition(Bullet bullet)
        {
            float x         = (float)_animatedControl.Size.Width;
            float boundaryY = (float)_animatedControl.Size.Height;
            float y         = 0;

            if (LiveBullets.Count > 0)
            {
                var last = LiveBullets.Last();
                y = last.Position.Y + last.Bullet.FontSize;
                if (y + bullet.FontSize > boundaryY)
                {
                    y = 0;
                }
            }
            return(new Vector2(x, y));
        }
 private void AnimatedControl_Update(ICanvasAnimatedControl sender, CanvasAnimatedUpdateEventArgs args)
 {
     if (State == BulletScreenState.Running)
     {
         foreach (var item in LiveBullets.ToList())
         {
             if (item.Bullet.MoveSpeed.HasValue)
             {
                 item.Position = new Vector2(item.Position.X - item.Bullet.MoveSpeed.Value, item.Position.Y);
             }
             else
             {
                 item.Position = new Vector2(item.Position.X - MoveSpeed, item.Position.Y);
             }
             if (item.Position.X + item.Bullet.Width < 0)
             {
                 LiveBullets.Remove(item);
             }
         }
     }
 }
 public void Clear()
 {
     LiveBullets.Clear();
 }