private DialogElement CreateElement(DialogElement.Type t)
    {
        DialogElement e = new DialogElement();

        e.type = t;
        return(e);
    }
Example #2
0
 // called when a dialog option is selected
 public void doDialogOption(string option)
 {
     if (option == "" || option == "None")          // end dialog if dialog option is a dialog cancel option
     {
         state.movementEnabled = true;
         currentDialog         = null;
         Destroy(dialogCanvasObj);
         buttonObjs = null;
         return;
     }
     if (buttonObjs != null)
     {
         foreach (GameObject obj in buttonObjs)
         {
             Destroy(obj);
         }
     }
     buttonObjs = null;
     if (!dialogData.ContainsKey(option))
     {
         Debug.Log("Dialog error, node: \"" + option + "\" does not exist, ending dialog");
         doDialogOption("");              // ends dialog, see above
     }
     else
     {
         currentDialog = dialogData [option];
     }
     foreach (DialogAction action in currentDialog.actions)
     {
         action.doAction();
     }
 }
        private void button3_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(textBox1.Text) || string.IsNullOrWhiteSpace(textBox2.Text))
            {
                ShowInfo("At least one input is empty");
                return;
            }

            if (occupiedIds.Contains(textBox1.Text))
            {
                ShowInfo("Id is already in use");
                return;
            }

            DialogElement result = new DialogElement();

            result.ID              = textBox1.Text;
            result.DisplayText     = textBox2.Text;
            result.Answers         = listBox1.Items.Cast <Answer>().ToArray();
            result.CommandsAtEnter = (textBox9.Text == "") ? null : textBox9.Text.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries);

            Finished(result);
            isOk = true;
            this.Close();
        }
        public NewDialogForm(DialogElement edit, List <string> ids)
        {
            InitializeComponent();
            textBox1.Text = edit.ID;
            textBox2.Text = edit.DisplayText;
            listBox1.Items.AddRange(edit.Answers);

            occupiedIds = ids;
            ids.Remove(edit.ID);
        }
        private void NewDialogForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (isOk)
            {
                return;
            }

            DialogElement result = new DialogElement();

            result.ID              = textBox1.Text;
            result.DisplayText     = textBox2.Text;
            result.Answers         = listBox1.Items.Cast <Answer>().ToArray();
            result.CommandsAtEnter = (textBox9.Text == "") ? null : textBox9.Text.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries);

            Finished(result);
        }
Example #6
0
    void NextInput()
    {
        if (index == dialogs.Count)
        {
            EndDialog();
            return;
        }
        bool          fireNext = false;
        DialogElement d        = dialogs [index];

        if (d.type == DialogElement.Type.Dialog)
        {
            text.text = d.string1;
            Vector2 v = text.rectTransform.sizeDelta;
            v.y = lineHeight * text.text.Split(newLine, System.StringSplitOptions.RemoveEmptyEntries).Length;
            text.rectTransform.sizeDelta = v;
        }
        else if (d.type == DialogElement.Type.Event)
        {
            Messenger.Broadcast(d.string1);
            fireNext = true;
        }
        else if (d.type == DialogElement.Type.LookAt)
        {
            lookStart = cam.transform.rotation;
            cam.transform.LookAt(d.transform1);
            lookTarget             = cam.transform.rotation;
            cam.transform.rotation = lookStart;
            dialogMode             = false;
            StartCoroutine(Utils.AnimationCoroutine(AnimationCurve.EaseInOut(0, 0, 1, 1), d.float1, LookAt, FinishLookAt));
        }
        else if (d.type == DialogElement.Type.Sound)
        {
            d.audio.Play();
            fireNext = true;
        }
        index++;
        if (fireNext)
        {
            NextInput();
        }
    }
Example #7
0
 // called when a dialog option is selected
 /// <summary>
 /// [EXTENSION] - Add sound effect for all button presses
 /// </summary>
 /// <param name="option">The option selected</param>
 public void doDialogOption(string option)
 {
     if (option == "" || option == "None")          // end dialog if dialog option is a dialog cancel option
     //Only play sound effect is there was just dialog (e.g. not on a None dialoge pointer)
     {
         if (currentDialog != null)
         {
             SoundManager.instance.playSFX("interact");
         }
         state.movementEnabled = true;
         currentDialog         = null;
         Destroy(dialogCanvasObj);
         buttonObjs = null;
         return;
     }
     if (buttonObjs != null)
     {
         foreach (GameObject obj in buttonObjs)
         {
             Destroy(obj);
         }
     }
     buttonObjs = null;
     if (!dialogData.ContainsKey(option))
     {
         Debug.Log("Dialog error, node: \"" + option + "\" does not exist, ending dialog");
         doDialogOption("");              // ends dialog, see above
     }
     else
     {
         SoundManager.instance.playSFX("interact");
         currentDialog = dialogData [option];
     }
     foreach (DialogAction action in currentDialog.actions)
     {
         action.doAction();
     }
 }
    private void OnEnable()
    {
        dialog                  = target as Dialog;
        list                    = new ReorderableList(dialog.dialogs, typeof(DialogElement), true, true, true, true);
        list.elementHeight      = EditorGUIUtility.singleLineHeight * 2 + 4;
        list.drawHeaderCallback = (Rect rect) => {
            EditorGUI.LabelField(new Rect(rect.x, rect.y, rect.width, EditorGUIUtility.singleLineHeight), "dankilog supersystem v4.20 tm (c)");
        };

        list.onAddDropdownCallback = (Rect rect, ReorderableList rl) => {
            GenericMenu menu = new GenericMenu();
            menu.AddItem(new GUIContent("Dialog"), false, OnMenuClick, CreateElement(DialogElement.Type.Dialog));

            menu.AddItem(new GUIContent("Event"), false, OnMenuClick, CreateElement(DialogElement.Type.Event));

            menu.AddItem(new GUIContent("Look At"), false, OnMenuClick, CreateElement(DialogElement.Type.LookAt));
            menu.AddItem(new GUIContent("Play Audio"), false, OnMenuClick, CreateElement(DialogElement.Type.Sound));

            menu.ShowAsContext();
        };

        list.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) => {
            DialogElement      e = dialog.dialogs[index] as DialogElement;
            DialogElement.Type t = e.type;
            rect.y += 2;
            if (t == DialogElement.Type.Dialog)
            {
                ChangeColor(rect, dialogColor);
                EditorGUI.LabelField(new Rect(rect.x, rect.y, 60, EditorGUIUtility.singleLineHeight), "dialog");
                rect.x     += 60;
                rect.height = EditorGUIUtility.singleLineHeight * 2;
                e.string1   = EditorGUI.TextArea(new Rect(rect.x, rect.y, rect.width - 60, rect.height),
                                                 e.string1);
            }
            else if (t == DialogElement.Type.Event)
            {
                ChangeColor(rect, eventColor);
                EditorGUI.LabelField(new Rect(rect.x, rect.y, 60, EditorGUIUtility.singleLineHeight), "event");
                rect.x   += 60;
                e.string1 = EditorGUI.TextField(new Rect(rect.x, rect.y, rect.width - 60, EditorGUIUtility.singleLineHeight),
                                                e.string1);
            }
            else if (t == DialogElement.Type.LookAt)
            {
                ChangeColor(rect, lookColor);
                EditorGUI.LabelField(new Rect(rect.x, rect.y, 60, EditorGUIUtility.singleLineHeight), "look at");
                rect.x      += 60;
                e.transform1 = EditorGUI.ObjectField(new Rect(rect.x, rect.y, rect.width - 60, EditorGUIUtility.singleLineHeight),
                                                     "object", e.transform1, typeof(Transform), true) as Transform;
                rect.y  += EditorGUIUtility.singleLineHeight;
                e.float1 = EditorGUI.FloatField(new Rect(rect.x, rect.y, rect.width - 60, EditorGUIUtility.singleLineHeight),
                                                "time", e.float1);
            }
            else if (t == DialogElement.Type.Sound)
            {
                ChangeColor(rect, audioColor);
                EditorGUI.LabelField(new Rect(rect.x, rect.y, 60, EditorGUIUtility.singleLineHeight), "playSound");
                rect.x += 60;
                e.audio = EditorGUI.ObjectField(new Rect(rect.x, rect.y, rect.width - 60, EditorGUIUtility.singleLineHeight),
                                                "audio source", e.audio, typeof(AudioSource), true) as AudioSource;
            }
        };
    }
Example #9
0
        /// <summary>
        /// Defines the locations backend content view (control panel and views).
        /// </summary>
        /// <param name="parent">The parent element hosting the backend content view.</param>
        /// <returns></returns>
        public static ContentViewControlElement DefineLocationsBackendContentView(ConfigElement parent)
        {
            // initialize the content view; this is the element that will be returned to the page and holds all views of the admin panel
            var backendContentView = new ContentViewControlElement(parent)
            {
                ControlDefinitionName = BackendDefinitionName,
                ContentType           = typeof(LocationItem),
                UseWorkflow           = false
            };

            // GridView element serves as the "List View" for the item list. Grid columns are defined later
            var locationsGridView = new MasterGridViewElement(backendContentView.ViewsConfig)
            {
                ViewName          = LocationsDefinitions.BackendListViewName,
                ViewType          = typeof(MasterGridView),
                AllowPaging       = true,
                DisplayMode       = FieldDisplayMode.Read,
                ItemsPerPage      = 50,
                SearchFields      = "Title",
                SortExpression    = "Title ASC",
                Title             = "Locations",
                WebServiceBaseUrl = "~/Sitefinity/Services/Content/Locations.svc/"
            };

            backendContentView.ViewsConfig.Add(locationsGridView);

            #region Module Main Toolbar definition

            // Toolbar is the top menu with action buttons such as Create, Delete, Search, etc.
            var masterViewToolbarSection = new WidgetBarSectionElement(locationsGridView.ToolbarConfig.Sections)
            {
                Name = "Toolbar"
            };

            // "Create" Button for Toolbar
            var createLocationsWidget = new CommandWidgetElement(masterViewToolbarSection.Items)
            {
                Name        = "CreateLocationsCommandWidget",
                ButtonType  = CommandButtonType.Create,
                CommandName = DefinitionsHelper.CreateCommandName,
                Text        = "Create Location",
                CssClass    = "sfMainAction",
                WidgetType  = typeof(CommandWidget)
            };
            masterViewToolbarSection.Items.Add(createLocationsWidget);

            // "Delete" button for Toolbar
            var deleteLocationsWidget = new CommandWidgetElement(masterViewToolbarSection.Items)
            {
                Name        = "DeleteLocationsCommandWidget",
                ButtonType  = CommandButtonType.Standard,
                CommandName = DefinitionsHelper.GroupDeleteCommandName,
                Text        = "Delete",
                WidgetType  = typeof(CommandWidget),
                CssClass    = "sfGroupBtn"
            };
            masterViewToolbarSection.Items.Add(deleteLocationsWidget);

            // "Search" button for toolbar
            masterViewToolbarSection.Items.Add(DefinitionsHelper.CreateSearchButtonWidget(masterViewToolbarSection.Items, typeof(LocationItem)));
            locationsGridView.ToolbarConfig.Sections.Add(masterViewToolbarSection);

            #endregion

            #region Locations Grid (List View)

            // Define GridView mode
            var gridMode = new GridViewModeElement(locationsGridView.ViewModesConfig)
            {
                Name = "Grid"
            };
            locationsGridView.ViewModesConfig.Add(gridMode);

            #region Locations Grid Columns

            // Title column
            DataColumnElement titleColumn = new DataColumnElement(gridMode.ColumnsConfig)
            {
                Name           = "Title",
                HeaderText     = "Title",
                HeaderCssClass = "sfTitleCol",
                ItemCssClass   = "sfTitleCol",
                ClientTemplate = @"<a sys:href='javascript:void(0);' sys:class=""{{ 'sf_binderCommand_edit sfItemTitle sfpublished"">
					<strong>{{Title}}</strong></a>"
            };
            gridMode.ColumnsConfig.Add(titleColumn);

            ActionMenuColumnElement actionsColumn = new ActionMenuColumnElement(gridMode.ColumnsConfig)
            {
                Name           = "Actions",
                HeaderText     = "Actions",
                HeaderCssClass = "sfMoreActions",
                ItemCssClass   = "sfMoreActions"
            };
            actionsColumn.MenuItems.Add(DefinitionsHelper.CreateActionMenuCommand(actionsColumn.MenuItems, "View", HtmlTextWriterTag.Li, "preview", "View", string.Empty));
            actionsColumn.MenuItems.Add(DefinitionsHelper.CreateActionMenuCommand(actionsColumn.MenuItems, "Delete", HtmlTextWriterTag.Li, "delete", "Delete", string.Empty));

            gridMode.ColumnsConfig.Add(actionsColumn);

            #endregion

            #endregion

            #region Dialog Window definitions

            #region Insert Item Dialog

            // Insert Item Parameters
            var parameters = string.Concat(
                "?ControlDefinitionName=",
                LocationsDefinitions.BackendDefinitionName,
                "&ViewName=",
                LocationsDefinitions.BackendInsertViewName);

            // Insert Item Dialog
            DialogElement createDialogElement = DefinitionsHelper.CreateDialogElement(
                locationsGridView.DialogsConfig,
                DefinitionsHelper.CreateCommandName,
                "ContentViewInsertDialog",
                parameters);

            // add dialog to Backend
            locationsGridView.DialogsConfig.Add(createDialogElement);

            #endregion

            #region Edit Item Dialog

            // "Edit Item" Parameters
            parameters = string.Concat(
                "?ControlDefinitionName=",
                LocationsDefinitions.BackendDefinitionName,
                "&ViewName=",
                LocationsDefinitions.BackendEditViewName);

            // "Edit Item" Dialog
            DialogElement editDialogElement = DefinitionsHelper.CreateDialogElement(
                locationsGridView.DialogsConfig,
                DefinitionsHelper.EditCommandName,
                "ContentViewEditDialog",
                parameters);

            // Add Dialog to Backend
            locationsGridView.DialogsConfig.Add(editDialogElement);

            #endregion

            #region Preview Item Dialog

            // "Preview Item" parameters
            parameters = string.Concat(
                "?ControlDefinitionName=",
                LocationsDefinitions.BackendDefinitionName,
                "&ViewName=",
                LocationsDefinitions.BackendPreviewName,
                "&backLabelText=", "BacktoItems", "&SuppressBackToButtonLabelModify=true");

            // Preview Item Dialog
            DialogElement previewDialogElement = DefinitionsHelper.CreateDialogElement(
                locationsGridView.DialogsConfig,
                DefinitionsHelper.PreviewCommandName,
                "ContentViewEditDialog",
                parameters);

            // Add Dialog to Backend
            locationsGridView.DialogsConfig.Add(previewDialogElement);

            #endregion

            #endregion

            #region Admin Forms Views

            #region Create Item Form View

            // bind create item view to web service
            var locationsInsertDetailView = new DetailFormViewElement(backendContentView.ViewsConfig)
            {
                Title                     = "Create Location",
                ViewName                  = LocationsDefinitions.BackendInsertViewName,
                ViewType                  = typeof(DetailFormView),
                ShowSections              = true,
                DisplayMode               = FieldDisplayMode.Write,
                ShowTopToolbar            = true,
                WebServiceBaseUrl         = "~/Sitefinity/Services/Content/locations.svc/",
                IsToRenderTranslationView = false,
                UseWorkflow               = false
            };

            backendContentView.ViewsConfig.Add(locationsInsertDetailView);

            #endregion

            #region Edit Item Form View

            // bind Edit item form to web service
            var locationsEditDetailView = new DetailFormViewElement(backendContentView.ViewsConfig)
            {
                Title                     = "Edit Location",
                ViewName                  = LocationsDefinitions.BackendEditViewName,
                ViewType                  = typeof(DetailFormView),
                ShowSections              = true,
                DisplayMode               = FieldDisplayMode.Write,
                ShowTopToolbar            = true,
                WebServiceBaseUrl         = "~/Sitefinity/Services/Content/Locations.svc/",
                IsToRenderTranslationView = false,
                UseWorkflow               = false
            };

            backendContentView.ViewsConfig.Add(locationsEditDetailView);

            #endregion

            #region Preview Item Form View

            // bind Preview Form to web service
            var locationsPreviewDetailView = new DetailFormViewElement(backendContentView.ViewsConfig)
            {
                Title             = "Location Preview",
                ViewName          = LocationsDefinitions.BackendPreviewName,
                ViewType          = typeof(DetailFormView),
                ShowSections      = true,
                DisplayMode       = FieldDisplayMode.Read,
                ShowTopToolbar    = true,
                ShowNavigation    = true,
                WebServiceBaseUrl = "~/Sitefinity/Services/Content/Locations.svc/",
                UseWorkflow       = false
            };

            backendContentView.ViewsConfig.Add(locationsPreviewDetailView);

            #endregion

            #endregion

            #region Locations Backend Forms Definition

            #region Insert Form

            LocationsDefinitions.CreateBackendSections(locationsInsertDetailView, FieldDisplayMode.Write);
            LocationsDefinitions.CreateBackendFormToolbar(locationsInsertDetailView, true, true);

            #endregion

            #region Edit Form

            LocationsDefinitions.CreateBackendSections(locationsEditDetailView, FieldDisplayMode.Write);
            LocationsDefinitions.CreateBackendFormToolbar(locationsEditDetailView, false, true);

            #endregion

            #region Preview Form

            CreateBackendSections(locationsPreviewDetailView, FieldDisplayMode.Read);

            #endregion

            #endregion

            return(backendContentView);
        }
Example #10
0
        public void ElementComposition()
        {
            var sb       = new StringBuilder();
            var elements = new DialogElement();

            elements.Add(new DialogButton("Foobar1"));
            elements.Render(ref sb);
            Assert.Equal("<button title='Foobar1' keyword='@foobar1' />", sb.ToString());
            sb.Clear();

            elements.Add(new DialogButton("Foobar2"));
            elements.Render(ref sb);
            Assert.Equal("<button title='Foobar1' keyword='@foobar1' /><button title='Foobar2' keyword='@foobar2' />", sb.ToString());
            sb.Clear();

            elements.Insert(1, new DialogButton("Foobar3"));
            elements.Render(ref sb);
            Assert.Equal("<button title='Foobar1' keyword='@foobar1' /><button title='Foobar3' keyword='@foobar3' /><button title='Foobar2' keyword='@foobar2' />", sb.ToString());
            sb.Clear();

            elements.Replace(0, new DialogButton("Foobar4"));
            elements.Render(ref sb);
            Assert.Equal("<button title='Foobar4' keyword='@foobar4' /><button title='Foobar3' keyword='@foobar3' /><button title='Foobar2' keyword='@foobar2' />", sb.ToString());
            sb.Clear();

            elements.Insert(0, new DialogButton("Foobar5"));
            elements.Render(ref sb);
            Assert.Equal("<button title='Foobar5' keyword='@foobar5' /><button title='Foobar4' keyword='@foobar4' /><button title='Foobar3' keyword='@foobar3' /><button title='Foobar2' keyword='@foobar2' />", sb.ToString());
            sb.Clear();

            elements.Insert(99, new DialogButton("Foobar6"));
            elements.Render(ref sb);
            Assert.Equal("<button title='Foobar5' keyword='@foobar5' /><button title='Foobar4' keyword='@foobar4' /><button title='Foobar3' keyword='@foobar3' /><button title='Foobar2' keyword='@foobar2' /><button title='Foobar6' keyword='@foobar6' />", sb.ToString());
            sb.Clear();

            elements = new DialogElement();

            elements.Insert(1, new DialogButton("Foobar7"));
            elements.Render(ref sb);
            Assert.Equal("<button title='Foobar7' keyword='@foobar7' />", sb.ToString());
            sb.Clear();

            elements = new DialogElement();

            elements.Replace(0, new DialogButton("Foobar8"));
            elements.Render(ref sb);
            Assert.Equal("<button title='Foobar8' keyword='@foobar8' />", sb.ToString());
            sb.Clear();

            elements = new DialogElement("foobar, <username/>!", new DialogButton("Foobar9"), new DialogButton("Foobar10"));

            elements.Render(ref sb);
            Assert.Equal("foobar, <username/>!<button title='Foobar9' keyword='@foobar9' /><button title='Foobar10' keyword='@foobar10' />", sb.ToString());
            sb.Clear();

            elements.Replace(0, "barfoo?");
            elements.Insert(1, new DialogButton("Foobar11"));
            elements.Render(ref sb);
            Assert.Equal("barfoo?<button title='Foobar11' keyword='@foobar11' /><button title='Foobar9' keyword='@foobar9' /><button title='Foobar10' keyword='@foobar10' />", sb.ToString());
            sb.Clear();
        }
Example #11
0
 private DialogTable()
 {
     m_mapElements    = new Dictionary <int, DialogElement>();
     m_emptyItem      = new DialogElement();
     m_vecAllElements = new List <DialogElement>();
 }
Example #12
0
 private void EvalResult(DialogElement d)
 {
     _dialogList.Add(d);
     UpdateTree();
 }
Example #13
0
    public override void Start()
    {
        DialogElement dialogElement = DialogManager.Instance.dialogElement;

        dialogElement.SetDialog(this);
    }
Example #14
0
    public bool LoadBin(byte[] binContent)
    {
        m_mapElements.Clear();
        m_vecAllElements.Clear();
        int nCol, nRow;
        int readPos = 0;

        readPos += GameAssist.ReadInt32Variant(binContent, readPos, out nCol);
        readPos += GameAssist.ReadInt32Variant(binContent, readPos, out nRow);
        List <string> vecLine     = new List <string>(nCol);
        List <int>    vecHeadType = new List <int>(nCol);
        string        tmpStr;
        int           tmpInt;

        for (int i = 0; i < nCol; i++)
        {
            readPos += GameAssist.ReadString(binContent, readPos, out tmpStr);
            readPos += GameAssist.ReadInt32Variant(binContent, readPos, out tmpInt);
            vecLine.Add(tmpStr);
            vecHeadType.Add(tmpInt);
        }
        if (vecLine.Count != 7)
        {
            Ex.Logger.Log("Dialog.csv中列数量与生成的代码不匹配!");
            return(false);
        }
        if (vecLine[0] != "DialogID")
        {
            Ex.Logger.Log("Dialog.csv中字段[DialogID]位置不对应"); return(false);
        }
        if (vecLine[1] != "Name1")
        {
            Ex.Logger.Log("Dialog.csv中字段[Name1]位置不对应"); return(false);
        }
        if (vecLine[2] != "Dialog1")
        {
            Ex.Logger.Log("Dialog.csv中字段[Dialog1]位置不对应"); return(false);
        }
        if (vecLine[3] != "BanShen")
        {
            Ex.Logger.Log("Dialog.csv中字段[BanShen]位置不对应"); return(false);
        }
        if (vecLine[4] != "BanShenSet")
        {
            Ex.Logger.Log("Dialog.csv中字段[BanShenSet]位置不对应"); return(false);
        }
        if (vecLine[5] != "Set")
        {
            Ex.Logger.Log("Dialog.csv中字段[Set]位置不对应"); return(false);
        }
        if (vecLine[6] != "Next")
        {
            Ex.Logger.Log("Dialog.csv中字段[Next]位置不对应"); return(false);
        }

        for (int i = 0; i < nRow; i++)
        {
            DialogElement member = new DialogElement();
            readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.DialogID);
            readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.Name1);
            readPos += GameAssist.ReadString(binContent, readPos, out member.Dialog1);
            readPos += GameAssist.ReadString(binContent, readPos, out member.BanShen);
            readPos += GameAssist.ReadString(binContent, readPos, out member.BanShenSet);
            readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.Set);
            readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.Next);

            member.IsValidate = true;
            m_vecAllElements.Add(member);
            m_mapElements[member.DialogID] = member;
        }
        return(true);
    }
Example #15
0
    public override void OnInspectorGUI()
    {
        GUILayout.ExpandWidth(false);
        ownDialogManager = (DialogManager)target;
        Undo.RecordObject(ownDialogManager, "dialog change");
        DrawDefaultInspector();
        currentMode = (modes)EditorGUILayout.EnumPopup(currentMode);
        switch (currentMode)
        {
        case modes.list:
            foreach (string s in ownDialogManager.dialogData.Keys)
            {
                if (GUILayout.Button(s))
                {
                    currentMode = modes.search;
                    dialogName  = s;
                }
            }
            break;

        case modes.search:
            dialogName = EditorGUILayout.TextField(dialogName);
            if (ownDialogManager.dialogData.ContainsKey(dialogName))
            {
                currentDialogElement = ownDialogManager.dialogData [dialogName];
                if (GUILayout.Button("Delete"))
                {
                    ownDialogManager.dialogData.Remove(dialogName);
                }

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Speeker ");
                currentDialogElement.speekerName = EditorGUILayout.TextField(currentDialogElement.speekerName);
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.LabelField("Text");
                currentDialogElement.dialogText = EditorGUILayout.TextArea(currentDialogElement.dialogText);
                EditorGUILayout.LabelField("");
                EditorGUILayout.LabelField("Dialog options");

                EditorGUILayout.BeginHorizontal();
                EditorGUIUtility.labelWidth = 60;
                EditorGUILayout.LabelField("Pointer");
                EditorGUIUtility.labelWidth = 60;
                EditorGUILayout.LabelField("Description");
                EditorGUILayout.EndHorizontal();

                int toDelete = -1;
                for (int i = 0; i < currentDialogElement.optionPointer.Count; i++)
                {
                    if (currentDialogElement.optionConditional.Count < currentDialogElement.optionPointer.Count)
                    {
                        currentDialogElement.optionConditional.Add(new DialogConditional());
                    }

                    EditorGUILayout.BeginHorizontal();
                    currentDialogElement.optionPointer [i]     = EditorGUILayout.TextField(currentDialogElement.optionPointer [i]);
                    currentDialogElement.optionDescription [i] = EditorGUILayout.TextField(currentDialogElement.optionDescription [i]);
                    if (GUILayout.Button("Delete"))
                    {
                        toDelete = i;
                    }
                    EditorGUILayout.EndHorizontal();
                    EditorGUILayout.BeginHorizontal();
                    bool showConditionalDetail           = true;
                    DialogConditional currentConditional = currentDialogElement.optionConditional [i];
                    if (currentConditional.ownComparison == DialogConditional.comparisonTypes._false ||
                        currentConditional.ownComparison == DialogConditional.comparisonTypes._true)
                    {
                        showConditionalDetail = false;
                    }

                    if (showConditionalDetail)
                    {
                        if (currentConditional.leftSideComparable == DialogConditional.comparableTypes.item)
                        {
                            currentConditional.leftItemType = (InventoryItems.itemTypes)EditorGUILayout.EnumPopup(currentConditional.leftItemType);
                        }
                        else
                        {
                            currentConditional.leftSide = EditorGUILayout.TextField(currentConditional.leftSide);
                        }
                    }

                    currentConditional.ownComparison = (DialogConditional.comparisonTypes)EditorGUILayout.EnumPopup(currentConditional.ownComparison);

                    if (showConditionalDetail)
                    {
                        if (currentConditional.rightSideComparable == DialogConditional.comparableTypes.item)
                        {
                            currentConditional.rightItemType = (InventoryItems.itemTypes)EditorGUILayout.EnumPopup(currentConditional.rightItemType);
                        }
                        else
                        {
                            currentConditional.rightSide = EditorGUILayout.TextField(currentConditional.rightSide);
                        }
                    }
                    EditorGUILayout.EndHorizontal();

                    if (showConditionalDetail)
                    {
                        EditorGUILayout.BeginHorizontal();
                        currentConditional.leftSideComparable  = (DialogConditional.comparableTypes)EditorGUILayout.EnumPopup(currentConditional.leftSideComparable);
                        currentConditional.rightSideComparable = (DialogConditional.comparableTypes)EditorGUILayout.EnumPopup(currentConditional.rightSideComparable);
                        EditorGUILayout.EndHorizontal();
                    }

                    EditorGUILayout.LabelField("");
                }
                if (toDelete != -1)
                {
                    currentDialogElement.optionPointer.RemoveAt(toDelete);
                    currentDialogElement.optionDescription.RemoveAt(toDelete);
                    currentDialogElement.optionConditional.RemoveAt(toDelete);
                }
                if (GUILayout.Button("Add dialog option"))
                {
                    currentDialogElement.optionPointer.Add("");
                    currentDialogElement.optionDescription.Add("");
                    currentDialogElement.optionConditional.Add(new DialogConditional());
                }

                //todo add actions editor
                EditorGUILayout.LabelField("");
                EditorGUILayout.LabelField("Dialog actions");
                DialogAction actionToDelete = null;
                foreach (DialogAction action in currentDialogElement.actions)
                {
                    action.ownActionType = (DialogAction.actionType)EditorGUILayout.EnumPopup(action.ownActionType);
                    switch (action.ownActionType)
                    {
                    case DialogAction.actionType.setGameVar:
                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField("Variable Name");
                        action.gameVarName = EditorGUILayout.TextField(action.gameVarName);
                        EditorGUILayout.EndHorizontal();
                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField("Variable Value");
                        action.gameVarValue = EditorGUILayout.TextField(action.gameVarValue);
                        EditorGUILayout.EndHorizontal();
                        break;

                    case DialogAction.actionType.startCombat:
                        int numberOfEnemies = action.combatEnemies.Count;
                        numberOfEnemies = EditorGUILayout.IntSlider(action.combatEnemies.Count, 1, 5);
                        if (numberOfEnemies > action.combatEnemies.Count)
                        {
                            for (int i = action.combatEnemies.Count; i < numberOfEnemies; i++)
                            {
                                action.combatEnemies.Add(CombatCharacterFactory.CombatCharacterPresets.BobbyBard);
                            }
                        }
                        else if (numberOfEnemies < action.combatEnemies.Count)
                        {
                            action.combatEnemies.RemoveRange(numberOfEnemies - 1, action.combatEnemies.Count - numberOfEnemies);
                        }

                        for (int i = 0; i < action.combatEnemies.Count; i++)
                        {
                            action.combatEnemies[i] = (CombatCharacterFactory.CombatCharacterPresets)EditorGUILayout.EnumPopup(action.combatEnemies[i]);
                        }

                        break;

                    case DialogAction.actionType.giveItem:
                        action.itemType   = (InventoryItems.itemTypes)EditorGUILayout.EnumPopup(action.itemType);
                        action.itemAmount = EditorGUILayout.IntField(action.itemAmount);
                        break;

                    case DialogAction.actionType.setCharacterAvailibility:
                        action.character     = (CombatCharacterFactory.CombatCharacterPresets)EditorGUILayout.EnumPopup(action.character);
                        action.charAvailible = EditorGUILayout.Toggle(action.charAvailible);
                        break;

                    case DialogAction.actionType.buy:
                        action.itemType   = (InventoryItems.itemTypes)EditorGUILayout.EnumPopup(action.itemType);
                        action.itemAmount = EditorGUILayout.IntField(action.itemAmount);
                        break;
                    }
                    if (GUILayout.Button("Delete"))
                    {
                        actionToDelete = action;
                    }
                    EditorGUILayout.LabelField("");
                }
                if (actionToDelete != null)
                {
                    currentDialogElement.actions.Remove(actionToDelete);
                }

                if (GUILayout.Button("Add dialog action"))
                {
                    currentDialogElement.actions.Add(new DialogAction());
                }
            }
            break;

        case modes.add:
            dialogName = EditorGUILayout.TextField(dialogName);
            if (GUILayout.Button(new GUIContent("add")))
            {
                DialogElement newDialog = new DialogElement();
                ownDialogManager.dialogData.Add(dialogName, newDialog);
                currentMode = modes.search;
            }
            break;
        }
    }
Example #16
0
        /// <summary>
        /// Defines the jobs backend content view.
        /// </summary>
        /// <param name="parent">The parent.</param>
        /// <returns></returns>
        public static ContentViewControlElement DefineJobsBackendContentView(ConfigElement parent)
        {
            // define content view control
            var backendContentView = new ContentViewControlElement(parent)
            {
                ControlDefinitionName = BackendDefinitionName,
                ContentType           = typeof(JobApplication)
            };

            // define views
            var jobsGridView = new MasterGridViewElement(backendContentView.ViewsConfig)
            {
                ViewName          = JobsDefinitions.BackendListViewName,
                ViewType          = typeof(MasterGridView),
                AllowPaging       = true,
                DisplayMode       = FieldDisplayMode.Read,
                ItemsPerPage      = 50,
                ResourceClassId   = typeof(JobsResources).Name,
                Title             = "JobsViewTitle",
                WebServiceBaseUrl = "~/Sitefinity/Services/Content/Jobs.svc/",
            };

            // define columns
            var gridMode = new GridViewModeElement(jobsGridView.ViewModesConfig)
            {
                Name = "Grid",
            };

            jobsGridView.ViewModesConfig.Add(gridMode);

            DataColumnElement firstNameColumn = new DataColumnElement(gridMode.ColumnsConfig)
            {
                Name           = "FirstName",
                HeaderText     = Res.Get <JobsResources>().FirstName,
                ClientTemplate = "<span>{{FirstName}}</span>",
                HeaderCssClass = "sfRegular",
                ItemCssClass   = "sfRegular"
            };

            gridMode.ColumnsConfig.Add(firstNameColumn);

            DataColumnElement lastNameColumn = new DataColumnElement(gridMode.ColumnsConfig)
            {
                Name           = "LastName",
                HeaderText     = Res.Get <JobsResources>().LastName,
                ClientTemplate = "<span>{{LastName}}</span>",
                HeaderCssClass = "sfRegular",
                ItemCssClass   = "sfRegular"
            };

            gridMode.ColumnsConfig.Add(lastNameColumn);

            DataColumnElement phoneColumn = new DataColumnElement(gridMode.ColumnsConfig)
            {
                Name           = "Phone",
                HeaderText     = Res.Get <JobsResources>().PhoneNumber,
                ClientTemplate = "<span>{{Phone}}</span>",
                HeaderCssClass = "sfRegular",
                ItemCssClass   = "sfRegular"
            };

            gridMode.ColumnsConfig.Add(phoneColumn);

            DataColumnElement refferalColumn = new DataColumnElement(gridMode.ColumnsConfig)
            {
                Name           = "Refferal",
                HeaderText     = Res.Get <JobsResources>().Referrer,
                ClientTemplate = "<span>{{Referral}}</span>",
                HeaderCssClass = "sfRegular",
                ItemCssClass   = "sfRegular"
            };

            gridMode.ColumnsConfig.Add(refferalColumn);

            ActionMenuColumnElement actionsColumn = new ActionMenuColumnElement(gridMode.ColumnsConfig)
            {
                Name           = "Actions",
                HeaderText     = Res.Get <Labels>().Actions,
                HeaderCssClass = "sfMoreActions",
                ItemCssClass   = "sfMoreActions"
            };

            FillActionMenuItems(actionsColumn.MenuItems, actionsColumn, typeof(JobsResources).Name);
            gridMode.ColumnsConfig.Add(actionsColumn);

            DataColumnElement authorColumn = new DataColumnElement(gridMode.ColumnsConfig)
            {
                Name           = "Author",
                HeaderText     = Res.Get <Labels>().Author,
                ClientTemplate = "<span>{{Author}}</span>",
                HeaderCssClass = "sfRegular",
                ItemCssClass   = "sfRegular"
            };

            gridMode.ColumnsConfig.Add(authorColumn);

            DataColumnElement dateColumn = new DataColumnElement(gridMode.ColumnsConfig)
            {
                Name           = "Date",
                HeaderText     = Res.Get <Labels>().Date,
                ClientTemplate = "<span>{{ (DateCreated) ? DateCreated.sitefinityLocaleFormat('dd MMM, yyyy hh:mm:ss'): '-' }}</span>",
                HeaderCssClass = "sfDate",
                ItemCssClass   = "sfDate"
            };

            gridMode.ColumnsConfig.Add(dateColumn);

            backendContentView.ViewsConfig.Add(jobsGridView);

            var parameters = string.Concat(
                "?ControlDefinitionName=",
                JobsDefinitions.BackendDefinitionName,
                "&ViewName=",
                JobsDefinitions.BackendEditViewName);
            DialogElement editDialogElement = DefinitionsHelper.CreateDialogElement(
                jobsGridView.DialogsConfig,
                DefinitionsHelper.EditCommandName,
                "ContentViewEditDialog",
                parameters);

            jobsGridView.DialogsConfig.Add(editDialogElement);

            var jobsEditDetailView = new DetailFormViewElement(backendContentView.ViewsConfig)
            {
                Title                     = "EditItem",
                ViewName                  = JobsDefinitions.BackendEditViewName,
                ViewType                  = typeof(DetailFormView),
                ShowSections              = true,
                DisplayMode               = FieldDisplayMode.Write,
                ShowTopToolbar            = true,
                ResourceClassId           = typeof(JobsResources).Name,
                WebServiceBaseUrl         = "~/Sitefinity/Services/Content/Jobs.svc/",
                IsToRenderTranslationView = false,
                UseWorkflow               = false
            };

            backendContentView.ViewsConfig.Add(jobsEditDetailView);

            JobsDefinitions.CreateBackendSections(jobsEditDetailView, FieldDisplayMode.Write);
            JobsDefinitions.CreateBackendFormToolbar(jobsEditDetailView, typeof(JobsResources).Name, false);

            return(backendContentView);
        }
Example #17
0
    public bool LoadCsv(string strContent)
    {
        if (strContent.Length == 0)
        {
            return(false);
        }
        m_mapElements.Clear();
        m_vecAllElements.Clear();
        int           contentOffset = 0;
        List <string> vecLine;

        vecLine = GameAssist.readCsvLine(strContent, ref contentOffset);
        if (vecLine.Count != 7)
        {
            Ex.Logger.Log("Dialog.csv中列数量与生成的代码不匹配!");
            return(false);
        }
        if (vecLine[0] != "DialogID")
        {
            Ex.Logger.Log("Dialog.csv中字段[DialogID]位置不对应"); return(false);
        }
        if (vecLine[1] != "Name1")
        {
            Ex.Logger.Log("Dialog.csv中字段[Name1]位置不对应"); return(false);
        }
        if (vecLine[2] != "Dialog1")
        {
            Ex.Logger.Log("Dialog.csv中字段[Dialog1]位置不对应"); return(false);
        }
        if (vecLine[3] != "BanShen")
        {
            Ex.Logger.Log("Dialog.csv中字段[BanShen]位置不对应"); return(false);
        }
        if (vecLine[4] != "BanShenSet")
        {
            Ex.Logger.Log("Dialog.csv中字段[BanShenSet]位置不对应"); return(false);
        }
        if (vecLine[5] != "Set")
        {
            Ex.Logger.Log("Dialog.csv中字段[Set]位置不对应"); return(false);
        }
        if (vecLine[6] != "Next")
        {
            Ex.Logger.Log("Dialog.csv中字段[Next]位置不对应"); return(false);
        }

        while (true)
        {
            vecLine = GameAssist.readCsvLine(strContent, ref contentOffset);
            if ((int)vecLine.Count == 0)
            {
                break;
            }
            if ((int)vecLine.Count != (int)7)
            {
                return(false);
            }
            DialogElement member = new DialogElement();
            member.DialogID   = Convert.ToInt32(vecLine[0]);
            member.Name1      = Convert.ToInt32(vecLine[1]);
            member.Dialog1    = vecLine[2];
            member.BanShen    = vecLine[3];
            member.BanShenSet = vecLine[4];
            member.Set        = Convert.ToInt32(vecLine[5]);
            member.Next       = Convert.ToInt32(vecLine[6]);

            member.IsValidate = true;
            m_vecAllElements.Add(member);
            m_mapElements[member.DialogID] = member;
        }
        return(true);
    }