/// <summary>
 ///
 /// </summary>
 /// <param name="guideId"></param>
 /// <param name="progress"></param>
 /// <returns></returns>
 protected bool TryGetProgress(int guideId, out GuideProgressItem progress)
 {
     progress = null;
     if (_guideSet.FindKey(guideId) == null)
     {
         return(false);
     }
     progress = _userGuide.GuideProgress.Find(m => m.GuideId == guideId);
     return(progress != null);
 }
        /// <summary>
        /// 检测是否有引导
        /// </summary>
        /// <param name="progress"></param>
        /// <returns></returns>
        public bool Check(out GuideProgressItem progress)
        {
            V guideData;

            progress = null;
            CheckUserGuide();
            int currGuideId = _userGuide == null ? 0 : _userGuide.CurrGuideId;

            if (currGuideId == 0)
            {
                if (TryGetNextId(currGuideId, out guideData))
                {
                    currGuideId = guideData.ID;
                }
                else
                {
                    CloseGuide();
                    return(false);
                }
            }
            GuideProgressItem guideProgress;

            if (TryGetOrAddProgress(currGuideId, out guideProgress))
            {
                if (guideProgress.Status != GuideStatus.Closed)
                {
                    progress = guideProgress;
                    return(true);
                }
                if (TryGetNextId(currGuideId, out guideData))
                {
                    //下发下一个引导
                    if (TryGetOrAddProgress(guideData.ID, out guideProgress))
                    {
                        progress = guideProgress;
                        return(true);
                    }
                }
                else
                {
                    CloseGuide();
                    return(false);
                }
            }
            return(false);
        }
 /// <summary>
 /// 尝试获取引导进度
 /// </summary>
 /// <param name="guideId"></param>
 /// <param name="progress"></param>
 /// <returns></returns>
 protected bool TryGetOrAddProgress(int guideId, out GuideProgressItem progress)
 {
     progress = null;
     if (_guideSet.FindKey(guideId) == null)
     {
         return(false);
     }
     progress = _userGuide.GuideProgress.Find(m => m.GuideId == guideId);
     if (progress == null)
     {
         progress = new GuideProgressItem()
         {
             GuideId = guideId
         };
         _userGuide.CurrGuideId = guideId;
         _userGuide.GuideProgress.Add(progress);
     }
     return(true);
 }