private DialogElement CreateElement(DialogElement.Type t) { DialogElement e = new DialogElement(); e.type = t; return(e); }
// 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); }
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(); } }
// 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; } }; }
/// <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); }
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(); }
private DialogTable() { m_mapElements = new Dictionary <int, DialogElement>(); m_emptyItem = new DialogElement(); m_vecAllElements = new List <DialogElement>(); }
private void EvalResult(DialogElement d) { _dialogList.Add(d); UpdateTree(); }
public override void Start() { DialogElement dialogElement = DialogManager.Instance.dialogElement; dialogElement.SetDialog(this); }
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); }
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; } }
/// <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); }
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); }