/// <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); }
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) { //話題取得 this.NowLoadTopic = resTopic.topicList[0]; //カテゴリセット this.NowLoadTopic.TopicClassification = ((int)NewsSource).ToString(); //おしゃべり済みに追加 LiplisStatus.Instance.NewTopic.ChattedKeyList.AddToNotDuplicate(this.NowLoadTopic.Clone()); //話題のセット、移動 StartCoroutine(SetToipcEnd()); //ログ追加 StartCoroutine(NewsLog.AddLog(this.NowLoadTopic.Clone())); } else { //だめなら、デフォルト処理 SetTopicTalkTopicList(); } }
/// <summary> /// ショートニュースからトピックを生成する /// </summary> /// <returns></returns> private IEnumerator SetTopicDirectTopic() { //トピックをランダムで取得する var Async = ClalisForLiplisGetNewTopicOne.GetNewTopicAsync(LiplisStatus.Instance.NewTopic.ToneUrlList); //非同期実行 yield return(Async); ResLpsTopicList resTopic = (ResLpsTopicList)Async.Current; //NULLチェック if (resTopic == null || resTopic.topicList.Count < 0) { this.NowLoadTopic = LiplisModels.Instance.CreateTopicFromShortNews(); } //取得したトピックを返す this.NowLoadTopic = resTopic.topicList[0]; //話題のセット、移動 StartCoroutine(SetToipcEnd()); }
/// <summary> /// 最新データをダウンロードする /// </summary> /// <returns></returns> private IEnumerator SetLastTopicMltData() { if (FlgRunSetLastTopicMltData) { goto End; } //実行中 FlgRunSetLastTopicMltData = true; //トークインスタンス取得 DatNewTopic NewTopic = LiplisStatus.Instance.NewTopic; //アシンク取得 IEnumerator Async = DownloadData(NewTopic); //非同期実行 yield return(Async); //データ取得 ResLpsTopicList DownloadLastData = (ResLpsTopicList)Async.Current; //NULLチェック if (DownloadLastData == null) { goto End; } if (DownloadLastData.topicList == null) { goto End; } //データ取得 NewTopic.LastData = DownloadLastData; //キーリスト取得 List <string> keyList = NewTopic.GetKeyList(); //スライス yield return(new WaitForSeconds(1f)); //キーが無ければ入れる。 foreach (MsgTopic topic in NewTopic.LastData.topicList) { //話題を積む条件は精査必要 if (!keyList.Contains(topic.DataKey)) { if (LiplisSetting.Instance.Setting.CatCheck(topic.TopicClassification)) { //対象カテゴリならトピックリストに追加する NewTopic.TalkTopicList.InsertToNotDuplicate(topic.Clone(), 0); } else { //おしゃべり済みに追加 NewTopic.ChattedKeyList.AddToNotDuplicate(topic.Clone()); } } //1フレームスキップ yield return(null); } //取得した結果、120件以下ならおかわり if (NewTopic.TalkTopicList.Count <= 120) { //終了にする FlgRunSetLastTopicMltData = false; StartCoroutine(SetLastTopicMltData()); } //重複排除 NewTopic.RemoveDuplicateTopicList(); //終了ラベル End :; //終了にする FlgRunSetLastTopicMltData = false; }