/// <summary> /// 通过replyId获取规则 /// </summary> /// <param name="replyId"></param> /// <returns></returns> public FriendCircleTalkInfo GetCurSceneFCRuleByReplyId(int replyId) { FriendCircleTalkInfo res = null; res = FriendCircleRuleInfo.friendCircleTalkInfos.Find(match => match.TalkId == replyId); return(res); }
private bool IsShowReplyBtn(List <int> hasSelects) { FriendCircleTalkInfo nextInfo = null; if (hasSelects.Count == 0) { if ((ClientTimer.Instance.GetCurrentTimeStamp() - _info.PublishTime) < 10000) { return(false); } nextInfo = _info.FriendCircleRuleInfo.friendCircleTalkInfos.Find((m) => { return(m.TalkId == 1); }); _replyIds.AddRange(_info.FriendCircleRuleInfo.friendCircleSceneInfo.startSelect); return(true); } else { var info = _info.FriendCircleRuleInfo.friendCircleTalkInfos.Find((m) => { return(m.TalkId == hasSelects[hasSelects.Count - 1]); }); if (info.Selects.Count == 0) { return(false); } nextInfo = _info.FriendCircleRuleInfo.friendCircleTalkInfos.Find((m) => { return(m.TalkId == info.Selects[0]); }); if (nextInfo.ReplyFromNpcId == 0) { _replyIds.AddRange(info.Selects); return(true); } } return(false); }
public List <int> TravelSelects(List <int> hasSelects) { List <int> selectIds = new List <int>(); if (hasSelects.Count == 0) { if ((ClientTimer.Instance.GetCurrentTimeStamp() - _info.PublishTime) < 10000) { return(selectIds); } // FriendCircleTalkInfo curStartTalk = _info.FriendCircleRuleInfo.friendCircleTalkInfos.Find((m) => { return m.TalkId == 1; }); if (_info.FriendCircleRuleInfo.friendCircleSceneInfo.startSelect.Count == 0) { return(selectIds); } int startid = _info.FriendCircleRuleInfo.friendCircleSceneInfo.startSelect[0]; FriendCircleTalkInfo curStartTalk = _info.FriendCircleRuleInfo.friendCircleTalkInfos.Find((m) => { return(m.TalkId == startid); }); while (curStartTalk.ReplyFromNpcId != 0) { selectIds.Add(curStartTalk.TalkId); if (curStartTalk.Selects.Count > 0) { curStartTalk = _info.FriendCircleRuleInfo.friendCircleTalkInfos.Find((m) => { return(m.TalkId == curStartTalk.Selects[0]); }); continue; } break; } return(selectIds); } var startIndex = 1; foreach (var v in _info.FriendCircleRuleInfo.friendCircleSceneInfo.startSelect) { if (hasSelects.Contains(v)) { startIndex = v; break; } } var endTalkId = hasSelects[hasSelects.Count - 1]; FriendCircleTalkInfo curtalk = _info.FriendCircleRuleInfo.friendCircleTalkInfos.Find((m) => { return(m.TalkId == startIndex); });; while (true) { if (curtalk.TalkId <= endTalkId) { selectIds.Add(curtalk.TalkId); if (curtalk.Selects.Count > 0) { var nexttalk = _info.FriendCircleRuleInfo.friendCircleTalkInfos.Find((m) => { return(m.TalkId == curtalk.Selects[0]); }); if (nexttalk.ReplyFromNpcId == 0) { foreach (var v in curtalk.Selects) { if (hasSelects.Contains(v)) { nexttalk = _info.FriendCircleRuleInfo.friendCircleTalkInfos.Find((m) => { return(m.TalkId == v); }); } } } curtalk = nexttalk; continue; } } break; } //while (curtalk.TalkId < endTalkId) //{ // int nextTalkId = 0; // if (curtalk.Selects.Count > 1) // { // foreach(var v in curtalk.Selects) // { // if(hasSelects.Contains(v)) // { // nextTalkId = v; // break; // } // } // } // else if(curtalk.Selects.Count>0) // { // nextTalkId = curtalk.Selects[0]; // } // else // { // break; // } // curtalk = _info.friendCircleRuleInfo.friendCircleTalkInfos.Find((m) => { return m.TalkId == nextTalkId; }); //} //selectIds.Add(endTalkId); //检查是否显示后续 if (endTalkId == _info.curOperateSelectID && (ClientTimer.Instance.GetCurrentTimeStamp() - _info.curOperateTime) < 10000) { } else { var curTalk2 = _info.FriendCircleRuleInfo.friendCircleTalkInfos.Find((m) => { return(m.TalkId == endTalkId); }); while (true) { if (curTalk2.Selects.Count > 0) { var nextTalk2 = _info.FriendCircleRuleInfo.friendCircleTalkInfos.Find((m) => { return(m.TalkId == curTalk2.Selects[0]); }); if (nextTalk2.ReplyFromNpcId == 0) { break; } else { selectIds.Add(curTalk2.Selects[0]); curTalk2 = nextTalk2; continue; } } break; } } return(selectIds); }