예제 #1
0
    /// <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);
    }
예제 #2
0
    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);
    }
예제 #3
0
    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);
    }