/// <summary> /// あいさつデータからトピックを生成する /// </summary> /// <returns></returns> public MsgTopic CreateGreetTopic(DateTime dt, LiplisTone Tone) { //ピックアップリスト生成 List <MsgTopic> PicupList = new List <MsgTopic>(); //現在時刻作成 DateTime nowTime = DateUtil.CreateDatetime(dt.Hour, dt.Minute, dt.Second); DateTime dayEndTime = DateUtil.CreateDatetime(23, 59, 59); DateTime daySrtTime = DateUtil.CreateDatetime(0, 0, 0); foreach (MsgGreet greet in GreetList) { //日またぎを考慮 if (greet.SrtTime <= greet.EndTime) { //日またがない if (nowTime >= greet.SrtTime && nowTime <= greet.EndTime) { PicupList.Add(greet.GetTopic()); } } else { //日またぎ if ((nowTime >= greet.SrtTime && nowTime <= dayEndTime) || (nowTime >= daySrtTime && nowTime <= greet.EndTime)) { PicupList.Add(greet.GetTopic()); } } } //0以下の場合は適当に返す if (PicupList.Count < 1) { if (GreetList.Count > 0) { return(GreetList[0].GetTopic()); } else { return(new MsgTopic(Tone, "こんにちは", "こんにちは", 0, 0, false, 0)); } } //シャッフルする PicupList.Shuffle(); //選択されたあいさつを返す return(PicupList[0]); }
public MsgGreet(LiplisTone Tone, ChatSetting chat, int AllocationId) { try { this.message = new MsgTopic(Tone, chat.sentence, chat.sentence, chat.GetEmotion(), chat.GetEmotion(), true, AllocationId); //Chatに設定があれば、時間範囲を設定する if (chat.rangeStart != "" || chat.rangeEnd != "") { //スタート時刻をセット string[] start = chat.rangeStart.Split(':'); this.SrtTime = DateUtil.CreateDatetime(int.Parse(start[0]), int.Parse(start[1]), 0); //終了時刻をセット string[] end = chat.rangeEnd.Split(':'); this.EndTime = DateUtil.CreateDatetime(int.Parse(end[0]), int.Parse(end[1]), 0); } } catch { //エラーでも処理を継続 } }