예제 #1
0
        public override void ShowMessage(DialogShowMessageSettings settings, Action onNext)
        {
            ISpeakerInfo s = settings.SpeakerInfo;

            SetSpeaker(s);

            if (string.IsNullOrEmpty(settings.Message))
            {
                onNext?.Invoke();
                return;
            }

            GameObject popObj;

            if (s == speakerL)
            {
                popObj = Instantiate(popMessageL, popParent);
            }
            else
            {
                popObj = Instantiate(popMessageR, popParent);
            }

            var pop = popObj.GetComponent <TalkStyleDialogMessagePop>();

            pop.SetMessage(settings, onNext);

            Pops.Add(pop);
            DestroyOldPops();
        }
예제 #2
0
        private void SetSettings(DialogShowMessageSettings settings, VisualElement settingsField)
        {
            var commandProp  = CommandItem.CommandProperty.GetProperty();
            var settingsProp = commandProp.FindPropertyRelative("settings");

            settingsProp.managedReferenceValue = settings;
            settingsProp.serializedObject.ApplyModifiedProperties();
            UpdateSettingsField(settingsField);

            //次回以降のデフォルトに設定
            EditorPrefs.SetString(EditorPrefsDefaultSettingsTypeNameKey, settings.GetType().AssemblyQualifiedName);
        }
예제 #3
0
        private void BuildCommandEditor(VisualElement root)
        {
            var commandProp = CommandItem.CommandProperty.GetProperty();


            //DialogShowMessageSettings
            var settingsProp = commandProp.FindPropertyRelative("settings");

            var    settingsTypeInfo = settingsProp.managedReferenceFullTypename.Split(' ');
            string settingsTypeName = "";

            if (settingsTypeInfo.Length >= 2)
            {
                settingsTypeName = settingsTypeInfo[1];
            }
            else
            {
                //Settingsが未設定(null)

                object settingsInstance;

                //直前に使用したSettingsを使用する
                if (EditorPrefs.HasKey(EditorPrefsDefaultSettingsTypeNameKey))
                {
                    var defaultSettingsTypeName = EditorPrefs.GetString(EditorPrefsDefaultSettingsTypeNameKey);
                    var settingsType            = Type.GetType(defaultSettingsTypeName);
                    if (settingsType == null)
                    {
                        settingsType = typeof(DialogShowMessageSettings);
                    }

                    settingsInstance = Activator.CreateInstance(settingsType);
                }
                else
                {
                    settingsInstance = new DialogShowMessageSettings();
                }

                settingsProp.managedReferenceValue = settingsInstance;
                settingsProp.serializedObject.ApplyModifiedProperties();

                settingsTypeName = settingsInstance.GetType().FullName;
            }

            var settingsField = new VisualElement();

            var settingsButton = new Button();

            settingsButton.text = settingsTypeName.Split('.').Last();
            settingsButton.clickable.clicked += () => SettingsTypeMenu(settingsButton, settingsField);

            var settingsTypeBox = new VisualElement();

            settingsTypeBox.style.flexDirection = new StyleEnum <FlexDirection>(FlexDirection.Row);
            settingsTypeBox.Add(new Label("Settings Type"));
            settingsTypeBox.Add(settingsButton);

            root.Add(settingsTypeBox);

            UpdateSettingsField(settingsField);

            root.Add(settingsField);

            root.Bind(CommandItem.CommandProperty.SerializedObject);
        }