예제 #1
0
        private bool AddChildDialog(DialogUtility.DialogInfo info)
        {
            var dialogObj = InstantiateDialog(info);

            if (dialogObj == null)
            {
                Debug.Assert(false, "DialogManager.CreateDialog : type = " + info.DialogType);
                return(false);
            }

            if (_dialogParent == null)
            {
                Debug.Assert(false, "DialogManager.CreateDialog : _dialogParent = null");
                return(false);
            }

            // parent設定
            dialogObj.SetActive(true);
            dialogObj.transform.SetParent(_dialogParent.transform, false);
            _createDialogList.Add(dialogObj);

            // ダイアログ初期化
            var dialogBaseScript = dialogObj.DescendantsAndSelf().OfComponent <DialogBase>().FirstOrDefault();

            dialogBaseScript.Init(info);
            return(true);
        }
예제 #2
0
        private bool CreateDialogCore(DialogUtility.DialogInfo info)
        {
            if (AddChildDialog(info) == false)
            {
                return(false);
            }

            // モーダル更新
            UpdateDialogModalEnable();
            return(true);
        }
예제 #3
0
        private GameObject InstantiateDialog(DialogUtility.DialogInfo info)
        {
            var filePath = string.Empty;
            {
                switch (info.DialogType)
                {
                case DialogUtility.DialogType.MessageDialog: filePath = "Prefabs/Dialog/OkCancelDialog"; break;
                }
            }

            var dialogObj = ResourceManager.LoadAndInstantiate(filePath);

            return(dialogObj);
        }
예제 #4
0
        public bool CreateDialog(DialogUtility.DialogInfo dialogInfo)
        {
            // 一番手前に表示されてたら作成不要
            {
                if (0 < _createDialogList.Count)
                {
                    var dialogObj        = _createDialogList[_createDialogList.Count - 1];
                    var dialogBaseScript = dialogObj.DescendantsAndSelf().OfComponent <DialogBase>().FirstOrDefault();
                    var dialogType       = dialogBaseScript.GetDialogType();
                    if (dialogType == dialogInfo.DialogType)
                    {
                        return(false);
                    }
                }
            }

            return(CreateDialogCore(dialogInfo));
        }
예제 #5
0
        public virtual void Init(DialogUtility.DialogInfo info)
        {
            if (ModalImage != null)
            {
                ModalImage.color = new Color(0, 0, 0, DialogManager.Instance.GetModalTargetAlpha());

                // canvas group
                {
                    if (ModalImage.gameObject.GetComponent <CanvasGroup>() == null)
                    {
                        ModalImage.gameObject.AddComponent <CanvasGroup>();
                    }

                    ModalImage.GetComponent <CanvasGroup>().ignoreParentGroups = true;
                }
            }

            DialogInfo = info;
            InitCore();

            FrameIn();
        }