private void DrawActionElement(Rect rect, int index, bool isActive, bool isFocused) { GUILayout.BeginArea(rect); var action = actionsList.list[index] as GeoAction; GUILayout.BeginHorizontal(); GUILayout.Label(action.Name, GUILayout.MaxWidth(rect.width * 0.2f)); //Action Parameters GUILayout.BeginVertical(GUILayout.MaxWidth(rect.width * 0.6f)); if (action is EnterAction) { var specialized = action as EnterAction; specialized.OnlyFromOutside = EditorGUILayout.Toggle("Only from outside", specialized.OnlyFromOutside); } if (action is ExitAction) { var specialized = action as ExitAction; specialized.OnlyFromInside = EditorGUILayout.Toggle("Only from inside", specialized.OnlyFromInside); } if (action is InspectAction) { var specialized = action as InspectAction; specialized.Inside = EditorGUILayout.Toggle("On range", specialized.Inside); } if (action is LookToAction) { var specialized = action as LookToAction; specialized.Inside = EditorGUILayout.Toggle("On range", specialized.Inside); specialized.Center = EditorGUILayout.Toggle("Look to center", specialized.Center); if (!specialized.Center) { specialized.Direction = EditorGUILayout.Vector2Field("Look to direction", specialized.Direction); } } GUILayout.EndVertical(); // Conditions and effects GUILayout.BeginVertical(GUILayout.MaxWidth(rect.width * 0.2f)); if (GUILayout.Button("Conditions")) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(action.Conditions); } if (GUILayout.Button("Effects")) { EffectEditorWindow window = (EffectEditorWindow)ScriptableObject.CreateInstance(typeof(EffectEditorWindow)); window.Init(action.Effects); } GUILayout.EndVertical(); // End eleemnt GUILayout.EndHorizontal(); GUILayout.EndArea(); }
public void Init(ConditionsController con) { editor = EditorWindow.GetWindow <ConditionEditorWindow>(); editor.s = Color.black; editor.Conditions = con.Conditions; ConditionEditorFactory.Intance.ResetInstance(); }
// [MenuItem("Component/AI/EditCondition")] // public static void init () // { // ConditionEditorWindow window = (ConditionEditorWindow)EditorWindow.GetWindow (typeof(ConditionEditorWindow)); // window.title = "Root composite condition"; // } public static void DisplayConditionEditorWindow(AIEditor aiEditor, CompositeConditionWrapper compositionConditionWrapper) { ConditionEditorWindow window = (ConditionEditorWindow)EditorWindow.GetWindow(typeof(ConditionEditorWindow)); window.compositionConditionWrapper = compositionConditionWrapper; window.aiEditor = aiEditor; window.Show(); }
private void DrawActionColumn(Rect rect, int row, int column, bool active, bool focused) { var action = geoActionsList.list[row] as GeoActionDataControl; switch (column) { case 0: GUI.Label(rect, TC.get("Geo.GeoElementWindow.Actions." + action.getType() + ".Name")); break; case 1: switch (action.getType()) { case "Enter": DoEnterActionParameters(rect, action); break; case "Exit": DoExitActionParameters(rect, action); break; case "LookTo": DoLookToActionParameters(rect, action); break; case "Inspect": DoInspectActionParameters(rect, action); break; default: GUI.Label(rect, "Geo.GeoElementWindow.Actions.Unknown".Traslate(action.getType())); break; } break; case 2: if (GUI.Button(rect, "Element.Effects".Traslate())) { var effectEditorWindow = ScriptableObject.CreateInstance <EffectEditorWindow>(); effectEditorWindow.Init(action.Effects); effectEditorWindow.Show(); } break; case 3: if (GUI.Button(rect, action.Conditions.getBlocksCount() > 0 ? conditionsTex : noConditionsTex)) { ConditionEditorWindow.ShowAtPosition(action.Conditions, rect); } break; } }
private void DrawMapElement(Rect rect, int index, bool active, bool focused) { MapElement mapElement = (MapElement)mapElementReorderableList.list[index]; EditorGUI.LabelField(infoRect.GUIAdapt(rect), mapElement.getTargetId()); if (mapElement is ExtElemReference) { var extReference = mapElement as ExtElemReference; // Trasnform manager descriptor selection var avaliableDescriptors = TransformManagerDescriptorFactory.Instance.AvaliableTransformManagers.ToList(); var selected = avaliableDescriptors.FindIndex(d => d.Key == extReference.TransformManagerDescriptor.GetType()); var newSelected = EditorGUI.Popup(typePopupRect.GUIAdapt(rect), selected, avaliableDescriptors.ConvertAll(d => d.Value).ToArray()); if (newSelected != selected) { // In case of change, reinstance a new one extReference.TransformManagerDescriptor = TransformManagerDescriptorFactory.Instance.CreateDescriptor(avaliableDescriptors[newSelected].Key); UpdateMapResources(); } using (new EditorGUI.DisabledScope()) { if (GUI.Button(typeConfigRect.GUIAdapt(rect), "*")) { var o = DrawerParametersMenu.ShowAtPosition(typeConfigRect.GUIAdapt(rect)); DrawerParametersMenu.s_DrawerParametersMenu.ExtElemReference = extReference; if (o) { GUIUtility.ExitGUI(); } } } if (GUI.Button(centerButtonRect.GUIAdapt(rect), "Move")) { movingReference = extReference; } } if (GUI.Button(editButtonRect.GUIAdapt(rect), "Conditions")) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(mapElement.Conditions); } }
protected override void DrawInspector() { selectedQR = QRController.Instance.QRCodes[QRController.Instance.SelectedQRCode]; EditorGUI.BeginChangeCheck(); // Delayed in order to use content to render the QR var newContent = EditorGUILayout.DelayedTextField("QR.QRCodeEditorWindow.Content".Traslate(), selectedQR.Content); if (EditorGUI.EndChangeCheck()) { selectedQR.Content = newContent; } EditorGUILayout.LabelField("Search.Documentation".Traslate()); selectedQR.Documentation = EditorGUILayout.TextArea(selectedQR.Documentation, GUILayout.Height(200)); // Conditions and Effects using (new EditorGUILayout.HorizontalScope()) { if (GUILayout.Button("Conditions.Title".Traslate())) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(selectedQR.Conditions); } if (GUILayout.Button("Element.Effects".Traslate())) { EffectEditorWindow window = (EffectEditorWindow)ScriptableObject.CreateInstance(typeof(EffectEditorWindow)); window.Init(selectedQR.Effects); } } // QRCODE and buttons if (GUILayout.Button("QR.QRCodeEditorWindow.Save".Traslate())) { SaveQR(selectedQR); } if (GUILayout.Button("QR.QRCodeEditorWindow.Print".Traslate())) { PrintQR(selectedQR); } }
public override void Draw(int aID) { GUILayout.BeginArea(appearanceTableRect); GUILayout.BeginHorizontal(); GUILayout.Box(TC.get("Item.LookPanelTitle"), GUILayout.Width(windowWidth * 0.44f)); GUILayout.Box(TC.get("Conditions.Title"), GUILayout.Width(windowWidth * 0.44f)); GUILayout.EndHorizontal(); scrollPosition = GUILayout.BeginScrollView(scrollPosition); // Appearance table for (int i = 0; i < Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[GameRources.GetInstance().selectedItemIndex].getResourcesCount(); i++) { if (i == selectedAppearance) { GUI.skin = selectedAreaSkin; } else { GUI.skin = noBackgroundSkin; } tmpTex = (Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[ GameRources.GetInstance().selectedItemIndex].getResources()[i].getConditions().getBlocksCount() > 0? conditionsTex:noConditionsTex); GUILayout.BeginHorizontal(); if (i == selectedAppearance) { if (GUILayout.Button(Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[ GameRources.GetInstance().selectedItemIndex].getResources()[i].getName(), GUILayout.Width(windowWidth * 0.44f))) { OnAppearanceSelectionChange(i); } if (GUILayout.Button(tmpTex, GUILayout.Width(windowWidth * 0.44f))) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[ GameRources.GetInstance().selectedItemIndex].getResources()[i].getConditions()); } } else { if (GUILayout.Button(Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[ GameRources.GetInstance().selectedItemIndex].getResources()[i].getName(), GUILayout.Width(windowWidth * 0.44f))) { OnAppearanceSelectionChange(i); } if (GUILayout.Button(tmpTex, GUILayout.Width(windowWidth * 0.44f))) { OnAppearanceSelectionChange(i); } } GUILayout.EndHorizontal(); GUI.skin = defaultSkin; } GUILayout.EndScrollView(); GUILayout.EndArea(); /* * Right panel */ GUILayout.BeginArea(rightPanelRect); GUI.skin = noBackgroundSkin; if (GUILayout.Button(addTex, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[ GameRources.GetInstance().selectedItemIndex].addElement(Controller.RESOURCES, ""); } if (GUILayout.Button(duplicateTex, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[ GameRources.GetInstance().selectedItemIndex].duplicateElement(Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[ GameRources.GetInstance().selectedItemIndex].getResources()[selectedAppearance]); } if (GUILayout.Button(clearTex, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[ GameRources.GetInstance().selectedItemIndex].deleteElement(Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[ GameRources.GetInstance().selectedItemIndex].getResources()[selectedAppearance], false); } GUI.skin = defaultSkin; GUILayout.EndArea(); GUILayout.Space(30); GUILayout.BeginArea(propertiesTable); // Background chooser GUILayout.Label(TC.get("Resources.DescriptionItemImage")); GUILayout.BeginHorizontal(); if (GUILayout.Button(clearTex, GUILayout.Width(0.05f * windowWidth))) { imagePath = ""; } GUILayout.Box(imagePath, GUILayout.Width(0.7f * windowWidth)); if (GUILayout.Button(TC.get("Buttons.Select"), GUILayout.Width(0.19f * windowWidth))) { ShowAssetChooser(AssetType.ITEM); } GUILayout.EndHorizontal(); // Icon chooser GUILayout.Label(TC.get("Resources.DescriptionItemIcon")); GUILayout.BeginHorizontal(); if (GUILayout.Button(clearTex, GUILayout.Width(0.05f * windowWidth))) { inventoryIconPath = ""; } GUILayout.Box(inventoryIconPath, GUILayout.Width(0.7f * windowWidth)); if (GUILayout.Button(TC.get("Buttons.Select"), GUILayout.Width(0.19f * windowWidth))) { ShowAssetChooser(AssetType.ICON); } GUILayout.EndHorizontal(); // Image over chooser GUILayout.Label(TC.get("Resources.DescriptionItemImageOver")); GUILayout.BeginHorizontal(); if (GUILayout.Button(clearTex, GUILayout.Width(0.05f * windowWidth))) { imageWhenOverPath = ""; } GUILayout.Box(imageWhenOverPath, GUILayout.Width(0.7f * windowWidth)); if (GUILayout.Button(TC.get("Buttons.Select"), GUILayout.Width(0.19f * windowWidth))) { ShowAssetChooser(AssetType.ITEM_OVER); } GUILayout.EndHorizontal(); GUILayout.EndArea(); if (imagePath != "") { GUI.DrawTexture(previewRect, imageTex, ScaleMode.ScaleToFit); } }
public override void Draw(int aID) { GUILayout.BeginArea(tableRect); GUILayout.BeginHorizontal(); GUILayout.Box(TC.get("ActiveAreasList.Id"), GUILayout.Width(windowWidth * 0.54f)); GUILayout.Box(TC.get("Conditions.Title"), GUILayout.Width(windowWidth * 0.14f)); GUILayout.Box(TC.get("ActiveAreasList.Documentation"), GUILayout.Width(windowWidth * 0.18f)); GUILayout.EndHorizontal(); scrollPosition = GUILayout.BeginScrollView(scrollPosition); for (int i = 0; i < Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreasList().Count; i++) { if (i == selectedArea) { GUI.skin = selectedAreaSkin; } GUILayout.BeginHorizontal(); if (GUILayout.Button(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreasList()[i].getId(), GUILayout.Width(windowWidth * 0.54f))) { OnSelectionChanged(i); } if (GUILayout.Button(conditionTex, GUILayout.Width(windowWidth * 0.14f))) { OnSelectionChanged(i); ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreasList()[i] .getConditions()); } if (GUILayout.Button(TC.get("GeneralText.EditDocumentation"), GUILayout.Width(windowWidth * 0.18f))) { OnSelectionChanged(i); } GUILayout.EndHorizontal(); GUI.skin = defaultSkin; } GUILayout.EndScrollView(); GUILayout.EndArea(); /* * Right panel */ GUILayout.BeginArea(rightPanelRect); GUI.skin = noBackgroundSkin; if (GUILayout.Button(addTexture, GUILayout.MaxWidth(0.08f * windowWidth))) { ActiveAreaNewName window = (ActiveAreaNewName)ScriptableObject.CreateInstance(typeof(ActiveAreaNewName)); window.Init(this, "IdObject"); } if (GUILayout.Button(duplicateImg, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList() .duplicateElement(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreas()[selectedArea]); } if (GUILayout.Button(moveUp, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList() .moveElementUp(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreas()[selectedArea]); } if (GUILayout.Button(moveDown, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList() .moveElementDown(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreas()[selectedArea]); } if (GUILayout.Button(clearImg, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList() .deleteElement(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreas()[selectedArea], false); if (selectedArea >= 0) { selectedArea--; } if (selectedAction >= 0) { selectedAction--; } } GUI.skin = defaultSkin; GUILayout.EndArea(); /** * ACTION EDITOR */ GUILayout.BeginArea(actionRect); GUILayout.BeginHorizontal(); GUILayout.Box(TC.get("Element.Action"), GUILayout.Width(windowWidth * 0.39f)); GUILayout.Box(TC.get("ActionsList.NeedsGoTo"), GUILayout.Width(windowWidth * 0.39f)); GUILayout.Box(TC.get("Element.Effects") + "/" + TC.get("SmallAction.Conditions"), GUILayout.Width(windowWidth * 0.1f)); GUILayout.EndHorizontal(); scrollPositionAction = GUILayout.BeginScrollView(scrollPositionAction, GUILayout.ExpandWidth(false)); if (selectedArea >= 0) { // Action table for (int i = 0; i < Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreas()[selectedArea] .getActionsList().getActions().Count; i++) { if (i == selectedAction) { GUI.skin = selectedAreaSkin; } else { GUI.skin = noBackgroundSkin; } GUILayout.BeginHorizontal(); if (i == selectedAction) { GUILayout.Label( Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreas()[ selectedArea ].getActionsList().getActions()[i].getTypeName(), GUILayout.Width(windowWidth * 0.39f)); if (Controller.getInstance().playerMode() == Controller.FILE_ADVENTURE_1STPERSON_PLAYER) { if (GUILayout.Button(TC.get("ActionsList.NotRelevant"), GUILayout.Width(windowWidth * 0.39f))) { selectedAction = i; } } else { GUILayout.BeginHorizontal(GUILayout.Width(windowWidth * 0.39f)); Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreas()[ selectedArea].getActionsList().getActions()[i].setNeedsGoTo( GUILayout.Toggle( Controller.getInstance() .getSelectedChapterDataControl() .getScenesList() .getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList() .getActiveAreas()[selectedArea].getActionsList().getActions()[i] .getNeedsGoTo(), "")); Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreas()[ selectedArea].getActionsList().getActions()[i].setKeepDistance( EditorGUILayout.IntField( Controller.getInstance() .getSelectedChapterDataControl() .getScenesList() .getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList() .getActiveAreas()[selectedArea].getActionsList().getActions()[i] .getKeepDistance())); GUILayout.EndHorizontal(); } GUILayout.BeginVertical(); if (GUILayout.Button(TC.get("ActiveAreasList.Conditions"), GUILayout.Width(windowWidth * 0.1f))) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init( Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreas()[ selectedArea ].getActionsList().getActions()[i].getConditions()); } if (GUILayout.Button(TC.get("Element.Effects"), GUILayout.Width(windowWidth * 0.1f))) { EffectEditorWindow window = (EffectEditorWindow)ScriptableObject.CreateInstance(typeof(EffectEditorWindow)); window.Init( Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreas()[ selectedArea ].getActionsList().getActions()[i].getEffects()); } if (GUILayout.Button(TC.get("SmallAction.EditNotEffects"), GUILayout.Width(windowWidth * 0.1f))) { EffectEditorWindow window = (EffectEditorWindow)ScriptableObject.CreateInstance(typeof(EffectEditorWindow)); window.Init( Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreas()[ selectedArea ].getActionsList().getActions()[i].getNotEffectsController()); } GUILayout.EndVertical(); } else { if ( GUILayout.Button( Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreas()[ selectedArea].getActionsList().getActions()[i].getTypeName(), GUILayout.Width(windowWidth * 0.39f))) { selectedAction = i; } if (Controller.getInstance().playerMode() == Controller.FILE_ADVENTURE_1STPERSON_PLAYER) { if (GUILayout.Button(TC.get("ActionsList.NotRelevant"), GUILayout.Width(windowWidth * 0.39f))) { selectedAction = i; } } else { if ( GUILayout.Button( Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreas()[ selectedArea].getActionsList().getActions()[i].getNeedsGoTo().ToString(), GUILayout.Width(windowWidth * 0.39f))) { selectedAction = i; } } } GUILayout.EndHorizontal(); GUI.skin = defaultSkin; } } GUILayout.EndScrollView(); GUILayout.EndArea(); /* * Right action panel */ GUILayout.BeginArea(actionRightPanelRect); GUI.skin = noBackgroundSkin; if (GUILayout.Button(addTexture, GUILayout.MaxWidth(0.08f * windowWidth))) { addMenu.menu.ShowAsContext(); } if (GUILayout.Button(duplicateImg, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreas()[selectedArea] .getActionsList() .duplicateElement(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreas()[selectedArea] .getActionsList().getActions()[selectedAction]); } if (GUILayout.Button(clearImg, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreas()[selectedArea] .getActionsList() .deleteElement(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getActiveAreasList().getActiveAreas()[selectedArea] .getActionsList().getActions()[selectedAction], false); if (selectedAction >= 0) { selectedAction--; } } GUI.skin = defaultSkin; GUILayout.EndArea(); if (backgroundPath != "") { GUILayout.BeginArea(infoPreviewRect); // Show preview dialog if (GUILayout.Button(TC.get("DefaultClickAction.ShowDetails") + "/" + TC.get("GeneralText.Edit"))) { ActiveAreasEditor window = (ActiveAreasEditor)ScriptableObject.CreateInstance(typeof(ActiveAreasEditor)); window.Init(this, Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex], selectedArea); } GUILayout.EndArea(); GUI.DrawTexture(previewRect, backgroundPreviewTex, ScaleMode.ScaleToFit); } else { GUILayout.BeginArea(infoPreviewRect); GUILayout.Button("No background!"); GUILayout.EndArea(); } }
private void DrawMapElement(Rect rect, int index, bool active, bool focused) { MapElement mapElement = (MapElement)mapElementReorderableList.list[index]; EditorGUI.LabelField(infoRect.GUIAdapt(rect), mapElement.getTargetId()); //geo.Type = (GMLGeometry.GeometryType)EditorGUI.EnumPopup(typePopupRect.GUIAdapt(rect), geo.Type); var center = map.Center; if (mapElement is GeoReference) { var geoReference = mapElement as GeoReference; var geoElement = Controller.getInstance().getSelectedChapterDataControl().getObjects <GeoElement>().Find(e => e.Id == geoReference.getTargetId()); if (geoElement != null && geoElement.Geometry.Points.Count > 0) { center = geoElement.Geometry.Center; } } else if (mapElement is ExtElemReference) { var extReference = mapElement as ExtElemReference; // Trasnform manager descriptor selection var avaliableDescriptors = TransformManagerDescriptorFactory.Instance.AvaliableTransformManagers.ToList(); var selected = avaliableDescriptors.FindIndex(d => d.Key == extReference.TransformManagerDescriptor.GetType()); var newSelected = EditorGUI.Popup(typePopupRect.GUIAdapt(rect), selected, avaliableDescriptors.ConvertAll(d => d.Value).ToArray()); if (newSelected != selected) { // In case of change, reinstance a new one extReference.TransformManagerDescriptor = TransformManagerDescriptorFactory.Instance.CreateDescriptor(avaliableDescriptors[newSelected].Key); UpdateMapResources(); } using (new EditorGUI.DisabledScope()) { if (GUI.Button(typeConfigRect.GUIAdapt(rect), "*")) { //DrawerParametersMenu.s_SpriteEditor = this; var o = DrawerParametersMenu.ShowAtPosition(typeConfigRect.GUIAdapt(rect)); DrawerParametersMenu.s_DrawerParametersMenu.ExtElemReference = extReference; if (o) { GUIUtility.ExitGUI(); } } } if (GUI.Button(centerButtonRect.GUIAdapt(rect), "Move")) { movingReference = extReference; } } /*if (GUI.Button(centerButtonRect.GUIAdapt(rect), "Center")) * { * map.Center = center; * }*/ /*if (GUI.Button(editButtonRect.GUIAdapt(rect), editing != geo ? "Unlocked" : "Locked")) * { * editing = editing == geo ? null : geo; * }*/ if (GUI.Button(editButtonRect.GUIAdapt(rect), "Conditions")) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(mapElement.Conditions); } }
public void draw() { if (closeStyle == null) { closeStyle = new GUIStyle(GUI.skin.button); closeStyle.padding = new RectOffset(0, 0, 0, 0); closeStyle.margin = new RectOffset(0, 5, 2, 0); closeStyle.normal.textColor = Color.red; closeStyle.focused.textColor = Color.red; closeStyle.active.textColor = Color.red; closeStyle.hover.textColor = Color.red; } GUIStyle style = new GUIStyle(); style.padding = new RectOffset(5, 5, 5, 5); EditorGUILayout.BeginVertical(); EditorGUILayout.HelpBox(TC.get("ConversationEditor.AtLeastOne"), MessageType.None); bool infoShown = false; if (myNode.getLineCount() > 0) { bool isScrolling = false; if (myNode.getLineCount() > 10) { scroll = EditorGUILayout.BeginScrollView(scroll, GUILayout.MinWidth(360), GUILayout.Height(190)); isScrolling = true; } for (int i = 0; i < myNode.getLineCount(); i++) { EditorGUILayout.BeginHorizontal(); bool showInfo = false; EditorGUIUtility.labelWidth = GUI.skin.label.CalcSize(new GUIContent(TC.get("ConversationEditor.Option") + " " + i + ": ")).x; myNode.getLine(i).setText(EditorGUILayout.TextField(TC.get("ConversationEditor.Option") + " " + i + ": ", myNode.getLine(i).getText(), GUILayout.Width(200))); tmpTex = (myNode.getLine(i).getConditions().getConditionsList().Count > 0 ? conditionsTex : noConditionsTex); if (GUILayout.Button(tmpTex, noBackgroundSkin.button, GUILayout.Width(15), GUILayout.Height(15))) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(myNode.getLine(i).getConditions()); } if (GUILayout.Button(linkTex, noBackgroundSkin.button, GUILayout.Width(15), GUILayout.Height(15))) { parent.startSetChild(this.myNode, i); } if (GUILayout.Button("X", closeStyle, GUILayout.Width(15), GUILayout.Height(15))) { myNode.removeLine(i); myNode.removeChild(i); } ; EditorGUILayout.EndHorizontal(); } if (isScrolling) { EditorGUILayout.EndScrollView(); } } EditorGUILayout.BeginHorizontal(); GUIContent bttext = new GUIContent(TC.get("ConversationEditor.AddOptionChild")); Rect btrect = GUILayoutUtility.GetRect(bttext, style); if (GUI.Button(btrect, bttext)) { myNode.addLine(new ConversationLine("Player", "")); parent.addChild(this.myNode, new DialogueConversationNode()); } ; tmpTex = (myNode.getEffects().getEffects().Count > 0 ? effectTex : noEffectTex); if (GUILayout.Button(tmpTex, noBackgroundSkin.button, GUILayout.Width(24), GUILayout.Height(24))) { EffectEditorWindow window = (EffectEditorWindow)ScriptableObject.CreateInstance(typeof(EffectEditorWindow)); window.Init(myNode.getEffects()); } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); }
public override void Draw(int aID) { GUILayout.BeginArea(descriptionRect); GUILayout.Label(TC.get("Item.Documentation")); fullItemDescription = GUILayout.TextField(fullItemDescription); if (!fullItemDescription.Equals(fullItemDescriptionLast)) { OnItemDescriptionChanged(fullItemDescription); } GUILayout.EndArea(); /* * Desciptor table */ GUILayout.BeginArea(descriptionTableRect); GUILayout.BeginHorizontal(); GUILayout.Box(TC.get("DescriptionList.Descriptions"), GUILayout.Width(windowWidth * 0.44f)); GUILayout.Box(TC.get("Conditions.Title"), GUILayout.Width(windowWidth * 0.44f)); GUILayout.EndHorizontal(); scrollPosition = GUILayout.BeginScrollView(scrollPosition); for (int i = 0; i < Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[ GameRources.GetInstance().selectedItemIndex].getDescriptionController().getDescriptionCount(); i++) { if (i == selectedDescription) { GUI.skin = selectedAreaSkin; } else { GUI.skin = noBackgroundSkin; } tmpTex = (Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[ GameRources.GetInstance().selectedItemIndex].getDescriptionController() .getDescriptionController(i) .getConditionsController() .getBlocksCount() > 0 ? conditionsTex : noConditionsTex); GUILayout.BeginHorizontal(); if (i == selectedDescription) { if (GUILayout.Button(Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[ GameRources.GetInstance().selectedItemIndex].getDescriptionController() .getDescriptionController(i) .getName(), GUILayout.Width(windowWidth * 0.44f))) { OnDescriptionSelectionChange(i); } if (GUILayout.Button(tmpTex, GUILayout.Width(windowWidth * 0.44f))) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init( Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[ GameRources.GetInstance().selectedItemIndex].getDescriptionController() .getDescriptionController(i) .getConditionsController()); } } else { if (GUILayout.Button(Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[ GameRources.GetInstance().selectedItemIndex].getDescriptionController() .getDescriptionController(i) .getName(), GUILayout.Width(windowWidth * 0.44f))) { OnDescriptionSelectionChange(i); } if (GUILayout.Button(tmpTex, GUILayout.Width(windowWidth * 0.44f))) { OnDescriptionSelectionChange(i); } } GUILayout.EndHorizontal(); GUI.skin = defaultSkin; } GUILayout.EndScrollView(); GUILayout.EndArea(); /* * Right panel */ GUILayout.BeginArea(rightPanelRect); GUI.skin = noBackgroundSkin; if (GUILayout.Button(addTex, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[ GameRources.GetInstance().selectedItemIndex].getDescriptionController().addElement(); } if (GUILayout.Button(duplicateTex, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[ GameRources.GetInstance().selectedItemIndex].getDescriptionController().duplicateElement(); } if (GUILayout.Button(clearTex, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getItemsList().getItems()[ GameRources.GetInstance().selectedItemIndex].getDescriptionController().deleteElement(); } GUI.skin = defaultSkin; GUILayout.EndArea(); /* * Properties panel */ GUILayout.BeginArea(settingsTable); GUILayout.Label(TC.get("Item.Name")); GUILayout.BeginHorizontal(); descriptionName = GUILayout.TextField(descriptionName, GUILayout.MaxWidth(0.6f * windowWidth)); if (!descriptionName.Equals(descriptionNameLast)) { OnDescriptionNameChanged(descriptionName); } if (!string.IsNullOrEmpty(descriptionSound)) { audioTextureTmp = audioTexture; } else { audioTextureTmp = noAudioTexture; } GUILayout.Label(audioTextureTmp); GUILayout.Label(descriptionSound); if (GUILayout.Button(TC.get("Buttons.Select"))) { ShowAssetChooser(AssetType.NAME_SOUND); } if (GUILayout.Button(clearTex)) { OnDescriptorNameSoundChange(""); } GUILayout.EndHorizontal(); GUILayout.Label(TC.get("Item.Description")); GUILayout.BeginHorizontal(); briefDescription = GUILayout.TextField(briefDescription, GUILayout.MaxWidth(0.6f * windowWidth)); if (!briefDescription.Equals(briefDescriptionLast)) { OnBriefDescriptionChanged(briefDescription); } if (!string.IsNullOrEmpty(briefDescriptionSound)) { audioTextureTmp = audioTexture; } else { audioTextureTmp = noAudioTexture; } GUILayout.Label(audioTextureTmp); GUILayout.Label(briefDescriptionSound); if (GUILayout.Button(TC.get("Buttons.Select"))) { ShowAssetChooser(AssetType.BRIEF_DESCRIPTION_SOUND); } if (GUILayout.Button(clearTex)) { OnDescriptorBriefSoundChange(""); } GUILayout.EndHorizontal(); GUILayout.Label(TC.get("Item.DetailedDescription")); GUILayout.BeginHorizontal(); detailedDescription = GUILayout.TextField(detailedDescription, GUILayout.MaxWidth(0.6f * windowWidth)); if (!detailedDescription.Equals(detailedDescriptionLast)) { OnDetailedDescriptionChanged(detailedDescription); } if (!string.IsNullOrEmpty(detailedDescriptionSound)) { audioTextureTmp = audioTexture; } else { audioTextureTmp = noAudioTexture; } GUILayout.Label(audioTextureTmp); GUILayout.Label(detailedDescriptionSound); if (GUILayout.Button(TC.get("Buttons.Select"))) { ShowAssetChooser(AssetType.DETAILED_DESCRIPTION_SOUND); } if (GUILayout.Button(clearTex)) { OnDescriptorDetailedSoundChange(""); } GUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Label(TC.get("Item.ReturnsWhenDragged.Title")); GUILayout.Box(TC.get("Item.ReturnsWhenDragged.Description")); dragdropToogle = GUILayout.Toggle(dragdropToogle, TC.get("Item.ReturnsWhenDragged")); if (dragdropToogle != dragdropToogleLast) { OnDragAndDropToogleValueChange(dragdropToogle); } GUILayout.FlexibleSpace(); GUILayout.Label(TC.get("Behaviour")); GUILayout.BeginHorizontal(); selectedBehaviourType = EditorGUILayout.Popup(selectedBehaviourType, behaviourTypes, GUILayout.MaxWidth(0.2f * windowWidth)); if (selectedBehaviourType != selectedBehaviourTypeLast) { OnBehaviourChange(selectedBehaviourType); } GUILayout.Box(behaviourTypesDescription[selectedBehaviourType]); GUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Label(TC.get("Resources.TransitionTime")); GUILayout.Box(TC.get("Resources.TransitionTime.Description")); transitionTime = GUILayout.TextField(transitionTime); transitionTime = (Regex.Match(transitionTime, "^[0-9]{1,3}$").Success ? transitionTime : transitionTimeLast); if (!transitionTime.Equals(transitionTimeLast)) { OnTransitionTimeChange(transitionTime); } GUILayout.EndArea(); }
void OnGUI() { //A line separates HTN Editor from task editor Drawing.DrawLine(new Vector2(302, 0), new Vector2(302, 700), Color.grey, 2.0f, false); /*HTN EDITOR*/ items = new List <HTNEditorItem>(); items.Add(new HTNEditorItem( new Rect(new Vector2(0, 0), new Vector2(100, 30)), goal, itemType.COMPOUND)); DrawCompoundTask(goal, null, new Vector2(10, 0)); //GUI.EndScrollView (); Event currentEvent = Event.current; foreach (HTNEditorItem htnItem in items) { if (currentEvent.type == EventType.MouseDown && currentEvent.button == 0 && htnItem.area.Contains(currentEvent.mousePosition) ) { selected = htnItem; } } /*TASK EDITOR*/ if (selected.item != null) { GUIStyle labelStyle = new GUIStyle(); labelStyle.fontSize = 12; labelStyle.normal.textColor = Color.black; labelStyle.fontStyle = FontStyle.Bold; if (selected.type == itemType.COMPOUND) { int i = 0; CompoundTask selectedCT = (CompoundTask)selected.item; GUI.Label(new Rect(editorPos, itemSize), "Name", labelStyle); selectedCT.name = GUI.TextField(new Rect(new Vector2(editorPos.x + 50, editorPos.y), new Vector2(75, 20)), selectedCT.name); if (selectedCT.Equals(goal)) { GUI.Label(new Rect(new Vector2(editorPos.x, editorPos.y + 100), itemSize), "Goal condition", labelStyle); GUI.Label(new Rect(new Vector2(editorPos.x, editorPos.y + 125), new Vector2(120, 20)), "Logical operator"); string[] operatorOptions = new string[] { "AND", "OR" }; int selectedOperator = Array.IndexOf <string> (operatorOptions, agent.logicalOperator.ToString()); selectedOperator = EditorGUI.Popup(new Rect(new Vector2(editorPos.x + 100, editorPos.y + 125), new Vector2(50, 20)), selectedOperator, operatorOptions); if (selectedOperator == 0) { agent.logicalOperator = LogicalOperator.AND; } else if (selectedOperator == 1) { agent.logicalOperator = LogicalOperator.OR; } if (agent.goalCondition.Count > 0) { for (i = 0; i < agent.goalCondition.Count; i++) { Atom cond = agent.goalCondition[i]; string condLabelName = string.Concat(cond.name, "("); foreach (Term var in cond.terms) { condLabelName = string.Concat(condLabelName, var.key); if (cond.terms.IndexOf(var) < cond.terms.Count - 1) { condLabelName = string.Concat(condLabelName, ","); } } condLabelName = string.Concat(condLabelName, ")"); GUI.Label(new Rect( new Vector2(editorPos.x, editorPos.y + 150 + i * 25), new Vector2(200, 50)), condLabelName); if (GUI.Button(new Rect(new Vector2(editorPos.x + 110, editorPos.y + 150 + i * 25), new Vector2(50, 15)), "Edit")) { ConditionEditorWindow.ShowWindow(agent, cond); } if (GUI.Button(new Rect(new Vector2(editorPos.x + 175, editorPos.y + 150 + i * 25), new Vector2(50, 15)), "Delete")) { agent.goalCondition.Remove(cond); ConditionEditorWindow.GetWindow <ConditionEditorWindow>().Close(); } } } if (GUI.Button(new Rect(new Vector2(editorPos.x, editorPos.y + 150 + i * 25), new Vector2(75, 20)), "Add ")) { Atom cond = new Atom("New Condition"); agent.goalCondition.Add(cond); ConditionEditorWindow.ShowWindow(agent, cond); } } } else if (selected.type == itemType.PRIMITIVE) { PrimitiveTask selectedPT = (PrimitiveTask)selected.item; GUI.Label(new Rect(editorPos, itemSize), "Name", labelStyle); selectedPT.name = GUI.TextField(new Rect(new Vector2(editorPos.x + 50, editorPos.y), new Vector2(75, 20)), selectedPT.name); GUI.Label(new Rect(new Vector2(editorPos.x, editorPos.y + 50), itemSize), "Cost", labelStyle); selectedPT.cost = EditorGUI.FloatField(new Rect(new Vector2(editorPos.x + 50, editorPos.y + 50), new Vector2(75, 20)), selectedPT.cost); GUI.Label(new Rect(new Vector2(editorPos.x, editorPos.y + 90), itemSize), "Arguments", labelStyle); int i = 0; scrollPositionArg = GUI.BeginScrollView(new Rect(new Vector2(editorPos.x, editorPos.y + 120), new Vector2(300, 50)), scrollPositionArg, new Rect(new Vector2(editorPos.x, editorPos.y + 120), new Vector2(275, 50 + selectedPT.arguments.Count * 10)), false, false); if (selectedPT.arguments.Count > 0) { for (i = 0; i < selectedPT.arguments.Count; i++) { //GUILayout.BeginHorizontal(GUILayout.Width(200)); GUI.Label(new Rect( new Vector2(editorPos.x, editorPos.y + 120 + i * 25), itemSize), "Name"); List <string> domVarNamesList = new List <string> (); foreach (Term v in agent.domainVariables) { domVarNamesList.Add(v.key); } varIndex = domVarNamesList.IndexOf(selectedPT.arguments[i].key); if (varIndex == -1) { varIndex = 0; } varIndex = EditorGUI.Popup(new Rect(new Vector2(editorPos.x + 105, editorPos.y + 120 + i * 25), new Vector2(50, 20)), varIndex, domVarNamesList.ToArray()); selectedPT.arguments[i] = agent.domainVariables[varIndex]; if (GUI.Button(new Rect(new Vector2(editorPos.x + 160, editorPos.y + 120 + i * 25), new Vector2(50, 15)), "Delete")) { selectedPT.deleteArgument(selectedPT.arguments[i]); } } } GUI.EndScrollView(); Vector2 AddButtonPos = new Vector2(0, 0); if (selectedPT.arguments.Count == 0) { AddButtonPos = new Vector2(editorPos.x, editorPos.y + 120); } else if (selectedPT.arguments.Count > 0) { AddButtonPos = new Vector2(editorPos.x, editorPos.y + 170); } if (GUI.Button(new Rect(AddButtonPos, new Vector2(75, 20)), "Add")) { foreach (Term argument in agent.domainVariables) { if (!selectedPT.arguments.Contains(argument)) { selectedPT.addArgument(argument); break; } } } i = 0; GUI.Label(new Rect(new Vector2(editorPos.x, editorPos.y + 210 + i * 25), new Vector2(120, 20)), "Preconditions", labelStyle); GUI.Label(new Rect(new Vector2(editorPos.x, editorPos.y + 240), new Vector2(120, 20)), "Logical operator"); string[] operatorOptions = new string[] { "AND", "OR" }; int selectedOperator = Array.IndexOf <string> (operatorOptions, selectedPT.logicalOperator.ToString()); selectedOperator = EditorGUI.Popup(new Rect(new Vector2(editorPos.x + 100, editorPos.y + 240), new Vector2(50, 20)), selectedOperator, operatorOptions); if (selectedOperator == 0) { selectedPT.logicalOperator = LogicalOperator.AND; } else if (selectedOperator == 1) { selectedPT.logicalOperator = LogicalOperator.OR; } scrollPositionPre = GUI.BeginScrollView(new Rect(new Vector2(editorPos.x, editorPos.y + 265), new Vector2(300, 50)), scrollPositionPre, new Rect(new Vector2(editorPos.x, editorPos.y + 265), new Vector2(275, 50 + selectedPT.preconditions.Count * 10)), false, false); if (selectedPT.preconditions.Count > 0) { for (i = 0; i < selectedPT.preconditions.Count; i++) { Atom pre = selectedPT.preconditions[i]; string preLabelName = ""; if (pre.sign == false) { preLabelName = string.Concat("NOT(", pre.name, "("); } else if (pre.sign == true) { preLabelName = string.Concat(pre.name, "("); } foreach (Term var in pre.terms) { preLabelName = string.Concat(preLabelName, var.key); if (pre.terms.IndexOf(var) < pre.terms.Count - 1) { preLabelName = string.Concat(preLabelName, ","); } } if (pre.sign == true) { preLabelName = string.Concat(preLabelName, ")"); } else if (pre.sign == false) { preLabelName = string.Concat(preLabelName, "))"); } GUI.Label(new Rect( new Vector2(editorPos.x, editorPos.y + 265 + i * 25), new Vector2(200, 50)), preLabelName); if (GUI.Button(new Rect(new Vector2(editorPos.x + 110, editorPos.y + 265 + i * 25), new Vector2(50, 15)), "Edit")) { ConditionEditorWindow.ShowWindow(agent, pre); } if (GUI.Button(new Rect(new Vector2(editorPos.x + 175, editorPos.y + 265 + i * 25), new Vector2(50, 15)), "Delete")) { selectedPT.deletePrecondition(pre); ConditionEditorWindow.GetWindow <ConditionEditorWindow>().Close(); } } } GUI.EndScrollView(); if (selectedPT.preconditions.Count == 0) { AddButtonPos = new Vector2(editorPos.x, editorPos.y + 275); } else if (selectedPT.preconditions.Count > 0) { AddButtonPos = new Vector2(editorPos.x, editorPos.y + 315); } if (GUI.Button(new Rect(AddButtonPos, new Vector2(75, 20)), "Add ")) { Atom pre = new Atom("New Condition"); selectedPT.addPrecondition(pre); ConditionEditorWindow.ShowWindow(agent, pre); } i = 0; GUI.Label(new Rect(new Vector2(editorPos.x, editorPos.y + 350 + i * 25), new Vector2(120, 20)), "Concurrent tasks", labelStyle); scrollPositionCunc = GUI.BeginScrollView(new Rect(new Vector2(editorPos.x, editorPos.y + 375), new Vector2(350, 75)), scrollPositionCunc, new Rect(new Vector2(editorPos.x, editorPos.y + 375), new Vector2(325, 75 + selectedPT.cuncurrentTasks.Count * 10)), false, false); for (i = 0; i < selectedPT.cuncurrentTasks.Count; i++) { CuncurrentTask cuncurrent = selectedPT.cuncurrentTasks[i]; string[] options = new string[] { "True", "False" }; int selectedIndex = 0; if (cuncurrent.sign == true) { selectedIndex = 0; } else if (cuncurrent.sign == false) { selectedIndex = 1; } selectedIndex = EditorGUI.Popup(new Rect(new Vector2(editorPos.x, editorPos.y + 375 + i * 25), new Vector2(75, 20)), selectedIndex, options); if (selectedIndex == 0) { cuncurrent.sign = true; } else if (selectedIndex == 1) { cuncurrent.sign = false; } cuncurrent.task = GUI.TextField(new Rect(new Vector2(editorPos.x + 100, editorPos.y + 375 + i * 25), new Vector2(75, 20)), cuncurrent.task); selectedPT.cuncurrentTasks[i] = cuncurrent; int selectedVar = agent.domainVariables.IndexOf(agent.domainVariables.Find((Term t) => t.key == cuncurrent.agentVarName)); if (selectedVar == -1) { selectedVar = 0; } List <string> variablesNames = new List <string> (); foreach (Term var in agent.domainVariables) { variablesNames.Add(var.key); } selectedVar = EditorGUI.Popup(new Rect(new Vector2(editorPos.x + 200, editorPos.y + 375 + i * 25), new Vector2(50, 20)), selectedVar, variablesNames.ToArray()); cuncurrent.agentVarName = agent.domainVariables [selectedVar].key; if (GUI.Button(new Rect(new Vector2(editorPos.x + 275, editorPos.y + 375 + i * 25), new Vector2(45, 15)), "Delete")) { selectedPT.cuncurrentTasks.Remove(selectedPT.cuncurrentTasks[i]); ConditionEditorWindow.GetWindow <ConditionEditorWindow>().Close(); } } GUI.EndScrollView(); if (selectedPT.cuncurrentTasks.Count == 0) { AddButtonPos = new Vector2(editorPos.x, editorPos.y + 375); } else if (selectedPT.cuncurrentTasks.Count > 0) { AddButtonPos = new Vector2(editorPos.x, editorPos.y + 425); } if (GUI.Button(new Rect(AddButtonPos, new Vector2(75, 20)), "Add")) { selectedPT.cuncurrentTasks.Add(new CuncurrentTask(" ", false, agent.domainVariables[0].key)); } i = 0; GUI.Label(new Rect(new Vector2(editorPos.x, editorPos.y + 475 + i * 25), new Vector2(120, 20)), "Effects", labelStyle); scrollPositionEff = GUI.BeginScrollView(new Rect(new Vector2(editorPos.x, editorPos.y + 500), new Vector2(300, 50)), scrollPositionEff, new Rect(new Vector2(editorPos.x, editorPos.y + 475), new Vector2(275, 50 + selectedPT.effects.Count * 10)), false, false); if (selectedPT.effects.Count > 0) { for (i = 0; i < selectedPT.effects.Count; i++) { Atom eff = selectedPT.effects[i]; string effLabelName = ""; if (eff.sign == false) { effLabelName = string.Concat("NOT(", eff.name, "("); } else if (eff.sign == true) { effLabelName = string.Concat(eff.name, "("); } foreach (Term var in eff.terms) { effLabelName = string.Concat(effLabelName, var.key); if (eff.terms.IndexOf(var) < eff.terms.Count - 1) { effLabelName = string.Concat(effLabelName, ","); } } if (eff.sign == true) { effLabelName = string.Concat(effLabelName, ")"); } else if (eff.sign == false) { effLabelName = string.Concat(effLabelName, "))"); } GUI.Label(new Rect(new Vector2(editorPos.x, editorPos.y + 475 + i * 25), new Vector2(200, 50)), effLabelName); if (GUI.Button(new Rect(new Vector2(editorPos.x + 110, editorPos.y + 475 + i * 25), new Vector2(45, 15)), "Edit")) { ConditionEditorWindow.ShowWindow(agent, eff); } if (GUI.Button(new Rect(new Vector2(editorPos.x + 175, editorPos.y + 475 + i * 25), new Vector2(45, 15)), "Delete")) { selectedPT.deleteEffect(eff); ConditionEditorWindow.GetWindow <ConditionEditorWindow>().Close(); } } } GUI.EndScrollView(); if (selectedPT.effects.Count == 0) { AddButtonPos = new Vector2(editorPos.x, editorPos.y + 500); } else if (selectedPT.effects.Count > 0) { AddButtonPos = new Vector2(editorPos.x, editorPos.y + 550); } if (GUI.Button(new Rect(AddButtonPos, new Vector2(75, 20)), "Add")) { Atom eff = new Atom("New Effect"); selectedPT.addEffect(eff); ConditionEditorWindow.ShowWindow(agent, eff); } GUI.Label(new Rect(new Vector2(editorPos.x, editorPos.y + 600), new Vector2(120, 20)), "Ground Action", labelStyle); string[] actionsOptions = { "Move", "Animate", "Custom" }; if (selectedPT.actionType == ActionTypes.MOVEMENT) { actionIndex = 0; } else if (selectedPT.actionType == ActionTypes.ANIMATION) { actionIndex = 1; } else if (selectedPT.actionType == ActionTypes.CUSTOM) { actionIndex = 2; } //if (GUI.Button (new Rect(new Vector2(editorPos.x, editorPos.y + 500), new Vector2(200,20)),"Edit Action")); actionIndex = EditorGUI.Popup(new Rect(new Vector2(editorPos.x, editorPos.y + 625), new Vector2(100, 20)), actionIndex, actionsOptions); /*if (selectedPT.groundData == null) * selectedPT.groundData = new GroundData();*/ if (actionIndex == 0) { selectedPT.actionType = ActionTypes.MOVEMENT; GUI.Label(new Rect(new Vector2(editorPos.x + 110, editorPos.y + 625), new Vector2(100, 20)), "Speed"); selectedPT.groundData.speed = EditorGUI.FloatField(new Rect(new Vector2(editorPos.x + 160, editorPos.y + 625), new Vector2(50, 20)), selectedPT.groundData.speed); GUI.Label(new Rect(new Vector2(editorPos.x + 220, editorPos.y + 625), new Vector2(100, 20)), "Radius"); selectedPT.groundData.radius = EditorGUI.FloatField(new Rect(new Vector2(editorPos.x + 270, editorPos.y + 625), new Vector2(50, 20)), selectedPT.groundData.radius); if (agent.gameObject.GetComponent <Animator>() != null) { GUI.Label(new Rect(new Vector2(editorPos.x + 110, editorPos.y + 650), new Vector2(100, 20)), "Animation "); selectedPT.groundData.animationState = GUI.TextField(new Rect(new Vector2(editorPos.x + 180, editorPos.y + 650), new Vector2(50, 20)), selectedPT.groundData.animationState); } } else if (actionIndex == 1) { selectedPT.actionType = ActionTypes.ANIMATION; if (agent.gameObject.GetComponent <Animator>() != null) { GUI.Label(new Rect(new Vector2(editorPos.x + 110, editorPos.y + 625), new Vector2(100, 20)), "State"); selectedPT.groundData.animationState = GUI.TextField(new Rect(new Vector2(editorPos.x + 150, editorPos.y + 625), new Vector2(75, 20)), selectedPT.groundData.animationState); } } else if (actionIndex == 2) { selectedPT.actionType = ActionTypes.CUSTOM; selectedPT.groundData.name = GUI.TextField(new Rect(new Vector2(editorPos.x + 110, editorPos.y + 625), new Vector2(75, 20)), selectedPT.groundData.name.ToString()); if (GUI.Button(new Rect(new Vector2(editorPos.x + 200, editorPos.y + 625), new Vector2(100, 20)), "Create/Open")) { if (!File.Exists("Assets/Actions/" + (string)selectedPT.groundData.name + ".cs")) { using (var stream = new StreamWriter("Assets/Actions/" + (string)selectedPT.groundData.name + ".cs")) { stream.Write( @"using UnityEngine; using System; using System.Collections; public class " + (string)selectedPT.groundData.name + @": PrimitiveTask, IGroundAction { GameObject agentObj; public " + (string)selectedPT.groundData.name + @"(HTNAgent a, string n){ name = n; agentObj = a.gameObject; } public string Name{ get{return name;} set {name = value;} } //This starts agent's action execution public void Start(ActionManager manager, State state){ //Monitor precondition validity in current state: if not valid, notify to manager if (preconditions.Count > 0 && !RuleMatcher.MatchCondition (preconditions, state,logicalOperator)) manager.NotValid (); else { foreach (CuncurrentTask cuncurrent in cuncurrentTasks) if (!CheckCuncurrency (cuncurrent,agentObj.GetComponent<HTNAgent>())){ manager.Suspend (); return; } //Add custom code } } //Runs at every frame during action's execution public void Update(ActionManager manager, State state){ //Monitor preconditions validity in current state: if not valid, notify to manager if (preconditions.Count > 0 && !RuleMatcher.MatchCondition (preconditions, state,logicalOperator)) manager.NotValid (); else { foreach (CuncurrentTask cuncurrent in cuncurrentTasks) if (!CheckCuncurrency (cuncurrent,agentObj.GetComponent<HTNAgent>())){ manager.Suspend (); return; } //Add custom code } } public void OnComplete(ActionManager manager, State state){ //Add custom code //Flag as completed completed = true; //Apply effects foreach (Atom atom in effects){ Atom fact = new Atom(atom.name,atom.sign); foreach (Term var in atom.terms) fact.addTerm(new Term(var.value)); Atom existingFact = state.Contains(fact); if (state.Contains(fact) == null) state.addFact(fact); else existingFact.sign = fact.sign; } //Call next action manager.NextAction (); } }"); stream.Close(); } } UnityEditorInternal.InternalEditorUtility.OpenFileAtLineExternal("Assets/Actions/" + (string)selectedPT.groundData.name + ".cs", 1); } } } else if (selected.type == itemType.METHOD) { Method selectedM = (Method)selected.item; GUI.Label(new Rect(editorPos, itemSize), "Name", labelStyle); selectedM.name = GUI.TextField(new Rect(new Vector2(editorPos.x + 50, editorPos.y), new Vector2(75, 20)), selectedM.name); if (AtomListWindow.atomNames.list.Count > 0) { GUI.Label(new Rect(new Vector2(editorPos.x, editorPos.y + 75), itemSize), "Preference", labelStyle); string[] options = new string[PersonalityEditorWindow.personalities.list.Count + 2]; options [0] = "none"; PersonalityEditorWindow.personalities.list.CopyTo(options, 1); persIndex = new List <string>(options).IndexOf(selectedM.preference); persIndex = EditorGUI.Popup(new Rect(new Vector2(editorPos.x + 100, editorPos.y + 75), itemSize), persIndex, options); selectedM.preference = options[persIndex]; } GUI.Label(new Rect(new Vector2(editorPos.x, editorPos.y + 125), new Vector2(120, 20)), "Preconditions", labelStyle); GUI.Label(new Rect(new Vector2(editorPos.x, editorPos.y + 150), new Vector2(120, 20)), "Logical operator"); string[] operatorOptions = new string[] { "AND", "OR" }; int selectedOperator = Array.IndexOf <string> (operatorOptions, selectedM.logicalOperator.ToString()); selectedOperator = EditorGUI.Popup(new Rect(new Vector2(editorPos.x + 100, editorPos.y + 150), new Vector2(50, 20)), selectedOperator, operatorOptions); if (selectedOperator == 0) { selectedM.logicalOperator = LogicalOperator.AND; } else if (selectedOperator == 1) { selectedM.logicalOperator = LogicalOperator.OR; } scrollPositionMethoPre = GUI.BeginScrollView(new Rect(new Vector2(editorPos.x, editorPos.y + 175), new Vector2(300, 100)), scrollPositionMethoPre, new Rect(new Vector2(editorPos.x, editorPos.y + 175), new Vector2(275, 100 + selectedM.preconditions.Count * 25)), false, false); int i = 0; if (selectedM.preconditions.Count > 0) { for (i = 0; i < selectedM.preconditions.Count; i++) { Atom pre = selectedM.preconditions[i]; string preLabelName = ""; if (pre.sign == false) { preLabelName = string.Concat("NOT(", pre.name, "("); } else if (pre.sign == true) { preLabelName = string.Concat(pre.name, "("); } foreach (Term var in pre.terms) { preLabelName = string.Concat(preLabelName, var.key); if (pre.terms.IndexOf(var) < pre.terms.Count - 1) { preLabelName = string.Concat(preLabelName, ","); } } if (pre.sign == true) { preLabelName = string.Concat(preLabelName, ")"); } else if (pre.sign == false) { preLabelName = string.Concat(preLabelName, "))"); } GUI.Label(new Rect( new Vector2(editorPos.x, editorPos.y + 200 + i * 25), new Vector2(200, 50)), preLabelName); if (GUI.Button(new Rect(new Vector2(editorPos.x + 110, editorPos.y + 200 + i * 25), new Vector2(45, 15)), "Edit")) { ConditionEditorWindow.ShowWindow(agent, pre); } if (GUI.Button(new Rect(new Vector2(editorPos.x + 175, editorPos.y + 200 + i * 25), new Vector2(45, 15)), "Delete")) { selectedM.deletePrecondition(pre); ConditionEditorWindow.GetWindow <ConditionEditorWindow>().Close(); } } } GUI.EndScrollView(); Vector2 AddButtonPos = new Vector2(0, 0); if (selectedM.preconditions.Count == 0) { AddButtonPos = new Vector2(editorPos.x, editorPos.y + 175); } else if (selectedM.preconditions.Count > 0) { AddButtonPos = new Vector2(editorPos.x, editorPos.y + 275); } if (GUI.Button(new Rect(AddButtonPos, new Vector2(75, 20)), "Add ")) { Atom pre = new Atom("New Condition"); selectedM.addPrecondition(pre); ConditionEditorWindow.ShowWindow(agent, pre); } } } }
public override void Draw(int aID) { GUILayout.BeginArea(tableRect); GUILayout.BeginHorizontal(); GUILayout.Box(TC.get("ElementList.Layer"), GUILayout.Width(windowWidth * 0.12f)); GUILayout.Box("", GUILayout.Width(windowWidth * 0.06f)); GUILayout.Box(TC.get("ElementList.Title"), GUILayout.Width(windowWidth * 0.39f)); GUILayout.Box(TC.get("Conditions.Title"), GUILayout.Width(windowWidth * 0.29f)); GUILayout.EndHorizontal(); scrollPosition = GUILayout.BeginScrollView(scrollPosition); for (int i = 0; i < Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getReferencesList().getAllReferencesDataControl().Count; i++) { if (i == selectedElement) { GUI.skin = selectedElementSkin; } GUILayout.BeginHorizontal(); if ( GUILayout.Button( Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getReferencesList() .getAllReferencesDataControl()[i] .getLayer().ToString(), GUILayout.Width(windowWidth * 0.12f))) { selectedElement = i; } if (Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getReferencesList() .getAllReferencesDataControl()[i].getErdc() != null) { // FOR ELEMENT ERDC Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getReferencesList().getAllReferencesDataControl()[i] .getErdc().setVisible( GUILayout.Toggle( Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getReferencesList() .getAllReferencesDataControl()[i].getErdc().isVisible(), "", GUILayout.Width(windowWidth * 0.06f))); if ( GUILayout.Button( Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getReferencesList() .getAllReferencesDataControl()[i] .getErdc().getElementId(), GUILayout.Width(windowWidth * 0.39f))) { selectedElement = i; } if (GUILayout.Button(conditionTex, GUILayout.Width(windowWidth * 0.29f))) { selectedElement = i; ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getReferencesList() .getAllReferencesDataControl()[i].getErdc().getConditions()); } } else { if ( GUILayout.Button("", GUILayout.Width(windowWidth * 0.06f))) { selectedElement = i; } if ( GUILayout.Button("", GUILayout.Width(windowWidth * 0.39f))) { selectedElement = i; } if (GUILayout.Button(conditionTex, GUILayout.Width(windowWidth * 0.29f))) { selectedElement = i; } } GUILayout.EndHorizontal(); GUI.skin = defaultSkin; } GUILayout.EndScrollView(); GUILayout.EndArea(); /* * Right panel */ GUILayout.BeginArea(rightPanelRect); GUI.skin = noBackgroundSkin; if (GUILayout.Button(addTexture, GUILayout.MaxWidth(0.08f * windowWidth))) { addMenu.menu.ShowAsContext(); } if (GUILayout.Button(moveUp, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getReferencesList() .moveElementUp(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getReferencesList().getAllReferencesDataControl()[ selectedElement].getErdc()); } if (GUILayout.Button(moveDown, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getReferencesList() .moveElementDown(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getReferencesList().getAllReferencesDataControl()[ selectedElement].getErdc()); } if (GUILayout.Button(clearImg, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getReferencesList() .deleteElement(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getReferencesList().getAllReferencesDataControl()[ selectedElement].getErdc(), false); } GUI.skin = defaultSkin; GUILayout.EndArea(); if (backgroundPath != "") { GUILayout.BeginArea(infoPreviewRect); // Show preview dialog // Button visible only is there is at least 1 object if (selectedElement != -1 && Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getReferencesList().getAllReferencesDataControl()[ selectedElement].getErdc() != null) { if (GUILayout.Button(TC.get("DefaultClickAction.ShowDetails") + "/" + TC.get("GeneralText.Edit"))) { ObjectInSceneRefrencesEditor window = (ObjectInSceneRefrencesEditor) ScriptableObject.CreateInstance(typeof(ObjectInSceneRefrencesEditor)); window.Init(this, Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex], selectedElement); } } GUILayout.EndArea(); GUI.DrawTexture(previewRect, backgroundPreviewTex, ScaleMode.ScaleToFit); } else { GUILayout.BeginArea(infoPreviewRect); GUILayout.Button("No background!"); GUILayout.EndArea(); } }
public override void Draw(int aID) { /* * Timer table */ GUILayout.BeginArea(timerTableRect); GUILayout.BeginHorizontal(); GUILayout.Box(TC.get("TimersList.Timer"), GUILayout.MaxWidth(windowWidth * 0.3f)); GUILayout.Box(TC.get("TimersList.Time"), GUILayout.MaxWidth(windowWidth * 0.3f)); GUILayout.Box(TC.get("TimersList.Display"), GUILayout.MaxWidth(windowWidth * 0.3f)); GUILayout.EndHorizontal(); scrollPosition = GUILayout.BeginScrollView(scrollPosition); for (int i = 0; i < Controller.getInstance().getSelectedChapterDataControl().getTimersList().getTimers().Count; i++) { if (i == selectedTimer) { GUI.skin = selectedAreaSkin; } else { GUI.skin = noBackgroundSkin; } GUILayout.BeginHorizontal(); if (i == selectedTimer) { if (GUILayout.Button("Timer #" + i, GUILayout.MaxWidth(windowWidth * 0.3f))) { OnTimerSelectedChange(i); } timerTime = GUILayout.TextField(timerTime, GUILayout.MaxWidth(windowWidth * 0.3f)); timerTime = (Regex.Match(timerTime, "^[0-9]{1,4}$").Success ? timerTime : timerTimeLast); if (timerTime != timerTimeLast) { OnTimerTime(timerTime); } Controller.getInstance().getSelectedChapterDataControl().getTimersList().getTimers()[i].setShowTime(GUILayout .Toggle( Controller.getInstance().getSelectedChapterDataControl().getTimersList().getTimers()[i] .isShowTime(), "", GUILayout.MaxWidth(windowWidth * 0.3f))); } else { if (GUILayout.Button("Timer #" + i, GUILayout.MaxWidth(windowWidth * 0.3f))) { OnTimerSelectedChange(i); } if ( GUILayout.Button( Controller.getInstance().getSelectedChapterDataControl().getTimersList().getTimers()[i].getTime() .ToString(), GUILayout.MaxWidth(windowWidth * 0.3f))) { OnTimerSelectedChange(i); } if ( GUILayout.Button( Controller.getInstance().getSelectedChapterDataControl().getTimersList().getTimers()[i].isShowTime().ToString(), GUILayout.MaxWidth(windowWidth * 0.3f))) { OnTimerSelectedChange(i); } } GUILayout.EndHorizontal(); GUI.skin = defaultSkin; } GUILayout.EndScrollView(); GUILayout.EndArea(); /* * Right panel */ GUILayout.BeginArea(rightPanelRect); GUI.skin = noBackgroundSkin; if (GUILayout.Button(addTex, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getTimersList().addElement(Controller.TIMER, ""); } if (GUILayout.Button(duplicateTex, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance() .getSelectedChapterDataControl() .getTimersList() .duplicateElement( Controller.getInstance().getSelectedChapterDataControl().getTimersList().getTimers()[selectedTimer]); } if (GUILayout.Button(clearTex, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance() .getSelectedChapterDataControl() .getTimersList() .deleteElement( Controller.getInstance().getSelectedChapterDataControl().getTimersList().getTimers()[selectedTimer], false); } GUI.skin = defaultSkin; GUILayout.EndArea(); /* * Properties panel */ if (selectedTimer != -1 && Controller.getInstance().getSelectedChapterDataControl().getTimersList().getTimers()[selectedTimer] != null) { GUILayout.BeginArea(settingsTable); GUILayout.Label(TC.get("Timer.Documentation")); fullTimerDescription = GUILayout.TextArea(fullTimerDescription, GUILayout.MinHeight(0.1f * windowHeight)); if (fullTimerDescription != fullTimerDescriptionLast) { OnTimerDocumentationChanged(fullTimerDescription); } GUILayout.FlexibleSpace(); GUILayout.Label(TC.get("TimersList.Time")); GUILayout.BeginHorizontal(); if ( !Controller.getInstance().getSelectedChapterDataControl().getTimersList().getTimers()[selectedTimer] .isShowTime()) { GUI.enabled = false; } GUILayout.Label(TC.get("Timer.DisplayName")); displayName = GUILayout.TextField(displayName); if (displayName != displayNameLast) { OnTimerDisplayNameChanged(displayName); } Controller.getInstance() .getSelectedChapterDataControl() .getTimersList().getTimers()[selectedTimer].setCountDown(GUILayout.Toggle(Controller.getInstance() .getSelectedChapterDataControl() .getTimersList().getTimers()[selectedTimer].isCountDown(), TC.get("Timer.CountDown"))); Controller.getInstance() .getSelectedChapterDataControl() .getTimersList().getTimers()[selectedTimer].setShowWhenStopped(GUILayout.Toggle(Controller.getInstance() .getSelectedChapterDataControl() .getTimersList().getTimers()[selectedTimer].isShowWhenStopped(), TC.get("Timer.ShowWhenStopped"))); GUI.enabled = true; GUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Label(TC.get("Timer.LoopControl")); Controller.getInstance() .getSelectedChapterDataControl() .getTimersList().getTimers()[selectedTimer].setMultipleStarts(GUILayout.Toggle(Controller.getInstance() .getSelectedChapterDataControl() .getTimersList().getTimers()[selectedTimer].isMultipleStarts(), TC.get("Timer.MultipleStarts"))); GUILayout.Label(TC.get("Timer.MultipleStartsDesc"), smallFontStyle); Controller.getInstance() .getSelectedChapterDataControl() .getTimersList().getTimers()[selectedTimer].setRunsInLoop(GUILayout.Toggle(Controller.getInstance() .getSelectedChapterDataControl() .getTimersList().getTimers()[selectedTimer].isRunsInLoop(), TC.get("Timer.RunsInLoop"))); GUILayout.Label( TC.get("Timer.RunsInLoopDesc"), smallFontStyle); GUILayout.FlexibleSpace(); GUILayout.Label(TC.get("Timer.InitConditions")); if (GUILayout.Button(TC.get("GeneralText.EditInitConditions"))) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(Controller.getInstance() .getSelectedChapterDataControl() .getTimersList().getTimers()[selectedTimer].getInitConditions()); } GUILayout.FlexibleSpace(); GUILayout.Label(TC.get("Timer.EndConditions")); Controller.getInstance() .getSelectedChapterDataControl() .getTimersList().getTimers()[selectedTimer].setUsesEndCondition( GUILayout.Toggle(Controller.getInstance() .getSelectedChapterDataControl() .getTimersList().getTimers()[selectedTimer].isUsesEndCondition(), TC.get("Timer.UsesEndConditionShort"))); if ( !Controller.getInstance().getSelectedChapterDataControl().getTimersList().getTimers()[selectedTimer] .isUsesEndCondition()) { GUI.enabled = false; } if (GUILayout.Button(TC.get("GeneralText.EditEndConditions"))) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(Controller.getInstance() .getSelectedChapterDataControl() .getTimersList().getTimers()[selectedTimer].getEndConditions()); } GUI.enabled = true; GUILayout.FlexibleSpace(); GUILayout.BeginHorizontal(); GUILayout.Label(TC.get("Timer.Effects"), GUILayout.Width(0.45f * windowWidth)); GUILayout.Label(TC.get("Timer.PostEffects"), GUILayout.Width(0.45f * windowWidth)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (GUILayout.Button(TC.get("GeneralText.EditEffects"), GUILayout.Width(0.45f * windowWidth))) { EffectEditorWindow window = (EffectEditorWindow)ScriptableObject.CreateInstance(typeof(EffectEditorWindow)); window.Init(Controller.getInstance() .getSelectedChapterDataControl() .getTimersList().getTimers()[selectedTimer].getEffects()); } if (GUILayout.Button(TC.get("GeneralText.EditPostEffects"), GUILayout.Width(0.45f * windowWidth))) { EffectEditorWindow window = (EffectEditorWindow)ScriptableObject.CreateInstance(typeof(EffectEditorWindow)); window.Init(Controller.getInstance() .getSelectedChapterDataControl() .getTimersList().getTimers()[selectedTimer].getPostEffects()); } GUILayout.EndHorizontal(); GUILayout.EndArea(); } }
public override void Draw(int aID) { GUILayout.BeginArea(tableRect); GUILayout.BeginHorizontal(); GUILayout.Box(TC.get("Barrier.Title"), GUILayout.Width(windowWidth * 0.45f)); GUILayout.Box(TC.get("Conditions.Title"), GUILayout.Width(windowWidth * 0.45f)); GUILayout.EndHorizontal(); scrollPosition = GUILayout.BeginScrollView(scrollPosition); for (int i = 0; i < Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getBarriersList().getBarriersList().Count; i++) { if (i == selectedArea) { GUI.skin = selectedAreaSkin; } GUILayout.BeginHorizontal(); if (GUILayout.Button(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getBarriersList().getBarriersList()[i].getId(), GUILayout.Width(windowWidth * 0.44f))) { selectedArea = i; } if (GUILayout.Button(conditionTex, GUILayout.Width(windowWidth * 0.44f))) { selectedArea = i; ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getBarriersList().getBarriersList()[i].getConditions()); } GUILayout.EndHorizontal(); GUI.skin = defaultSkin; } GUILayout.EndScrollView(); GUILayout.EndArea(); /* * Right panel */ GUILayout.BeginArea(rightPanelRect); GUI.skin = noBackgroundSkin; if (GUILayout.Button(addTexture, GUILayout.MaxWidth(0.08f * windowWidth))) { BarrierNewName window = (BarrierNewName)ScriptableObject.CreateInstance(typeof(BarrierNewName)); window.Init(this, "IdBarrier"); } if (GUILayout.Button(duplicateImg, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getBarriersList() .duplicateElement(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getBarriersList().getBarriers()[selectedArea]); } if (GUILayout.Button(moveUp, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getBarriersList() .moveElementUp(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getBarriersList().getBarriers()[selectedArea]); } if (GUILayout.Button(moveDown, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getBarriersList() .moveElementDown(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getBarriersList().getBarriers()[selectedArea]); } if (GUILayout.Button(clearImg, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getBarriersList() .deleteElement(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getBarriersList().getBarriers()[selectedArea], false); } GUI.skin = defaultSkin; GUILayout.EndArea(); if (backgroundPath != "") { GUILayout.BeginArea(infoPreviewRect); // Show preview dialog if (GUILayout.Button(TC.get("DefaultClickAction.ShowDetails") + "/" + TC.get("GeneralText.Edit"))) { // BarrierEditor window = (BarrierEditor)ScriptableObject.CreateInstance(typeof(BarrierEditor)); window.Init(this, Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex], selectedArea); } GUILayout.EndArea(); GUI.DrawTexture(previewRect, backgroundPreviewTex, ScaleMode.ScaleToFit); } else { GUILayout.BeginArea(infoPreviewRect); GUILayout.Button("No background!"); GUILayout.EndArea(); } }
public void Awake() { resourcesEditor = new ResourcesEditor { ShowResourcesList = true }; conditionsTex = Resources.Load <Texture2D>("EAdventureData/img/icons/conditions-24x24"); noConditionsTex = Resources.Load <Texture2D>("EAdventureData/img/icons/no-conditions-24x24"); actionsList = new DataControlList() { footerHeight = 25, elementHeight = 40, Columns = new System.Collections.Generic.List <ColumnList.Column>() { new ColumnList.Column() { Text = TC.get("ActionsList.ActionName"), SizeOptions = new GUILayoutOption[] { GUILayout.Width(150) } }, new ColumnList.Column() { Text = TC.get("DescriptionList.Description"), SizeOptions = new GUILayoutOption[] { GUILayout.ExpandWidth(true) } }, new ColumnList.Column() { Text = TC.get("ActionsList.NeedsGoTo"), SizeOptions = new GUILayoutOption[] { GUILayout.Width(120) } }, new ColumnList.Column() { Text = TC.get("ActionsList.Conditions"), SizeOptions = new GUILayoutOption[] { GUILayout.Width(70) } }, new ColumnList.Column() { Text = TC.get("Element.Effects"), SizeOptions = new GUILayoutOption[] { GUILayout.Width(70) } } }, drawCell = (rect, index, column, isActive, isFocused) => { var action = actionsList.list[index] as ActionDataControl; switch (column) { case 0: { var name = action.getContent() is CustomAction ? ((CustomAction)action.getContent()).getName() : action.getTypeName(); var leftHalf = new Rect(rect); leftHalf.width /= 2f; var rightHalf = new Rect(leftHalf); rightHalf.x += leftHalf.width; if (action.hasIdTarget()) { rightHalf.height = 25; EditorGUI.LabelField(leftHalf, name); if (!isActive) { EditorGUI.LabelField(rightHalf, !string.IsNullOrEmpty(action.getIdTarget()) ? action.getIdTarget() : "---"); } else { EditorGUI.BeginChangeCheck(); string selected = string.Empty; string[] choices = new string[0]; switch ((action.getContent() as Action).getType()) { case Action.DRAG_TO: case Action.CUSTOM_INTERACT: choices = Controller.Instance.IdentifierSummary.combineIds(new System.Type[] { typeof(Item), typeof(NPC), typeof(ActiveArea) }); break; case Action.GIVE_TO: choices = Controller.Instance.IdentifierSummary.getIds <NPC>(); break; case Action.USE_WITH: choices = Controller.Instance.IdentifierSummary.combineIds(new System.Type[] { typeof(Item), typeof(ActiveArea) }); break; } var selectedIndex = EditorGUI.Popup(rightHalf, System.Array.FindIndex(choices, action.getIdTarget().Equals), choices); if (EditorGUI.EndChangeCheck()) { if (selectedIndex >= 0 && selectedIndex < choices.Length) { selected = choices[selectedIndex]; action.setIdTarget(selected); } } } } else if (action.getType() == Controller.ACTION_TALK_TO) { EditorGUI.LabelField(leftHalf, name); var triggerConversationEffect = action.getEffects().getEffects().Find(e => e is TriggerConversationEffect) as TriggerConversationEffect; if (triggerConversationEffect != null) { var conversationId = triggerConversationEffect.getTargetId(); if (GUI.Button(rightHalf, "Open")) { var conversationsList = Controller.Instance.SelectedChapterDataControl.getConversationsList(); var conversation = conversationsList.getConversations().Find(c => c.getId() == conversationId); Controller.Instance.SelectElement(conversation); } } } else { EditorGUI.LabelField(rect, name); } } break; case 1: EditorGUI.BeginChangeCheck(); var documentation = EditorGUI.TextArea(rect, action.getDocumentation() ?? string.Empty); if (EditorGUI.EndChangeCheck()) { action.setDocumentation(documentation); } break; case 2: if (Controller.Instance.PlayerMode == Controller.FILE_ADVENTURE_1STPERSON_PLAYER) { EditorGUI.LabelField(rect, TC.get("ActionsList.NotRelevant")); } else { var leftHalf = new Rect(rect); leftHalf.width /= 2f; var rightHalf = new Rect(leftHalf); rightHalf.x += leftHalf.width; EditorGUI.BeginChangeCheck(); var needsToGo = EditorGUI.Toggle(leftHalf, action.getNeedsGoTo()); if (EditorGUI.EndChangeCheck()) { action.setNeedsGoTo(needsToGo); } EditorGUI.BeginChangeCheck(); var distance = EditorGUI.IntField(rightHalf, action.getKeepDistance()); if (EditorGUI.EndChangeCheck()) { action.setKeepDistance(distance); } ; } break; case 3: if (GUI.Button(rect, action.getConditions().getBlocksCount() > 0 ? conditionsTex : noConditionsTex)) { ConditionEditorWindow window = ScriptableObject.CreateInstance <ConditionEditorWindow>(); window.Init(action.getConditions()); } break; case 4: if (GUI.Button(rect, "Effects")) { EffectEditorWindow window = ScriptableObject.CreateInstance <EffectEditorWindow>(); window.Init(action.getEffects()); } break; } } }; actionsList.onSelectCallback += (list) => { var i = list.index; var actions = ActionsListDataControl.getActions(); customAction = i != -1 && actions[i] is CustomActionDataControl ? actions[i] as CustomActionDataControl : null; if (customAction != null) { resourcesEditor.Data = customAction; } }; actionsList.onRemoveCallback += (list) => { customAction = null; }; }
public override void Draw(int aID) { GUILayout.BeginArea(globalStatesTableRect); GUILayout.Box(TC.get("GlobalStatesList.ID"), GUILayout.Width(0.85f * windowWidth)); scrollPosition = GUILayout.BeginScrollView(scrollPosition); for (int i = 0; i < Controller.getInstance().getSelectedChapterDataControl().getGlobalStatesListDataControl().getGlobalStates().Count; i++) { if (i != selectedGlobalState) { GUI.skin = noBackgroundSkin; if ( GUILayout.Button( Controller.getInstance().getSelectedChapterDataControl().getGlobalStatesListDataControl().getGlobalStates()[ i].getId(), GUILayout.Width(0.85f * windowWidth))) { OnSelectedGlobalStateChanged(i); } } else { GUI.skin = selectedAreaSkin; globalStateName = GUILayout.TextField(globalStateName, GUILayout.Width(0.85f * windowWidth)); if (!globalStateName.Equals(globalStateNameLast)) { OnGlobalStateNameChanged(globalStateName); } } GUI.skin = defaultSkin; } GUILayout.EndScrollView(); GUILayout.EndArea(); /* * Right panel */ GUILayout.BeginArea(rightPanelRect); GUI.skin = noBackgroundSkin; if (GUILayout.Button(addTex, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getGlobalStatesListDataControl() .addElement(Controller.GLOBAL_STATE, "GlobalState" + Random.Range(0, 10000).ToString()); } if (GUILayout.Button(duplicateTex, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getGlobalStatesListDataControl() .duplicateElement(Controller.getInstance().getSelectedChapterDataControl().getGlobalStatesListDataControl().getGlobalStates()[selectedGlobalState]); } if (GUILayout.Button(clearTex, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getGlobalStatesListDataControl() .deleteElement(Controller.getInstance().getSelectedChapterDataControl().getGlobalStatesListDataControl().getGlobalStates()[selectedGlobalState], false); selectedGlobalState = -1; } GUI.skin = defaultSkin; GUILayout.EndArea(); if (selectedGlobalState != -1) { GUILayout.Space(10); GUILayout.BeginArea(descriptionRect); GUILayout.Label(TC.get("GlobalState.Documentation")); GUILayout.Space(10); globalStateDocumentation = GUILayout.TextArea(globalStateDocumentation, GUILayout.MinHeight(0.15f * windowHeight)); if (!globalStateDocumentation.Equals(globalStateDocumentationLast)) { OnGlobalStateDocumentationChanged(globalStateDocumentation); } GUILayout.EndArea(); GUILayout.BeginArea(conditionsRect); if (GUILayout.Button(TC.get("GlobalState.Conditions"))) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(Controller.getInstance() .getSelectedChapterDataControl() .getGlobalStatesListDataControl().getGlobalStates()[selectedGlobalState].getController()); } GUILayout.EndArea(); } }
protected void OnGUI() { if (conditionStyle == null) { conditionStyle = new GUIStyle(GUI.skin.box); conditionStyle.normal.background = TextureUtil.MakeTex(1, 1, new Color(0.627f, 0.627f, 0.627f)); } if (eitherConditionStyle == null) { eitherConditionStyle = new GUIStyle(GUI.skin.box); eitherConditionStyle.normal.background = TextureUtil.MakeTex(1, 1, new Color(0.568f, 0.568f, 0.568f)); eitherConditionStyle.padding.left = 15; } if (closeStyle == null) { closeStyle = new GUIStyle(GUI.skin.button); closeStyle.padding = new RectOffset(0, 0, 0, 0); closeStyle.margin = new RectOffset(0, 5, 2, 0); closeStyle.normal.textColor = Color.red; closeStyle.focused.textColor = Color.red; closeStyle.active.textColor = Color.red; closeStyle.hover.textColor = Color.red; } if (collapseStyle == null) { collapseStyle = new GUIStyle(GUI.skin.button); collapseStyle.padding = new RectOffset(0, 0, 0, 0); collapseStyle.margin = new RectOffset(0, 5, 2, 0); collapseStyle.normal.textColor = Color.blue; collapseStyle.focused.textColor = Color.blue; collapseStyle.active.textColor = Color.blue; collapseStyle.hover.textColor = Color.blue; } using (new GUILayout.VerticalScope()) { var previous = Milestone.getType(); GUILayout.Label("The milestone will be reached when"); Milestone.setType((Completable.Milestone.MilestoneType)EditorGUILayout.Popup((int)Milestone.getType(), milestonetypes)); if (previous != Milestone.getType()) { Milestone.setId(""); } switch (Milestone.getType()) { case Completable.Milestone.MilestoneType.CHARACTER: SelectElement <NPC>(Milestone, "Character:"); break; case Completable.Milestone.MilestoneType.ITEM: SelectElement <Item>(Milestone, "Item:"); break; case Completable.Milestone.MilestoneType.SCENE: SelectElement <IChapterTarget>(Milestone, "Scene:"); break; case Completable.Milestone.MilestoneType.COMPLETABLE: SelectElement <Completable>(Milestone, "Completable:"); break; case Completable.Milestone.MilestoneType.CONDITION: if (Milestone.getConditions() == null) { Milestone.setConditions(new ConditionsController(new Conditions())); } using (new GUILayout.VerticalScope(conditionStyle)) { GUILayout.Label("CONDITIONS"); if (GUILayout.Button("Add Block")) { Milestone.getConditions().Conditions.Add(new FlagCondition("")); } //################################################################################## //############################### CONDITION HANDLING ############################### //################################################################################## var conditions = Milestone.getConditions().Conditions; ConditionEditorWindow.LayoutConditionEditor(conditions); //################################################################################## } break; } if (GUILayout.Button("Save milestone")) { this.Close(); } } }
public override void Draw(int aID) { if (selectedQR == null) { GUILayout.Label("Please select or create a new QR."); return; } EditorGUILayout.BeginVertical(); { EditorGUI.BeginChangeCheck(); // Delayed in order to use content to render the QR selectedQR.Content = EditorGUILayout.DelayedTextField("Content", selectedQR.Content); if (EditorGUI.EndChangeCheck()) { RegenerateQR(); } EditorGUILayout.LabelField("Documentation"); selectedQR.Documentation = EditorGUILayout.TextArea(selectedQR.Documentation, GUILayout.Height(200)); // Conditions and Effects EditorGUILayout.BeginHorizontal(); { if (GUILayout.Button("Conditions")) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(selectedQR.Conditions); } if (GUILayout.Button("Effects")) { EffectEditorWindow window = (EffectEditorWindow)ScriptableObject.CreateInstance(typeof(EffectEditorWindow)); window.Init(selectedQR.Effects); } } EditorGUILayout.EndHorizontal(); // QRCODE and buttons EditorGUILayout.BeginHorizontal(); { var rect = EditorGUILayout.BeginVertical("preBackground", GUILayout.Width(Rect.width * .75f), GUILayout.ExpandHeight(true)); { GUILayout.BeginHorizontal(); { var hw = Mathf.Min(rect.height * .9f, rect.width * .7f); GUI.DrawTexture(new Rect(rect.x + rect.width / 2f - hw / 2f, rect.y + rect.height / 2f - hw / 2f, hw, hw), qrCodeImage); } GUILayout.EndHorizontal(); } EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(); { if (GUILayout.Button("Save")) { var fileName = EditorUtility.SaveFilePanel("Save the QR code", "", "qrcode", "png"); if (fileName != null) { File.WriteAllBytes(fileName, qrCodeImage.EncodeToPNG()); } } if (GUILayout.Button("Print")) { var printDialog = new PrintDialog(); var printDocument = new PrintDocument(); printDialog.Document = printDocument; printDocument.PrintPage += new PrintPageEventHandler((object sender, PrintPageEventArgs ev) => { float leftMargin = ev.PageBounds.Left; float topMargin = ev.PageBounds.Top; // Calculate the number of lines per page. var center = new Vector2(ev.PageBounds.Width, ev.PageBounds.Height) / 2; var qrwh = Mathf.Min(ev.PageBounds.Width, ev.PageBounds.Height) * (3f / 4f); // Only 3/4 of the space var rectangleF = new System.Drawing.RectangleF(center.x - (qrwh / 2f), center.y - (qrwh / 2f), qrwh, qrwh); var qrBitmap = new System.Drawing.Bitmap(qrCodeImage.width, qrCodeImage.height); Color pixelColor; for (int i = 0; i < qrCodeImage.width; i++) { for (int j = qrCodeImage.height - 1; j >= 0; j--) { pixelColor = qrCodeImage.GetPixel(i, qrCodeImage.height - 1 - j); qrBitmap.SetPixel(i, j, System.Drawing.Color.FromArgb( Mathf.RoundToInt(255 * pixelColor.a), Mathf.RoundToInt(255 * pixelColor.r), Mathf.RoundToInt(255 * pixelColor.g), Mathf.RoundToInt(255 * pixelColor.b))); } } ev.Graphics.DrawImage(qrBitmap, rectangleF); ev.HasMorePages = false; }); var result = printDialog.ShowDialog(); // If the result is OK then print the document. if (result == DialogResult.OK) { printDocument.Print(); } } } EditorGUILayout.EndVertical(); } EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndVertical(); }
public void draw() { if (closeStyle == null) { closeStyle = new GUIStyle(GUI.skin.button); closeStyle.padding = new RectOffset(0, 0, 0, 0); closeStyle.margin = new RectOffset(0, 5, 2, 0); closeStyle.normal.textColor = Color.red; closeStyle.focused.textColor = Color.red; closeStyle.active.textColor = Color.red; closeStyle.hover.textColor = Color.red; } if (buttonstyle == null) { buttonstyle = new GUIStyle(); buttonstyle.padding = new RectOffset(5, 5, 5, 5); } GUIStyle style = new GUIStyle(); style.padding = new RectOffset(5, 5, 5, 5); EditorGUILayout.BeginVertical(); EditorGUILayout.HelpBox(TC.get("ConversationEditor.AtLeastOne"), MessageType.None); bool infoShown = false; if (myNode.getLineCount() > 0) { bool isScrolling = false; if (myNode.getLineCount() > 10) { scroll = EditorGUILayout.BeginScrollView(scroll, GUILayout.MinWidth(360), GUILayout.Height(190)); isScrolling = true; } for (int i = 0; i < myNode.getLineCount(); i++) { EditorGUILayout.BeginHorizontal(); //myNode.getLine(i).IsEntityFragment = EditorGUILayout.Toggle("Is entity: ", frg.IsEntityFragment); bool showInfo = false; EditorGUIUtility.labelWidth = GUI.skin.label.CalcSize(new GUIContent(TC.get("ConversationEditor.Speaker"))).x; myNode.getLine(i).setName(npc[EditorGUILayout.Popup(TC.get("ConversationEditor.Speaker"), npc.IndexOf(myNode.getLine(i).getName()), npc.ToArray())]); EditorGUIUtility.labelWidth = GUI.skin.label.CalcSize(new GUIContent(TC.get("ConversationEditor.Line"))).x; myNode.getLine(i).setText(EditorGUILayout.TextField(TC.get("ConversationEditor.Line"), myNode.getLine(i).getText(), GUILayout.Width(200))); tmpTex = (myNode.getLine(i).getConditions().getConditionsList().Count > 0 ? conditionsTex : noConditionsTex); if (GUILayout.Button(tmpTex, noBackgroundSkin.button, GUILayout.Width(15), GUILayout.Height(15))) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(myNode.getLine(i).getConditions()); } if (GUILayout.Button("X", closeStyle, GUILayout.Width(15), GUILayout.Height(15))) { myNode.removeLine(i); } ; EditorGUILayout.EndHorizontal(); } if (isScrolling) { EditorGUILayout.EndScrollView(); } } GUIContent bttext = new GUIContent(TC.get("ConversationLine.DefaultText")); Rect btrect = GUILayoutUtility.GetRect(bttext, style); if (GUI.Button(btrect, bttext)) { myNode.addLine(new ConversationLine(TC.get("ConversationLine.PlayerName"), "")); } ; EditorGUILayout.HelpBox(TC.get("ConversationEditor.NodeOption"), MessageType.None); EditorGUILayout.BeginHorizontal(); GUI.enabled = (myNode.getChildCount() == 0) || myNode.getType() == ConversationNodeViewEnum.OPTION; bttext = new GUIContent(TC.get("ConversationEditor.CreateChild")); btrect = GUILayoutUtility.GetRect(bttext, buttonstyle); if (GUI.Button(btrect, bttext)) { parent.addChild(myNode, new DialogueConversationNode()); } GUI.enabled = true; bttext = new GUIContent(TC.get("ConversationEditor.SetChild")); btrect = GUILayoutUtility.GetRect(bttext, buttonstyle); if (GUI.Button(btrect, bttext)) { parent.startSetChild(this.myNode, 0); } tmpTex = (myNode.getEffects().getEffects().Count > 0 ? effectTex : noEffectTex); if (GUILayout.Button(tmpTex, noBackgroundSkin.button, GUILayout.Width(24), GUILayout.Height(24))) { EffectEditorWindow window = (EffectEditorWindow)ScriptableObject.CreateInstance(typeof(EffectEditorWindow)); window.Init(myNode.getEffects()); } GUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); }
protected void Awake() { conditionsTex = (Texture2D)Resources.Load("EAdventureData/img/icons/conditions-24x24", typeof(Texture2D)); noConditionsTex = (Texture2D)Resources.Load("EAdventureData/img/icons/no-conditions-24x24", typeof(Texture2D)); appearanceList = new DataControlList() { RequestRepaint = Repaint, headerHeight = 20, footerHeight = 20, Columns = new List <ColumnList.Column>() { new ColumnList.Column() { Text = TC.get("Item.LookPanelTitle"), SizeOptions = new GUILayoutOption[] { GUILayout.ExpandWidth(true) } }, new ColumnList.Column() { Text = TC.get("Conditions.Title"), SizeOptions = new GUILayoutOption[] { GUILayout.ExpandWidth(true) } } }, drawCell = (rect, index, col, isActive, isFocused) => { var resources = dataControl.getResources()[index]; switch (col) { case 0: if (index == appearanceList.index) { EditorGUI.BeginChangeCheck(); var newname = EditorGUI.TextField(rect, "Resources " + (index + 1), resources.getName()); if (EditorGUI.EndChangeCheck()) { resources.renameElement(newname); } } else { EditorGUI.LabelField(rect, "Resources " + (index + 1) + ": " + resources.getName()); } break; case 1: if (GUI.Button(rect, resources.getConditions().getBlocksCount() > 0 ? conditionsTex : noConditionsTex)) { appearanceList.index = index; ConditionEditorWindow window = CreateInstance <ConditionEditorWindow>(); window.Init(resources.getConditions()); } break; } }, onSelectCallback = (list) => { if (list.index == -1) { list.index = 0; } dataControl.setSelectedResources(list.index); if (onAppearanceSelected != null) { onAppearanceSelected(dataControl); } } }; }
private void Awake() { conditionsTex = Resources.Load <Texture2D>("EAdventureData/img/icons/conditions-24x24"); noConditionsTex = Resources.Load <Texture2D>("EAdventureData/img/icons/no-conditions-24x24"); descriptionsList = new DataControlList() { RequestRepaint = Repaint, elementHeight = 20, Columns = new List <ColumnList.Column>() { new ColumnList.Column() { Text = TC.get("Item.Name") }, new ColumnList.Column() { Text = TC.get("Conditions.Title") } }, drawCell = (rect, index, column, isActive, isFocused) => { var description = descriptions.getDescriptionController(index); switch (column) { case 0: if (index == descriptionsList.index) { description.renameElement(EditorGUI.TextField(rect, description.getName())); } else { EditorGUI.LabelField(rect, description.getName()); } break; case 1: if (GUI.Button(rect, description.getConditionsController().getBlocksCount() > 0 ? conditionsTex : noConditionsTex)) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(description.getConditionsController()); } break; } }, onSelectCallback = (list) => { descriptions.setSelectedDescription(list.index); description = descriptions.getSelectedDescriptionController(); } }; descriptionsList.index = 0; nameField = new TextWithSoundField() { Label = TC.get("Item.Name"), FileType = FileType.ITEM_DESCRIPTION_NAME_SOUND }; briefField = new TextWithSoundField() { Label = TC.get("Item.Description"), FileType = FileType.ITEM_DESCRIPTION_BRIEF_SOUND }; fullField = new TextWithSoundField() { Label = TC.get("Item.DetailedDescription"), FileType = FileType.ITEM_DESCRIPTION_DETAILED_SOUND }; }
public override void Draw(int aID) { GUILayout.BeginArea(actionTableRect); GUILayout.BeginHorizontal(); GUILayout.Box(TC.get("Element.Action"), GUILayout.Width(windowWidth * 0.39f)); GUILayout.Box(TC.get("ActionsList.NeedsGoTo"), GUILayout.Width(windowWidth * 0.39f)); GUILayout.Box(TC.get("Conditions.Title"), GUILayout.Width(windowWidth * 0.1f)); GUILayout.EndHorizontal(); scrollPosition = GUILayout.BeginScrollView(scrollPosition, GUILayout.ExpandWidth(false)); // Action table for (int i = 0; i < Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ GameRources.GetInstance().selectedCharacterIndex].getActionsList().getActions().Count; i++) { if (i == selectedAction) { GUI.skin = selectedAreaSkin; } else { GUI.skin = noBackgroundSkin; } tmpTex = (Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ GameRources.GetInstance().selectedCharacterIndex].getActionsList().getActions()[i].getConditions() .getBlocksCount() > 0 ? conditionsTex : noConditionsTex); GUILayout.BeginHorizontal(); if (i == selectedAction) { int t = Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ GameRources.GetInstance().selectedCharacterIndex].getActionsList().getActions()[i].getType(); if (t == Controller.ACTION_USE_WITH || t == Controller.ACTION_GIVE_TO || t == Controller.ACTION_DRAG_TO) { selectedTarget = EditorGUILayout.Popup( Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ GameRources.GetInstance().selectedCharacterIndex].getActionsList().getActions()[i] .getTypeName(), selectedTarget, joinedNamesList, GUILayout.Width(windowWidth * 0.39f)); if (selectedTarget != selectedTargetLast) { ChangeActionTarget(selectedTarget); } } else { GUILayout.Label( Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ GameRources.GetInstance().selectedCharacterIndex].getActionsList().getActions()[i] .getTypeName(), GUILayout.Width(windowWidth * 0.39f)); } if (Controller.getInstance().playerMode() == Controller.FILE_ADVENTURE_1STPERSON_PLAYER) { if (GUILayout.Button(TC.get("ActionsList.NotRelevant"), GUILayout.Width(windowWidth * 0.39f))) { OnActionSelectionChange(i); } } else { GUILayout.BeginHorizontal(GUILayout.Width(windowWidth * 0.39f)); Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ GameRources.GetInstance().selectedCharacterIndex].getActionsList().getActions()[i].setNeedsGoTo( GUILayout.Toggle( Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ GameRources.GetInstance().selectedCharacterIndex].getActionsList().getActions()[i] .getNeedsGoTo(), "")); Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ GameRources.GetInstance().selectedCharacterIndex].getActionsList().getActions()[i] .setKeepDistance( EditorGUILayout.IntField( Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ GameRources.GetInstance().selectedCharacterIndex].getActionsList().getActions()[i] .getKeepDistance())); GUILayout.EndHorizontal(); } if (GUILayout.Button(tmpTex, GUILayout.Width(windowWidth * 0.1f))) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ GameRources.GetInstance().selectedCharacterIndex].getActionsList().getActions()[i].getConditions ()); } } else { if (GUILayout.Button(Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ GameRources.GetInstance().selectedCharacterIndex].getActionsList().getActions()[i].getTypeName(), GUILayout.Width(windowWidth * 0.39f))) { OnActionSelectionChange(i); } if (Controller.getInstance().playerMode() == Controller.FILE_ADVENTURE_1STPERSON_PLAYER) { if (GUILayout.Button(TC.get("ActionsList.NotRelevant"), GUILayout.Width(windowWidth * 0.39f))) { OnActionSelectionChange(i); } } else { if ( GUILayout.Button( Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ GameRources.GetInstance().selectedCharacterIndex].getActionsList().getActions()[i].getNeedsGoTo().ToString(), GUILayout.Width(windowWidth * 0.39f))) { OnActionSelectionChange(i); } } if (GUILayout.Button(tmpTex, GUILayout.Width(windowWidth * 0.1f))) { OnActionSelectionChange(i); } } GUILayout.EndHorizontal(); GUI.skin = defaultSkin; } GUILayout.EndScrollView(); GUILayout.EndArea(); /* * Right panel */ GUILayout.BeginArea(rightPanelRect); GUI.skin = noBackgroundSkin; if (GUILayout.Button(addTex, GUILayout.MaxWidth(0.08f * windowWidth))) { addMenu.menu.ShowAsContext(); } if (GUILayout.Button(duplicateTex, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ GameRources.GetInstance().selectedCharacterIndex].getActionsList() .duplicateElement(Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ GameRources.GetInstance().selectedCharacterIndex].getActionsList().getActions()[selectedAction]); } //if (GUILayout.Button(moveUp, GUILayout.MaxWidth(0.08f * windowWidth))) //{ // Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ // GameRources.GetInstance().selectedCharacterIndex].getActionsList().moveElementUp(Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ // GameRources.GetInstance().selectedCharacterIndex].getActionsList().getActions()[selectedAction]); //} //if (GUILayout.Button(moveDown, GUILayout.MaxWidth(0.08f * windowWidth))) //{ // Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ // GameRources.GetInstance().selectedCharacterIndex].getActionsList().moveElementDown(Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ // GameRources.GetInstance().selectedCharacterIndex].getActionsList().getActions()[selectedAction]); //} if (GUILayout.Button(clearTex, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ GameRources.GetInstance().selectedCharacterIndex].getActionsList() .deleteElement(Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ GameRources.GetInstance().selectedCharacterIndex].getActionsList().getActions()[selectedAction], false); if (selectedAction >= 0) { selectedAction--; } } GUI.skin = defaultSkin; GUILayout.EndArea(); GUILayout.BeginArea(descriptionRect); GUILayout.Label(TC.get("Action.Documentation")); GUILayout.Space(20); documentation = GUILayout.TextArea(documentation); if (!documentation.Equals(documentationLast)) { OnDocumentationChanged(documentation); } GUILayout.EndArea(); GUILayout.BeginArea(effectsRect); if (selectedAction < 0) { GUI.enabled = false; } if (GUILayout.Button(TC.get("Element.Effects"))) { EffectEditorWindow window = (EffectEditorWindow)ScriptableObject.CreateInstance(typeof(EffectEditorWindow)); window.Init(Controller.getInstance().getSelectedChapterDataControl().getNPCsList().getNPCs()[ GameRources.GetInstance().selectedCharacterIndex].getActionsList().getActions()[selectedAction] .getEffects()); } GUI.enabled = true; GUILayout.EndArea(); }
public override void Draw(int aID) { GUILayout.BeginArea(tableRect); GUILayout.BeginHorizontal(); GUILayout.Box(TC.get("ExitsList.NextScene"), GUILayout.Width(windowWidth * 0.24f)); GUILayout.Box(TC.get("ExitsList.Transition"), GUILayout.Width(windowWidth * 0.14f)); GUILayout.Box(TC.get("ExitsList.Appearance"), GUILayout.Width(windowWidth * 0.34f)); GUILayout.Box(TC.get("ExitsList.ConditionsAndEffects"), GUILayout.Width(windowWidth * 0.14f)); GUILayout.EndHorizontal(); scrollPosition = GUILayout.BeginScrollView(scrollPosition); for (int i = 0; i < Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getExitsList().getExitsList().Count; i++) { if (i == selectedExit) { GUI.skin = selectedAreaSkin; } else { GUI.skin = noBackgroundSkin; } GUILayout.BeginHorizontal(); if (GUILayout.Button(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getExitsList().getExitsList()[i].getNextSceneId(), GUILayout.Width(windowWidth * 0.24f))) { ChangeExitSelection(i); } // When is selected - show transition menu if (selectedExit == i) { GUILayout.BeginVertical(); selectedTransitionType = EditorGUILayout.Popup(selectedTransitionType, transitionTypes, GUILayout.Width(windowWidth * 0.12f), GUILayout.MaxWidth(windowWidth * 0.12f)); if (selectedTransitionType != selectedTransitionTypeLast) { ChangeSelectedTransitionType(selectedTransitionType); } transitionTimeString = GUILayout.TextField(transitionTimeString, 3, GUILayout.Width(windowWidth * 0.12f), GUILayout.MaxWidth(windowWidth * 0.12f)); transitionTimeString = Regex.Replace(transitionTimeString, @"[^0-9 ]", ""); if (!transitionTimeString.Equals(transitionTimeStringLast)) { ChangeSelectedTransitionTime(transitionTimeString); } GUILayout.EndVertical(); } // When is not selected - show normal text else { if (GUILayout.Button(TC.get("GeneralText.Edit"), GUILayout.Width(windowWidth * 0.14f))) { ChangeExitSelection(i); } } if (GUILayout.Button(TC.get("GeneralText.Edit"), GUILayout.Width(windowWidth * 0.34f))) { ChangeExitSelection(i); ExitsAppearance window = (ExitsAppearance)ScriptableObject.CreateInstance(typeof(ExitsAppearance)); window.Init(this, "", selectedExit); } if (selectedExit == i) { GUILayout.BeginVertical(); if (GUILayout.Button(TC.get("Exit.EditConditions"), GUILayout.Width(windowWidth * 0.14f))) { ConditionEditorWindow window = (ConditionEditorWindow)ScriptableObject.CreateInstance(typeof(ConditionEditorWindow)); window.Init(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getExitsList().getExitsList()[i].getConditions()); } if (GUILayout.Button(TC.get("GeneralText.EditEffects"), GUILayout.Width(windowWidth * 0.14f))) { EffectEditorWindow window = (EffectEditorWindow)ScriptableObject.CreateInstance(typeof(EffectEditorWindow)); window.Init(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getExitsList().getExitsList()[i].getEffects()); } if (GUILayout.Button(TC.get("Exit.EditPostEffects"), GUILayout.Width(windowWidth * 0.14f))) { EffectEditorWindow window = (EffectEditorWindow)ScriptableObject.CreateInstance(typeof(EffectEditorWindow)); window.Init(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getExitsList().getExitsList()[i].getPostEffects()); } if (GUILayout.Button(TC.get("Exit.EditNotEffects"), GUILayout.Width(windowWidth * 0.14f))) { EffectEditorWindow window = (EffectEditorWindow)ScriptableObject.CreateInstance(typeof(EffectEditorWindow)); window.Init(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getExitsList().getExitsList()[i].getNotEffects()); } GUILayout.EndVertical(); } else { if (GUILayout.Button(TC.get("GeneralText.Edit"), GUILayout.Width(windowWidth * 0.14f))) { ChangeExitSelection(i); } } GUILayout.EndHorizontal(); GUI.skin = defaultSkin; } GUILayout.EndScrollView(); GUILayout.EndArea(); /* * Right panel */ GUILayout.BeginArea(rightPanelRect); GUI.skin = noBackgroundSkin; if (GUILayout.Button(addTexture, GUILayout.MaxWidth(0.08f * windowWidth))) { ExitNewLinkTo window = (ExitNewLinkTo)ScriptableObject.CreateInstance(typeof(ExitNewLinkTo)); window.Init(this); } if (GUILayout.Button(duplicateImg, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getExitsList() .duplicateElement(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getExitsList().getExits()[selectedExit]); } if (GUILayout.Button(moveUp, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getExitsList() .moveElementUp(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getExitsList().getExits()[selectedExit]); } if (GUILayout.Button(moveDown, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getExitsList() .moveElementDown(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getExitsList().getExits()[selectedExit]); } if (GUILayout.Button(clearImg, GUILayout.MaxWidth(0.08f * windowWidth))) { Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getExitsList() .deleteElement(Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex].getExitsList().getExits()[selectedExit], false); } GUI.skin = defaultSkin; GUILayout.EndArea(); if (backgroundPath != "") { GUILayout.BeginArea(infoPreviewRect); // Show preview dialog if (GUILayout.Button(TC.get("DefaultClickAction.ShowDetails") + "/" + TC.get("GeneralText.Edit"))) { ExitsEditor window = (ExitsEditor)ScriptableObject.CreateInstance(typeof(ExitsEditor)); window.Init(this, Controller.getInstance().getSelectedChapterDataControl().getScenesList().getScenes()[ GameRources.GetInstance().selectedSceneIndex], selectedExit); } GUILayout.EndArea(); GUI.DrawTexture(previewRect, backgroundPreviewTex, ScaleMode.ScaleToFit); } else { GUILayout.BeginArea(infoPreviewRect); GUILayout.Button("No background!"); GUILayout.EndArea(); } }