/// <summary> /// 先頭ウインドウをサクジョする /// </summary> private void DestroyWindow() { Queue <TalkWindow> bufQ = new Queue <TalkWindow>(); //カウントチェック if (WindowTalkListQ.Count < 1) { return; } else { //まわして、範囲内のものはバッファキューに、範囲外のものは削除 while (WindowTalkListQ.Count > 0) { TalkWindow talkWindow = WindowTalkListQ.Dequeue(); if (WindowTalkListQ.Count > 2) { talkWindow.CloseWindow(); } else { //1個取り出し、削除 bufQ.Enqueue(talkWindow); } } //すげかえる WindowTalkListQ = bufQ; } }
public TalkWindow CreateWindowTalk(GameObject window, string message) { try { //ウインドウ名設定 window.name = "TalkWindow" + WindowTalkListQ.Count; //親キャンバスに登録 window.transform.SetParent(CanvasRendering.transform, false); //位置設定 window.transform.localPosition = WINDOW_POS.GetPos(ModelLocation); //サイズ変更 RectTransform windowRect = window.GetComponent <RectTransform>(); //ウインドウサイズ設定 windowRect.sizeDelta = CulcWindowSize(message); //ローカルスケール設定 windowRect.localScale = new Vector3(0.5f, 0.5f, 0.5f); //ウインドウインスタンス取得 TalkWindow talkWindow = window.GetComponent <TalkWindow>(); //モデル設定 talkWindow.TargetModel = ActiveModel; //テキスト設定 talkWindow.SetNextLine(message); //ペアレント設定 talkWindow.SetParentWindow(window); //高さ設定 talkWindow.SetHeightImg(windowRect.sizeDelta.y); //生成時刻設定 talkWindow.SetCreateTime(DateTime.Now); //ウインドウ画像の設定 talkWindow.SetWindowImage(SpriteWindow); //NULLでなければウインドウセット if (talkWindow != null) { //ウインドウセット SetWindow(talkWindow, AllocationId); } //結果を返す return(talkWindow); } catch (Exception ex) { Debug.Log(ex); return(null); } }
/// <summary> /// ウインドウ作成 /// </summary> /// <param name="message"></param> /// <param name="AllocationId"></param> public void CreateWindow(string message, int AllocationId) { //キャラクターデータ取得 LiplisModel charData = modelController.GetCharacterModel(AllocationId); //おしゃべりウインドウ生成し、現在ウインドウ設置 this.NowTalkWindow = charData.CreateWindowTalk(message); }
/// <summary> /// ウインドウをセットする /// </summary> /// <param name="talkWindow"></param> /// <param name="AllocationId"></param> public void SetWindow(TalkWindow talkWindow, int AllocationId) { //ターゲットモデルセット talkWindow.TargetModel = ActiveModel; //ウインドウを追加する AddWindow(talkWindow); //ウインドウ DestroyWindow(); }
// Start is called before the first frame update void Start() { talkWindow = TalkWindow.GetTalkWindow(); text = talkWindow.content_text; canvas = talkWindow.canvas; talkWindow.SetCharImage(char_image_path); talkTool = GameObject.Find("NPCs").GetComponentInParent <TalkTool>(); }
/// <summary> /// ウインドをスライドする /// </summary> private void SlideWindow(TalkWindow newTalkWindow) { //ウインドウが無ければ動かさない if (WindowTalkListQ.Count < 1) { return; } //移動量算出 float moveVal = GetWindowMoveValue(newTalkWindow.GetCurrentText()); //回してスライド foreach (var talkWindow in WindowTalkListQ) { if (!talkWindow.flgEnd) { //移動目標設定 talkWindow.SetMoveTarget(new Vector3(talkWindow.ParentWindow.transform.localPosition.x, talkWindow.ParentWindow.transform.localPosition.y + moveVal, talkWindow.ParentWindow.transform.localPosition.z)); } } }
/// <summary> /// ウインドウを追加する /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <param name="z"></param> /// <param name="message"></param> private void AddWindow(TalkWindow talkWindow) { //1個以上ならスライドする if (WindowTalkListQ.Count >= 1) { //一つ前のウインドウの高さを取得する float prvHeight = this.NowTalkWindow.heightImg; float height = NowTalkWindow.ParentWindow.GetComponent <RectTransform>().sizeDelta.y; //ウインドウ移動量設定 SlideWindow(talkWindow); } //キューに追加 this.WindowTalkListQ.Enqueue(talkWindow); //現在おしゃべりウインドウ設置 this.NowTalkWindow = talkWindow; }
private void textBlock_Talk_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { try { TimeLineItem target = ((sender as Image).TemplatedParent as ContentPresenter).Content as TimeLineItem; if (target == null) { return; } TalkWindow w = new TalkWindow(this.account, target.Tweet); w.Owner = this.main; w.Show(); } catch (TwitterException tex) { MessageBox.Show(tex.Message, "Twitter Exception.", MessageBoxButton.OK, MessageBoxImage.Warning); } }