Beispiel #1
0
        public MsgTopic TopicListDequeue(List <LiplisModel> ModelList, int retryCnt)
        {
            //次の話題をロードする
            MsgTopic result = LiplisStatus.Instance.NewTopic.TalkTopicList.Dequeue();

            TopicUtil.SetAllocationIdAndTone(result, ModelList);

            //現在ロード中の話題をおしゃべり済みに入れる
            if (!result.FlgNotAddChatted)
            {
                LiplisStatus.Instance.NewTopic.ChattedKeyList.AddToNotDuplicate(result.Clone());
            }

            //話題一致ならそのまま帰す
            if (LiplisSetting.Instance.Setting.CatCheck(result.TopicClassification))
            {
                return(result);
            }
            else
            {
                if (retryCnt > 10)
                {
                    //10回やってダメならそのまま帰す
                    return(result);
                }
                else
                {
                    retryCnt++;
                    return(TopicListDequeue(ModelList, retryCnt));
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// 最新データをダウンロードする
        /// </summary>
        /// <returns></returns>
        private IEnumerator SetTopicDirectTopicAsync()
        {
            //最新ニュースデータ取得
            var Async = ClalisForLiplisGetNewTopicOne.GetNewTopicAsync(LiplisStatus.Instance.NewTopic.ToneUrlList);

            //非同期実行
            yield return(Async);

            //データ取得
            ResLpsTopicList data = (ResLpsTopicList)Async.Current;

            //NULL回避
            if (data == null)
            {
                yield break;
            }
            if (data.topicList == null)
            {
                yield break;
            }

            //おしゃべり済みに追加しないでおしゃべり
            foreach (var topic in data.topicList)
            {
                topic.FlgNotAddChatted = true;

                //アロケーションIDを設定する
                TopicUtil.SetAllocationIdAndTone(topic, LiplisModels.Instance.GetModelList());
            }

            //データ追加
            LiplisStatus.Instance.NewTopic.TalkTopicList.AddRange(data.topicList);
        }
Beispiel #3
0
        private IEnumerator SetTopicTalkFromClalis(string DataKey, ContentCategoly NewsSource)
        {
            //トピックをランダムで取得する
            var Async = ClalisForLiplisGetNewTopicOne.GetNewTopicAsync(LiplisStatus.Instance.NewTopic.ToneUrlList, DataKey, ((int)NewsSource).ToString());

            //非同期実行
            yield return(Async);

            //取得結果取得
            ResLpsTopicList resTopic = (ResLpsTopicList)Async.Current;

            //現在ロード中の話題をおしゃべり済みに入れる
            if (resTopic != null)
            {
                //対象リストを洗い替えする
                LiplisStatus.Instance.NewsList.DequeueKeyNewsList(NewsSource, DataKey);

                //話題取得
                this.NowLoadTopic = resTopic.topicList[0];

                //アロケーションID設定
                TopicUtil.SetAllocationIdAndTone(this.NowLoadTopic, LiplisModels.Instance.GetModelList());

                //カテゴリセット
                this.NowLoadTopic.TopicClassification = ((int)NewsSource).ToString();

                //おしゃべり済みに追加
                LiplisStatus.Instance.NewTopic.ChattedKeyList.AddToNotDuplicate(this.NowLoadTopic.Clone());

                //話題のセット、移動
                StartCoroutine(SetToipcEnd());

                //ログ追加
                LiplisTalkLog.Instance.AddLog(this.LogLoadTopic.Clone());
            }
            else
            {
                //だめなら、デフォルト処理
                SetTopicTalkTopicList();
            }
        }
Beispiel #4
0
        /// <summary>
        /// ラストトピックリストからトピックを取得する
        /// </summary>
        /// <param name="retryCnt"></param>
        /// <returns></returns>
        public MsgTopic GetTopicFromResLpsTopicList(List <LiplisModel> ModelList)
        {
            //次の話題をロードする
            int count = LiplisStatus.Instance.NewTopic.LastData.topicList.Count;

            //乱数取得
            System.Random r = new System.Random();

            //インデックス取得
            int idx = r.Next(0, count - 1);

            //ラストトピックからランダムに1件取得する
            MsgTopic result = LiplisStatus.Instance.NewTopic.LastData.topicList[idx].Clone();

            //アロケーションID設定
            if (result != null)
            {
                TopicUtil.SetAllocationIdAndTone(result, ModelList);
            }

            return(result);
        }
Beispiel #5
0
        /// <summary>
        /// トピックを検索する
        /// </summary>
        /// <param name="DataKey"></param>
        /// <returns></returns>
        public MsgTopic SearchTopic(string DataKey, List <LiplisModel> ModelList)
        {
            MsgTopic result = null;

            //トピックリストから検索。あればトピックリストから返す
            foreach (var topic in TalkTopicList)
            {
                if (topic.DataKey == DataKey)
                {
                    result = TopicListDequeueTargetTopic(topic);
                    break;
                }
            }

            //おしゃべり済みデータから検索
            if (result == null)
            {
                foreach (var topic in ChattedKeyList)
                {
                    if (topic.DataKey == DataKey)
                    {
                        result = topic.Clone();
                        break;
                    }
                }
            }

            //アロケーションID設定
            if (result != null)
            {
                TopicUtil.SetAllocationIdAndTone(result, ModelList);
            }

            //見つからない場合はNULLを返す
            return(result);
        }