[Bug1000268]修改引导时有几率卡死可能的原因
parent
fa7fceb55c
commit
c88a831761
|
|
@ -41,6 +41,10 @@ namespace Gameplay.Guide
|
|||
/// </summary>
|
||||
private int reactionID = ConditionReactor.INVALID_ALLOC_ID;
|
||||
/// <summary>
|
||||
/// 当前完成的引导id,防止服务器没保存成功
|
||||
/// </summary>
|
||||
private int curCompleteId = 0;
|
||||
/// <summary>
|
||||
/// 特殊pv引导id
|
||||
/// </summary>
|
||||
private int pvGuideID = 1000;
|
||||
|
|
@ -127,13 +131,18 @@ namespace Gameplay.Guide
|
|||
if (IsGuiding)
|
||||
return;
|
||||
|
||||
if (ConditionReactor.INVALID_ALLOC_ID != reactionID)
|
||||
ConditionReactor.Instance.RemoveReaction(reactionID);
|
||||
//if (ConditionReactor.INVALID_ALLOC_ID != reactionID)
|
||||
//ConditionReactor.Instance.RemoveReaction(reactionID);
|
||||
|
||||
if (completeStepId == 0)
|
||||
completeStepId = (int)Actor.Instance.Logic.GetCount((uint)LogicID.NewGuideProgress);
|
||||
if (0 == completeStepId)
|
||||
{
|
||||
if (0 == curCompleteId)
|
||||
curCompleteId = (int)Actor.Instance.Logic.GetCount((uint)LogicID.NewGuideProgress);
|
||||
}
|
||||
else
|
||||
curCompleteId = completeStepId;
|
||||
|
||||
int groupId = GetGuideGroupId(completeStepId);
|
||||
int groupId = GetGuideGroupId(curCompleteId);
|
||||
if (!dicGuideCfg.TryGetValue(groupId, out LinkedList<DataGuideCfg> linkCfg))
|
||||
return;
|
||||
|
||||
|
|
@ -145,7 +154,7 @@ namespace Gameplay.Guide
|
|||
return;
|
||||
}
|
||||
|
||||
reactionID = ConditionReactor.Instance.AddReaction(curGroup.CurStep.Cfg.BeginCondition, OnBeginGuide);
|
||||
//reactionID = ConditionReactor.Instance.AddReaction(curGroup.CurStep.Cfg.BeginCondition, OnBeginGuide);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
|
@ -171,6 +180,7 @@ namespace Gameplay.Guide
|
|||
return;
|
||||
}
|
||||
|
||||
curCompleteId = curGroup.CurStep.Cfg.Id;
|
||||
NetHelper.SaveGuideProgress((uint)curGroup.CurStep.Cfg.Id); // 完成引导步骤,保存服务器
|
||||
DebugUtil.Log($"<color=#00FA9A>完成引导步骤,服务器保存引导id:{curGroup.CurStep.Cfg.Id}</color>");
|
||||
queueTime.Clear();
|
||||
|
|
@ -244,6 +254,7 @@ namespace Gameplay.Guide
|
|||
return;
|
||||
}
|
||||
|
||||
curCompleteId = linkedCfg.Last.Value.Id;
|
||||
NetHelper.SaveGuideProgress((uint)linkedCfg.Last.Value.Id); // 跳过引导步骤,保存服务器
|
||||
DebugUtil.Log($"<color=#00FA9A>跳过引导组,服务器保存引导id:{linkedCfg.Last.Value.Id}</color>");
|
||||
EndGuide(false);
|
||||
|
|
@ -258,6 +269,7 @@ namespace Gameplay.Guide
|
|||
DebugUtil.Log("跳过所有引导");
|
||||
GuideConfig guideConfig = TableManager.Instance.Tables.GuideConfig;
|
||||
DataGuideCfg cfg = guideConfig.DataList[^1];
|
||||
curCompleteId = cfg.Id;
|
||||
NetHelper.SaveGuideProgress((uint)cfg.Id);
|
||||
if (!isEditor &&
|
||||
!IsPlayPVVideo &&
|
||||
|
|
@ -289,9 +301,14 @@ namespace Gameplay.Guide
|
|||
/// <returns></returns>
|
||||
public bool CheckComplete(int guideId)
|
||||
{
|
||||
int curCompleteStepId = (int)Actor.Instance.Logic.GetCount((uint)LogicID.NewGuideProgress);
|
||||
if (0 == curCompleteId)
|
||||
{
|
||||
int curCompleteStepId = (int)Actor.Instance.Logic.GetCount((uint)LogicID.NewGuideProgress);
|
||||
|
||||
return curCompleteStepId >= guideId;
|
||||
return curCompleteStepId >= guideId;
|
||||
}
|
||||
|
||||
return curCompleteId >= guideId;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -442,8 +459,8 @@ namespace Gameplay.Guide
|
|||
if (!conditionResult)
|
||||
return;
|
||||
|
||||
ConditionReactor.Instance.RemoveReaction(reactionID);
|
||||
this.reactionID = ConditionReactor.INVALID_ALLOC_ID;
|
||||
//ConditionReactor.Instance.RemoveReaction(reactionID);
|
||||
//this.reactionID = ConditionReactor.INVALID_ALLOC_ID;
|
||||
|
||||
if (IsGuiding)
|
||||
return;
|
||||
|
|
@ -451,8 +468,6 @@ namespace Gameplay.Guide
|
|||
try
|
||||
{
|
||||
SetGuideState();
|
||||
int completeStepId = (int)Actor.Instance.Logic.GetCount((uint)LogicID.NewGuideProgress);
|
||||
DebugUtil.Log($"<color=#00FA9A>已完成的引导步骤id:{completeStepId},开始引导组id:{curGroup.GroupId}</color>");
|
||||
curGroup.BeginGuide();
|
||||
}
|
||||
catch (Exception e)
|
||||
|
|
|
|||
Loading…
Reference in New Issue