示例#1
0
        /// <summary>
        /// 先頭ウインドウをサクジョする
        /// </summary>
        private void DestroyWindow()
        {
            Queue <TalkWindow2> bufQ = new Queue <TalkWindow2>();

            //カウントチェック
            if (WindowTalkListQ.Count < 1)
            {
                return;
            }
            else
            {
                //まわして、範囲内のものはバッファキューに、範囲外のものは削除
                while (WindowTalkListQ.Count > 0)
                {
                    TalkWindow2 talkWindow = WindowTalkListQ.Dequeue();

                    if (WindowTalkListQ.Count >= LiplisSetting.Instance.Setting.GetSpeechBallonNum())
                    {
                        talkWindow.CloseWindow();
                    }
                    else
                    {
                        //1個取り出し、削除
                        bufQ.Enqueue(talkWindow);
                    }
                }

                //すげかえる
                WindowTalkListQ = bufQ;
            }
        }
示例#2
0
        /// <summary>
        /// ウインドウ作成
        /// </summary>
        /// <param name="message"></param>
        /// <param name="AllocationId"></param>
        public void CreateWindow(string message, int AllocationId)
        {
            //キャラクターデータ取得
            LiplisModel charData = LiplisModels.Instance.GetCharacterModel(AllocationId);

            //おしゃべりウインドウ生成し、現在ウインドウ設置
            this.NowTalkWindow = charData.CreateWindowTalk(message, TextMainTalk);
        }
示例#3
0
        /// <summary>
        /// ウインドウをセットする
        /// </summary>
        /// <param name="talkWindow"></param>
        /// <param name="AllocationId"></param>
        public void SetWindow(TalkWindow2 talkWindow, int AllocationId)
        {
            //ターゲットモデルセット
            talkWindow.TargetModel = ActiveModel;

            //ウインドウを追加する
            AddWindow(talkWindow);

            //ウインドウ
            DestroyWindow();
        }
示例#4
0
        /// <summary>
        /// ウインドウを追加する
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="z"></param>
        /// <param name="message"></param>
        private void AddWindow(TalkWindow2 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;
        }
示例#5
0
        /// <summary>
        /// ウインドをスライドする
        /// </summary>
        private void SlideWindow(TalkWindow2 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));
                }
            }
        }
示例#6
0
        public TalkWindow2 CreateWindowTalk(GameObject window, string message, Text TextMainTalk)
        {
            try
            {
                //ウインドウ名設定
                window.name = "TalkWindow" + WindowTalkListQ.Count;

                //親キャンバスに登録
                window.transform.SetParent(CanvasRendering.transform, false);

                //位置設定
                window.transform.localPosition = WINDOW_POS.GetPos(ModelLocation, modelSetting.SpeechBallonLocationY);

                //サイズ変更
                RectTransform windowRect = window.GetComponent <RectTransform>();

                //ウインドウサイズ設定
                windowRect.sizeDelta = CulcWindowSize(message);

                //ローカルスケール設定
                windowRect.localScale = new Vector3(1f, 1f, 1f);

                //ウインドウインスタンス取得
                TalkWindow2 talkWindow = window.GetComponent <TalkWindow2>();

                //モデル設定
                talkWindow.TargetModel = ActiveModel;

                //テキスト設定
                talkWindow.SetNextLine(message);

                //ペアレント設定
                talkWindow.SetParentWindow(window);

                //ペアレント設定
                talkWindow.SetMainText(TextMainTalk);

                //高さ設定
                talkWindow.SetHeightImg(windowRect.sizeDelta.y);

                //生成時刻設定
                talkWindow.SetCreateTime(DateTime.Now);

                //ウインドウ画像の設定
                talkWindow.SetColor(GetColorFromSetting());

                //NULLでなければウインドウセット
                if (talkWindow != null)
                {
                    //ウインドウセット
                    SetWindow(talkWindow, AllocationId);
                }

                //結果を返す
                return(talkWindow);
            }
            catch (Exception ex)
            {
                Debug.Log(ex);
                return(null);
            }
        }