private void SideMenu(ActiveInput activeInput) { GenericMenu menu = new GenericMenu(); sideInput = settingsManager.activeInputs.IndexOf(activeInput); menu.AddItem(new GUIContent("Insert after"), false, Callback, "Insert after"); if (settingsManager.activeInputs.Count > 0) { menu.AddItem(new GUIContent("Delete"), false, Callback, "Delete"); } if (sideInput > 0 || sideInput < settingsManager.activeInputs.Count - 1) { menu.AddSeparator(""); } if (sideInput > 0) { menu.AddItem(new GUIContent("Re-arrange/Move to top"), false, Callback, "Move to top"); menu.AddItem(new GUIContent("Re-arrange/Move up"), false, Callback, "Move up"); } if (sideInput < settingsManager.activeInputs.Count - 1) { menu.AddItem(new GUIContent("Re-arrange/Move down"), false, Callback, "Move down"); menu.AddItem(new GUIContent("Re-arrange/Move to bottom"), false, Callback, "Move to bottom"); } menu.ShowAsContext(); }
/** * <summary>Runs the ActionListAsset defined in SettingsManager's actionListOnStart when the game begins.</summary> * <returns>True if an ActionListAsset was run</returns> */ public bool PlayGlobalOnStart() { if (runAtLeastOnce) { return(false); } runAtLeastOnce = true; ActiveInput.Upgrade(); if (KickStarter.settingsManager.activeInputs != null) { foreach (ActiveInput activeInput in KickStarter.settingsManager.activeInputs) { activeInput.SetDefaultState(); } } if (gameState != GameState.Paused) { // Fix for audio pausing on start AudioListener.pause = false; } if (KickStarter.settingsManager.actionListOnStart) { AdvGame.RunActionListAsset(KickStarter.settingsManager.actionListOnStart); return(true); } return(false); }
private void DeactivateAllInputs() { foreach (ActiveInput activeInput in settingsManager.activeInputs) { activeInput.isEditing = false; } selectedActiveInput = null; }
private void Callback(object obj) { if (sideInput >= 0) { ActiveInput tempInput = settingsManager.activeInputs[sideInput]; switch (obj.ToString()) { case "Insert after": Undo.RecordObject(settingsManager, "Insert Active Input"); settingsManager.activeInputs.Insert(sideInput + 1, new ActiveInput(GetIDList().ToArray())); break; case "Delete": Undo.RecordObject(settingsManager, "Delete Active Input"); if (tempInput == selectedActiveInput) { DeactivateAllInputs(); } settingsManager.activeInputs.RemoveAt(sideInput); break; case "Move up": Undo.RecordObject(settingsManager, "Move Active Input up"); settingsManager.activeInputs.RemoveAt(sideInput); settingsManager.activeInputs.Insert(sideInput - 1, tempInput); break; case "Move down": Undo.RecordObject(settingsManager, "Move Active Input down"); settingsManager.activeInputs.RemoveAt(sideInput); settingsManager.activeInputs.Insert(sideInput + 1, tempInput); break; case "Move to top": Undo.RecordObject(settingsManager, "Move Active Input to top"); settingsManager.activeInputs.RemoveAt(sideInput); settingsManager.activeInputs.Insert(0, tempInput); break; case "Move to bottom": Undo.RecordObject(settingsManager, "Move Active Input to bottom"); settingsManager.activeInputs.Add(tempInput); settingsManager.activeInputs.RemoveAt(sideInput); break; } } EditorUtility.SetDirty(settingsManager); AssetDatabase.SaveAssets(); sideInput = -1; }
private void OnGUI() { if (settingsManager == null) { EditorGUILayout.HelpBox("A Settings Manager must be assigned before this window can display correctly.", MessageType.Warning); return; } ActiveInput.Upgrade(); ShowActiveInputsGUI(); UnityVersionHandler.CustomSetDirty(settingsManager); }
private void GlobalCallback(object obj) { switch (obj.ToString()) { case "Delete all": Undo.RecordObject(settingsManager, "Delete all Active Inputs"); selectedActiveInput = null; settingsManager.activeInputs.Clear(); break; default: break; } EditorUtility.SetDirty(settingsManager); AssetDatabase.SaveAssets(); }
override public void ShowGUI(List <ActionParameter> parameters) { int tempNumber = -1; if (KickStarter.settingsManager != null && KickStarter.settingsManager.activeInputs != null && KickStarter.settingsManager.activeInputs.Count > 0) { ActiveInput.Upgrade(); string[] labelList = new string[KickStarter.settingsManager.activeInputs.Count]; for (int i = 0; i < KickStarter.settingsManager.activeInputs.Count; i++) { labelList[i] = i.ToString() + ": " + KickStarter.settingsManager.activeInputs[i].inputName; if (KickStarter.settingsManager.activeInputs[i].ID == activeInputID) { tempNumber = i; } } if (tempNumber == -1) { // Wasn't found (was deleted?), so revert to zero if (activeInputID != 0) { ACDebug.LogWarning("Previously chosen active input no longer exists!"); } tempNumber = 0; activeInputID = 0; } tempNumber = EditorGUILayout.Popup("Active input:", tempNumber, labelList); activeInputID = KickStarter.settingsManager.activeInputs [tempNumber].ID; newState = EditorGUILayout.Toggle("New state:", newState); } else { EditorGUILayout.HelpBox("No active inputs exist! They can be defined in Adventure Creator -> Editors -> Active Inputs.", MessageType.Info); activeInputID = 0; tempNumber = 0; } AfterRunningOption(); }
private void ShowActiveInputsGUI() { EditorGUILayout.HelpBox("Active Inputs are used to trigger ActionList assets when an input key is pressed under certain gameplay conditions.", MessageType.Info); EditorGUILayout.BeginVertical(CustomStyles.thinBox); showActiveInputsList = CustomGUILayout.ToggleHeader(showActiveInputsList, "Active inputs"); if (showActiveInputsList) { scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.Height(Mathf.Min(settingsManager.activeInputs.Count * 21, 185f) + 5)); foreach (ActiveInput activeInput in settingsManager.activeInputs) { EditorGUILayout.BeginHorizontal(); if (GUILayout.Toggle(selectedActiveInput == activeInput, activeInput.ID + ": " + activeInput.Label, "Button")) { if (selectedActiveInput != activeInput) { DeactivateAllInputs(); ActivateInput(activeInput); } } if (GUILayout.Button("", CustomStyles.IconCog)) { SideMenu(activeInput); } EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndScrollView(); EditorGUILayout.Space(); if (GUILayout.Button("Create new Active Input")) { Undo.RecordObject(this, "Create new Active Input"); if (settingsManager.activeInputs.Count > 0) { List <int> idArray = new List <int>(); foreach (ActiveInput activeInput in settingsManager.activeInputs) { idArray.Add(activeInput.ID); } idArray.Sort(); ActiveInput newActiveInput = new ActiveInput(idArray.ToArray()); settingsManager.activeInputs.Add(newActiveInput); DeactivateAllInputs(); ActivateInput(newActiveInput); } else { ActiveInput newActiveInput = new ActiveInput(1); settingsManager.activeInputs.Add(newActiveInput); } } EditorGUILayout.EndVertical(); } EditorGUILayout.Space(); if (selectedActiveInput != null && settingsManager.activeInputs.Contains(selectedActiveInput)) { EditorGUILayout.BeginVertical(CustomStyles.thinBox); showSelectedActiveInput = CustomGUILayout.ToggleHeader(showSelectedActiveInput, "Input #" + selectedActiveInput.ID + ": " + selectedActiveInput.label); if (showSelectedActiveInput) { selectedActiveInput.ShowGUI(); } EditorGUILayout.EndVertical(); } }
private void ActivateInput(ActiveInput activeInput) { selectedActiveInput = activeInput; EditorGUIUtility.editingTextField = false; }
private void DeactivateAllInputs() { selectedActiveInput = null; }
private void ShowActiveInputsGUI() { EditorGUILayout.HelpBox("Active Inputs are used to trigger ActionList assets when an input key is pressed under certain gameplay conditions.", MessageType.Info); EditorGUILayout.BeginVertical(CustomStyles.thinBox); showActiveInputsList = CustomGUILayout.ToggleHeader(showActiveInputsList, "Active inputs"); if (showActiveInputsList) { scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.Height(Mathf.Min(settingsManager.activeInputs.Count * 21, 185f) + 5)); foreach (ActiveInput activeInput in settingsManager.activeInputs) { EditorGUILayout.BeginHorizontal(); if (GUILayout.Toggle(activeInput.isEditing, activeInput.ID + ": " + activeInput.Label, "Button")) { if (selectedActiveInput != activeInput) { DeactivateAllInputs(); ActivateInput(activeInput); } } if (GUILayout.Button("", CustomStyles.IconCog)) { SideMenu(activeInput); } EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndScrollView(); EditorGUILayout.Space(); if (GUILayout.Button("Create new Active Input")) { Undo.RecordObject(this, "Create new Active Input"); if (settingsManager.activeInputs.Count > 0) { List <int> idArray = new List <int>(); foreach (ActiveInput activeInput in settingsManager.activeInputs) { idArray.Add(activeInput.ID); } idArray.Sort(); ActiveInput newActiveInput = new ActiveInput(idArray.ToArray()); settingsManager.activeInputs.Add(newActiveInput); DeactivateAllInputs(); ActivateInput(newActiveInput); } else { ActiveInput newActiveInput = new ActiveInput(1); settingsManager.activeInputs.Add(newActiveInput); } } EditorGUILayout.EndVertical(); } EditorGUILayout.Space(); if (selectedActiveInput != null && settingsManager.activeInputs.Contains(selectedActiveInput)) { EditorGUILayout.BeginVertical(CustomStyles.thinBox); showSelectedActiveInput = CustomGUILayout.ToggleHeader(showSelectedActiveInput, "Input #" + selectedActiveInput.ID + ": " + selectedActiveInput.label); if (showSelectedActiveInput) { string defaultName = "ActiveInput_" + selectedActiveInput.Label; selectedActiveInput.label = CustomGUILayout.TextField("Label:", selectedActiveInput.label, "", "An Editor-friendly name"); selectedActiveInput.inputName = CustomGUILayout.TextField("Input button:", selectedActiveInput.inputName, "", "The name of the Input button, as defined in the Input Manager"); selectedActiveInput.inputType = (SimulateInputType)CustomGUILayout.EnumPopup("Input type:", selectedActiveInput.inputType, "", "What type of input is expected"); if (selectedActiveInput.inputType == SimulateInputType.Axis) { selectedActiveInput.axisThreshold = CustomGUILayout.Slider("Axis threshold:", selectedActiveInput.axisThreshold, -1f, 1f, "", "The threshold value for the axis to trigger the ActionListAsset"); } selectedActiveInput.enabledOnStart = CustomGUILayout.Toggle("Enabled by default?", selectedActiveInput.enabledOnStart, "", "If True, the active input is enabled when the game begins"); selectedActiveInput.gameState = (GameState)CustomGUILayout.EnumPopup("Available when game is:", selectedActiveInput.gameState, "", "What state the game must be in for the actionListAsset to run"); selectedActiveInput.actionListAsset = ActionListAssetMenu.AssetGUI("ActionList when triggered:", selectedActiveInput.actionListAsset, defaultName, "", "The ActionListAsset to run when the input button is pressed"); } EditorGUILayout.EndVertical(); } }
private void ActivateInput(ActiveInput activeInput) { activeInput.isEditing = true; selectedActiveInput = activeInput; }
private void ActivateInput(ActiveInput activeInput) { selectedActiveInput = activeInput; }