/// <summary> ///刷新 /// </summary> /// <param name="pid"></param> private void RefreshGuideTargetObj(PanelID pid) { GuideDefine.LocalGuideGroupData localGroupData = null; GuideDefine.LocalGuideData localGuideData = null; if (null != CurDoUnConstraintGuide && CurDoUnConstraintGuide.Count > 0) { var iemurator = CurDoUnConstraintGuide.GetEnumerator(); while (iemurator.MoveNext()) { localGroupData = iemurator.Current.Value; if (null == localGroupData || !localGroupData.LoopTrigger) { continue; } if (localGroupData.CurStep != 0 && TryGetGuideLocalData(localGroupData.CurStep, out localGuideData) && localGuideData.GuideTargetDependPanel == pid) { localGuideData.GuideTargetObj = null; } } } if (null != CurDoRepeatUnConstraintGuide) { if (CurDoRepeatUnConstraintGuide.CurStep != 0 && TryGetGuideLocalData(CurDoRepeatUnConstraintGuide.CurStep, out localGuideData) && localGuideData.GuideTargetDependPanel == pid) { localGuideData.GuideTargetObj = null; } } }
/// <summary> /// 是否引导已完成 /// </summary> /// <param name="guideId"></param> /// <returns></returns> public bool IsGuideStepComplete(uint guideId) { GuideDefine.LocalGuideGroupData localGroupData = null; uint groupId = 0; if (TryGetGuideGroupID(guideId, out groupId) && TryGetGuideGroupData(groupId, out localGroupData)) { if (IsGuideGroupComplete(guideId)) { return(true); } if (localGroupData.GType == GuideDefine.GuideType.Unconstrain) { if (null != CurDoConstriantGuide && CurDoConstriantGuide.GroupId == guideId) { return(CurDoConstriantGuide.IsCompleteStep(guideId)); } } else if (localGroupData.GType == GuideDefine.GuideType.Constraint) { if (CurDoUnConstraintGuide.ContainsKey(localGroupData.GroupId)) { return(CurDoUnConstraintGuide[localGroupData.GroupId].IsCompleteStep(guideId)); } } } return(false); }
/// <summary> /// 重置引导组 /// </summary> /// <param name="groupID"></param> private void ResetGuideGroup(uint groupID) { uint curDoGuide = 0; if (IsDoingGroup(groupID, out curDoGuide)) { if (CurDoUnConstraintGuide.ContainsKey(groupID)) { CurDoUnConstraintGuide.Remove(groupID); } else if (null != CurDoRepeatUnConstraintGuide && CurDoRepeatUnConstraintGuide.GroupId == groupID) { m_curDoRepeatUnConstraintGuide = null; } CancelUnconstrainGuideShow(curDoGuide); } }
/// <summary> /// 是否当前正在执行引导组 /// </summary> /// <param name="guideGroup"></param> /// <param name="guideId"></param> /// <returns></returns> public bool IsDoingGroup(uint guideGroup, out uint guideId) { guideId = 0; GuideDefine.LocalGuideGroupData groupData = null; if (TryGetGuideGroupData(guideGroup, out groupData)) { if (groupData.GType == GuideDefine.GuideType.Unconstrain) { if (!groupData.LoopTrigger) { if (null != CurDoUnConstraintGuide && CurDoUnConstraintGuide.Count != 0) { var iemurator = CurDoUnConstraintGuide.GetEnumerator(); GuideDefine.LocalGuideGroupData tempGroup = null; while (iemurator.MoveNext()) { tempGroup = iemurator.Current.Value; if (tempGroup.GroupId == guideGroup) { guideId = tempGroup.CurStep; return(true); } } } } else if (null != CurDoRepeatUnConstraintGuide && CurDoRepeatUnConstraintGuide.GroupId == guideGroup) { guideId = CurDoRepeatUnConstraintGuide.CurStep; return(true); } } else if (groupData.GType == GuideDefine.GuideType.Constraint) { if (null != CurDoConstriantGuide && CurDoConstriantGuide.GroupId == guideGroup) { guideId = CurDoConstriantGuide.CurStep; return(true); } } } return(false); }
/// <summary> /// 重置引导 /// </summary> private void ResetGuide() { //新手引导 m_lst_completeGroupGuide.Clear(); m_curDoConstraintGuide = null; m_lstTriggerGuideGroups.Clear(); m_bGuideDataReady = false; if (null != m_dic_guideGroupDatas && m_dic_guideGroupDatas.Count != 0) { List <uint> groupIds = new List <uint>(m_dic_guideGroupDatas.Keys); for (int i = 0, max = groupIds.Count; i < max; i++) { m_dic_guideGroupDatas[groupIds[i]].Reset(); } } if (null != m_dic_canDoGuideGroup) { m_dic_canDoGuideGroup.Clear(); } if (null != CurDoUnConstraintGuide && CurDoUnConstraintGuide.Count > 0) { var iemurator = CurDoUnConstraintGuide.GetEnumerator(); GuideDefine.LocalGuideGroupData localGroupData = null; while (iemurator.MoveNext()) { localGroupData = iemurator.Current.Value; if (localGroupData.CurStep != 0) { CancelUnconstrainGuideShow(localGroupData.CurStep); } } CurDoUnConstraintGuide.Clear(); } if (null != m_curDoRepeatUnConstraintGuide) { if (m_curDoRepeatUnConstraintGuide.CurStep != 0) { CancelUnconstrainGuideShow(m_curDoRepeatUnConstraintGuide.CurStep); } m_curDoRepeatUnConstraintGuide = null; } }
/// <summary> /// 依赖面板关闭清空相应的循环触发引导(正在执行,或者等待执行的) /// </summary> /// <param name="id"></param> private void ClearRecycleTriggerGuideByPanel(PanelID pid) { //1、等待列表移除 uint tempID = 0; List <uint> waitDoList = null; List <uint> removeList = null; List <uint> stepList = null; GuideDefine.LocalGuideGroupData localGroupData = null; GuideDefine.LocalGuideData localGuideData = null; if (m_dic_canDoGuideGroup.TryGetValue(GuideDefine.GuideType.Unconstrain, out waitDoList) && waitDoList.Count > 0) { for (int i = 0, max = waitDoList.Count; i < max; i++) { tempID = waitDoList[i]; if (!TryGetGuideGroupData(tempID, out localGroupData) || !localGroupData.LoopTrigger) { continue; } stepList = localGroupData.GroupSteps; if (null == stepList || stepList.Count == 0) { continue; } for (int j = 0, maxj = stepList.Count; j < maxj; j++) { tempID = stepList[j]; if (!TryGetGuideLocalData(tempID, out localGuideData)) { continue; } if (localGuideData.GuideTargetDependPanel == pid) { if (null == removeList) { removeList = new List <uint>(); } if (!removeList.Contains(waitDoList[i])) { removeList.Add(waitDoList[i]); } } } } } if (null != removeList) { for (int i = 0, max = removeList.Count; i < max; i++) { tempID = removeList[i]; waitDoList.Remove(tempID); } } //2、进行中引导 if (null != CurDoUnConstraintGuide && CurDoUnConstraintGuide.Count > 0) { var iemurator = CurDoUnConstraintGuide.GetEnumerator(); while (iemurator.MoveNext()) { localGroupData = iemurator.Current.Value; if (null == localGroupData || !localGroupData.LoopTrigger) { continue; } if (localGroupData.CurStep != 0 && TryGetGuideLocalData(localGroupData.CurStep, out localGuideData) && localGuideData.GuideTargetDependPanel == pid && ( //localGroupData.CurStep != localGroupData.FirstStep || pid != PanelID.MainPanel)) { if (null == removeList) { removeList = new List <uint>(); } if (!removeList.Contains(localGroupData.GroupId)) { removeList.Add(localGroupData.GroupId); } } } } if (null != removeList) { for (int i = 0, max = removeList.Count; i < max; i++) { tempID = removeList[i]; ResetGuideGroup(tempID); } } //3、重复触发引导 if (null != CurDoRepeatUnConstraintGuide && CurDoRepeatUnConstraintGuide.CurStep != 0) { if (CurDoRepeatUnConstraintGuide.CurStep != 0 && TryGetGuideLocalData(CurDoRepeatUnConstraintGuide.CurStep, out localGuideData) && localGuideData.GuideTargetDependPanel == pid && ( //localGroupData.CurStep != localGroupData.FirstStep || pid != PanelID.MainPanel)) { ResetGuideGroup(CurDoRepeatUnConstraintGuide.GroupId); } } }
/// <summary> /// 完成引导 /// </summary> /// <param name="guideId"></param> private void CompleteGuide(uint guideId) { // Engine.Utility.Log.LogGroup("WJH", "CompleteGuide:" + guideId); GuideDefine.LocalGuideGroupData groupdata = null; uint groupID = 0; if (TryGetGuideGroupID(guideId, out groupID) && TryGetGuideGroupData(groupID, out groupdata)) { bool complete = false; if (groupdata.GType == GuideDefine.GuideType.Constraint) { if (null != CurDoConstriantGuide && CurDoConstriantGuide.CurStep == guideId) { CurDoConstriantGuide.LastestDoStep = guideId; CurDoConstriantGuide.EndCur(); if (CurDoConstriantGuide.CurStep == CurDoConstriantGuide.LastStepGuideID) { complete = true; CurDoConstriantGuide = null; } } } else if (groupdata.GType == GuideDefine.GuideType.Unconstrain) { if (CurDoUnConstraintGuide.ContainsKey(groupID)) { if (CurDoUnConstraintGuide[groupID].CurStep == guideId) { CurDoUnConstraintGuide[groupID].LastestDoStep = guideId; CurDoUnConstraintGuide[groupID].EndCur(); if (CurDoUnConstraintGuide[groupID].LastestDoStep == CurDoUnConstraintGuide[groupID].LastStepGuideID) { complete = true; CurDoUnConstraintGuide.Remove(groupID); } } } else if (null != CurDoRepeatUnConstraintGuide && CurDoRepeatUnConstraintGuide.CurStep == guideId) { CurDoRepeatUnConstraintGuide.LastestDoStep = guideId; CurDoRepeatUnConstraintGuide.EndCur(); if (CurDoRepeatUnConstraintGuide.LastestDoStep == CurDoRepeatUnConstraintGuide.LastStepGuideID) { complete = true; CurDoRepeatUnConstraintGuide = null; } } } //如果组最后一步发送消息到服务器保存已完成组 if (complete && !m_lst_completeGroupGuide.Contains(groupdata.GroupId)) { m_lst_completeGroupGuide.Add(groupdata.GroupId); //非循环引导 if (!groupdata.LoopTrigger) { SendGuideComplete(groupdata.GroupId); } } } }