public void Init(ActionBarRow row) { if (mesh == null) { this.row = row; gameObject.layer = row.Layer; BoxCollider collider = gameObject.AddComponent <BoxCollider>(); collider.center = new Vector3(0.5f, -0.5f, 0f); collider.size = new Vector3(1f, 1f, 0.1f); renderer.castShadows = false; renderer.receiveShadows = false; renderer.useLightProbes = false; renderer.sharedMaterial = ActionBarSettings.Instance.GetAtlasMaterial(0); mesh = GetComponent <MeshFilter>().mesh; mesh.Clear(); mesh.vertices = row.Quad.vertices; mesh.triangles = row.Quad.triangles; mesh.uv = row.Quad.uv; mesh.uv1 = uv1; mesh.colors = colors; mesh.normals = normals; } }
protected override void HandleEvent(ActionBarButtonStateChangedEventArgs args) { //TODO: Check actionbar index and handle multiple rows. if (ActionBarRow.ContainsKey(args.Index)) { IUIActionBarButton barButton = ActionBarRow[args.Index]; if (args.ActionType == ActionBarIndexType.Empty) { barButton.SetElementActive(false); } else { barButton.SetElementActive(true); //TODO: Refactor for spell/item if (args.ActionType == ActionBarIndexType.Spell) { //TODO: Abstract the icon content loading //TODO: Don't assume we have the content icon. Throw/log better exception SpellDefinitionDataModel definition = SpellDataCollection.GetSpellDefinition(args.ActionId); ContentIconInstanceModel icon = ContentIconCollection[definition.SpellIconId]; ProjectVersionStage.AssertAlpha(); //TODO: Load async Texture2D iconTexture = Resources.Load <Texture2D>(Path.Combine("Icon", Path.GetFileNameWithoutExtension(icon.IconPathName))); barButton.ActionBarImageIcon.SetSpriteTexture(iconTexture); } else { throw new InvalidOperationException($"TODO: Implement empty/item action bar support"); } } } }
void InitPotion(ActionBarRow row, int b, int n) { row.SetButton(b, new ActionBarDescriptor { Atlas = 3, Icon = n, ItemGroup = 1, ItemType = n, Stackable = true, Stack = 1, Callback = PotionClick }); }
public override void OnInspectorGUI() { BarRow = target as ActionBarRow; BarRow.ActionBarButtonPrefab = (GameObject)EditorGUILayout.ObjectField("ActionBar Button", BarRow.ActionBarButtonPrefab, typeof(GameObject), false); BarRow.ButtonSize = EditorGUILayout.Vector2Field("Button Size", BarRow.ButtonSize); BarRow.Columns = EditorGUILayout.IntField("Columns", BarRow.Columns); BarRow.ColumnPadding = EditorGUILayout.IntField("Column Padding", BarRow.ColumnPadding); BarRow.Rows = EditorGUILayout.IntField("Rows", BarRow.Rows); BarRow.RowPadding = EditorGUILayout.IntField("Row Padding", BarRow.RowPadding); BarRow.Arrangement = (ActionBarRow.RowArrangement)EditorGUILayout.EnumPopup("Arrangement", BarRow.Arrangement); BarRow.MultipleInstances = EditorGUILayout.Toggle(new GUIContent("Multiple Instances", "If Multiple Instances of the same object is allowed per Row"), BarRow.MultipleInstances); BarRow.numGroups = EditorGUILayout.IntField("Number of Groups", BarRow.numGroups); if (BarRow.numGroups > BarRow.GroupID.Length) { BarRow.GroupID = new int[BarRow.numGroups]; } else if (BarRow.numGroups < BarRow.GroupID.Length) { BarRow.GroupID = new int[BarRow.numGroups]; } for (int i = 0; i < BarRow.GroupID.Length; i++) { BarRow.GroupID[i] = EditorGUILayout.IntField("ID", BarRow.GroupID[i]); } if (BarRow.Editor_ButtonInformation != null) { System.Array.Resize(ref ButtonFolds, BarRow.Editor_ButtonInformation.Count); } if (BarRow.Editor_ButtonInformation.Count > (BarRow.Columns * BarRow.Rows)) { for (int i = 0; i < BarRow.Editor_ButtonInformation.Count; i++) { if (i < (BarRow.Columns * BarRow.Rows)) { if (BarRow.Editor_ButtonInformation[i] == null) { BarRow.Editor_ButtonInformation[i] = new ActionBarInitialization(); } } else { BarRow.Editor_ButtonInformation.RemoveAt(i); } } ButtonFolds = new bool[BarRow.Editor_ButtonInformation.Count]; } else if (BarRow.Editor_ButtonInformation.Count < (BarRow.Columns * BarRow.Rows)) { for (int i = 0; i < BarRow.Columns * BarRow.Rows; i++) { if (i < BarRow.Editor_ButtonInformation.Count) { if (BarRow.Editor_ButtonInformation[i] == null) { BarRow.Editor_ButtonInformation[i] = new ActionBarInitialization(); } } else { BarRow.Editor_ButtonInformation.Add(new ActionBarInitialization()); } } ButtonFolds = new bool[BarRow.Editor_ButtonInformation.Count]; } EditorGUILayout.LabelField("Assign ButtonInformation", EditorStyles.boldLabel); //Error Checking****************** for (int i = 0; i < BarRow.Editor_ButtonInformation.Count; i++) { if (BarRow.Editor_ButtonInformation[i].InfoNumber > ActionBarItem.Instance.ItemList.Count) { Debug.LogWarning(BarRow.name + " Button: " + (i + 1) + " Attempting to Access Item/Spell that no longer exists!"); } } if (ActionBarItem.Instance.ItemList.Count == 0) { Debug.LogWarning("No Item(s) have been created. Assign items in the ActionBar Controller"); } //Error Checking ****************** for (int i = 0; i < BarRow.Editor_ButtonInformation.Count; i++) { ButtonFolds[i] = EditorGUILayout.Foldout(ButtonFolds[i], "Button: " + (i + 1).ToString()); if (ButtonFolds[i] == true) { BarRow.Editor_ButtonInformation[i].HotKey = (KeyCode)EditorGUILayout.EnumPopup(new GUIContent("Hotkey", "Hotkey for this Button"), BarRow.Editor_ButtonInformation[i].HotKey); BarRow.Editor_ButtonInformation[i].isLocked = EditorGUILayout.Toggle(new GUIContent("Locked", "If you can pickup Items placed inside this button"), BarRow.Editor_ButtonInformation[i].isLocked); if (BarRow.Editor_ButtonInformation[i].isLocked == true) { BarRow.Editor_ButtonInformation[i].isCloneOnPickup = EditorGUILayout.Toggle(new GUIContent("Clone on Pickup", "Creates a new object on Pickup instead of replacing it"), BarRow.Editor_ButtonInformation[i].isCloneOnPickup); } else { BarRow.Editor_ButtonInformation[i].isCloneOnPickup = false; } BarRow.Editor_ButtonInformation[i].isEmpty = EditorGUILayout.Toggle(new GUIContent("Empty Button", "If Button should start empty"), BarRow.Editor_ButtonInformation[i].isEmpty); if (BarRow.Editor_ButtonInformation[i].isEmpty == false) { EditorGUILayout.LabelField("Button Content", EditorStyles.boldLabel); BarRow.Editor_ButtonInformation[i].InfoNumber = EditorGUILayout.Popup(BarRow.Editor_ButtonInformation[i].InfoNumber, ActionBarItem.Instance.ItemNames, EditorStyles.popup); if (ActionBarItem.Instance.ItemList.Count != 0) { if (BarRow.Editor_ButtonInformation[i].InfoNumber < ActionBarItem.Instance.ItemList.Count) { if (ActionBarItem.Instance.ItemList[BarRow.Editor_ButtonInformation[i].InfoNumber].Stackable == true) { BarRow.Editor_ButtonInformation[i].Info.SeperateInstance = EditorGUILayout.Toggle(new GUIContent("Seperate Instance", "Is this item it's own instance of stacks?"), BarRow.Editor_ButtonInformation[i].Info.SeperateInstance); if (BarRow.Editor_ButtonInformation[i].Info.SeperateInstance == true) { BarRow.Editor_ButtonInformation[i].Stacks = EditorGUILayout.IntField(new GUIContent("Stacks", "Starting Stacks on Spell/Item. Set to Zero for Infinite"), BarRow.Editor_ButtonInformation[i].Stacks); } else { BarRow.Editor_ButtonInformation[i].Stacks = ActionBarItem.Instance.ItemList[BarRow.Editor_ButtonInformation[i].InfoNumber].Stack; } } } } } else //is empty { BarRow.Editor_ButtonInformation[i].InfoNumber = 0; BarRow.Editor_ButtonInformation[i].Info.SeperateInstance = false; BarRow.Editor_ButtonInformation[i].Stacks = 0; } } } if (GUI.changed) { EditorUtility.SetDirty(BarRow); } }
public override void OnInspectorGUI() { ActionBarRow row = target as ActionBarRow; if (row == null) { return; } var buttonSize = ActionBarUtils.GetField<int>(row, "buttonSize"); var buttonRows = ActionBarUtils.GetField<int>(row, "buttonRows"); var buttonColumns = ActionBarUtils.GetField<int>(row, "buttonColumns"); var buttonRowSpacing = ActionBarUtils.GetField<int>(row, "buttonRowSpacing"); var buttonColumnSpacing = ActionBarUtils.GetField<int>(row, "buttonColumnSpacing"); var buttonSettings = ActionBarUtils.GetField<ActionBarButtonSettings[]>(row, "buttonSettings"); var isLocked = ActionBarUtils.GetField<bool>(row, "isLocked"); var cloneOnPickup = ActionBarUtils.GetField<bool>(row, "cloneOnPickup"); var removeCloneWithinGroup = ActionBarUtils.GetField<bool>(row, "removeCloneWithinGroup"); var itemGroup = ActionBarUtils.GetField<int>(row, "itemGroup"); var excludeGroups = ActionBarUtils.GetField<int[]>(row, "excludeGroups"); var labelOverrideFont = ActionBarUtils.GetField<bool>(row, "labelOverrideFont"); var labelFontSize = ActionBarUtils.GetField<float>(row, "labelFontSize"); var labelFontPosition = ActionBarUtils.GetField<Vector2>(row, "labelFontPosition"); var stackOverrideFont = ActionBarUtils.GetField<bool>(row, "stackOverrideFont"); var stackFontSize = ActionBarUtils.GetField<float>(row, "stackFontSize"); var stackFontPosition = ActionBarUtils.GetField<Vector2>(row, "stackFontPosition"); var anchor = ActionBarUtils.GetField<bool>(row, "anchor"); var anchorPoint = ActionBarUtils.GetField<ActionBarRowAnchorPoint>(row, "anchorPoint"); var anchorOffset = ActionBarUtils.GetField<Vector2>(row, "anchorOffset"); /* EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Buttons"); int buttonSettingsLength = EditorGUILayout.IntField(buttonSettings.Value.Length); EditorGUILayout.EndHorizontal(); */ buttonRows.Value = Mathf.Clamp(EditorGUILayout.IntField("Rows", buttonRows.Value), 0, 64); buttonColumns.Value = Mathf.Clamp(EditorGUILayout.IntField("Columns", buttonColumns.Value), 0, 64); int buttonSettingsLength = buttonRows.Value * buttonColumns.Value; // If we're playing, don't allow editing button settings length if (Application.isPlaying) { if (buttonSettingsLength != buttonSettings.Value.Length) { Debug.LogWarning("Can't edit button count while playing"); } buttonSettingsLength = buttonSettings.Value.Length; } isLocked.Value = EditorGUILayout.Toggle("Locked", isLocked.Value); cloneOnPickup.Value = EditorGUILayout.Toggle("Clone on pickup", cloneOnPickup.Value); if (cloneOnPickup.Value) { removeCloneWithinGroup.Value = EditorGUILayout.Toggle("De-Clone Within Group", removeCloneWithinGroup.Value); } itemGroup.Value = EditorGUILayout.IntField("Item Group", itemGroup.Value); buttonSize.Value = EditorGUILayout.IntField("Size", buttonSize.Value); buttonRowSpacing.Value = EditorGUILayout.IntField("Row Spacing", buttonRowSpacing.Value); buttonColumnSpacing.Value = EditorGUILayout.IntField("Column Spacing", buttonColumnSpacing.Value); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Exclude Groups"); int excludeGroupsLength = EditorGUILayout.IntField(excludeGroups.Value.Length); EditorGUILayout.EndHorizontal(); if (excludeGroups.Value.Length != excludeGroupsLength) { int[] excludeArray = new int[excludeGroupsLength]; System.Array.Copy(excludeGroups.Value, excludeArray, Mathf.Min(excludeGroups.Value.Length, excludeArray.Length)); if (excludeArray.Length > excludeGroups.Value.Length) { for (int i = excludeGroups.Value.Length; i < excludeArray.Length; ++i) { excludeArray[i] = -1; } } excludeGroups.Value = excludeArray; } for (int i = 0; i < excludeGroups.Value.Length; ++i) { excludeGroups.Value[i] = EditorGUILayout.IntField(excludeGroups.Value[i]); } // Button settings if (buttonSettingsLength != buttonSettings.Value.Length) { var settingsArray = buttonSettings.Value; // Resize array System.Array.Resize(ref settingsArray, buttonSettingsLength); // Initialize all values for (int i = 0; i < buttonSettingsLength; ++i) { if (settingsArray[i] == null) { settingsArray[i] = new ActionBarButtonSettings(); } } // Set new array buttonSettings.Value = settingsArray; // Modify toggled array System.Array.Resize(ref keysToggled, buttonSettingsLength); } if (row != previous) { previous = row; keysToggled = new bool[buttonSettingsLength]; } for (int i = 0; i < buttonSettingsLength; ++i) { var keyCombo = buttonSettings.Value[i]; if (keysToggled[i] = EditorGUILayout.Foldout(keysToggled[i], "Button " + i + " key bindings")) { //EditorGUILayout.LabelField("Button #" + i, EditorStyles.boldLabel); EditorGUILayout.LabelField("Primary", EditorStyles.miniBoldLabel); keyCombo.PrimaryKey = (KeyCode)EditorGUILayout.EnumPopup("Key", keyCombo.PrimaryKey); keyCombo.PrimaryModifiers = (ActionBarModifierKeys)EditorGUILayout.EnumMaskField("Modifiers", keyCombo.PrimaryModifiers); EditorGUILayout.LabelField("Secondary", EditorStyles.miniBoldLabel); keyCombo.SecondaryKey = (KeyCode)EditorGUILayout.EnumPopup("Key", keyCombo.SecondaryKey); keyCombo.SecondaryModifiers = (ActionBarModifierKeys)EditorGUILayout.EnumMaskField("Modifiers", keyCombo.SecondaryModifiers); } } // Override label font settings EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Override Label Font"); labelOverrideFont.Value = EditorGUILayout.Toggle(labelOverrideFont.Value); EditorGUILayout.EndHorizontal(); if (labelOverrideFont.Value) { labelFontSize.Value = EditorGUILayout.FloatField("Label Font Size", labelFontSize.Value); labelFontPosition.Value = EditorGUILayout.Vector2Field("Label Font Position", labelFontPosition.Value); } // Override stack font settings EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Override Stack Font"); stackOverrideFont.Value = EditorGUILayout.Toggle(stackOverrideFont.Value); EditorGUILayout.EndHorizontal(); if (stackOverrideFont.Value) { stackFontSize.Value = EditorGUILayout.FloatField("Stack Font Size", stackFontSize.Value); stackFontPosition.Value = EditorGUILayout.Vector2Field("Stack Font Position", stackFontPosition.Value); } // Anchor EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Anchor"); anchor.Value = EditorGUILayout.Toggle(anchor.Value); EditorGUILayout.EndHorizontal(); if (anchor.Value) { anchorPoint.Value = (ActionBarRowAnchorPoint)EditorGUILayout.EnumPopup("Point", anchorPoint.Value); anchorOffset.Value = EditorGUILayout.Vector2Field("Offset", anchorOffset.Value); } if (GUI.changed) { EditorUtility.SetDirty(row); } }
public void Init(ActionBarRow row) { if (mesh == null) { this.row = row; gameObject.layer = row.Layer; BoxCollider collider = gameObject.AddComponent<BoxCollider>(); collider.center = new Vector3(0.5f, -0.5f, 0f); collider.size = new Vector3(1f, 1f, 0.1f); renderer.castShadows = false; renderer.receiveShadows = false; renderer.useLightProbes = false; renderer.sharedMaterial = ActionBarSettings.Instance.GetAtlasMaterial(0); mesh = GetComponent<MeshFilter>().mesh; mesh.Clear(); mesh.vertices = row.Quad.vertices; mesh.triangles = row.Quad.triangles; mesh.uv = row.Quad.uv; mesh.uv1 = uv1; mesh.colors = colors; mesh.normals = normals; } }
public override void OnInspectorGUI() { ActionBarRow row = target as ActionBarRow; if (row == null) { return; } var buttonSize = ActionBarUtils.GetField <int>(row, "buttonSize"); var buttonRows = ActionBarUtils.GetField <int>(row, "buttonRows"); var buttonColumns = ActionBarUtils.GetField <int>(row, "buttonColumns"); var buttonRowSpacing = ActionBarUtils.GetField <int>(row, "buttonRowSpacing"); var buttonColumnSpacing = ActionBarUtils.GetField <int>(row, "buttonColumnSpacing"); var buttonSettings = ActionBarUtils.GetField <ActionBarButtonSettings[]>(row, "buttonSettings"); var isLocked = ActionBarUtils.GetField <bool>(row, "isLocked"); var cloneOnPickup = ActionBarUtils.GetField <bool>(row, "cloneOnPickup"); var removeCloneWithinGroup = ActionBarUtils.GetField <bool>(row, "removeCloneWithinGroup"); var itemGroup = ActionBarUtils.GetField <int>(row, "itemGroup"); var excludeGroups = ActionBarUtils.GetField <int[]>(row, "excludeGroups"); var labelOverrideFont = ActionBarUtils.GetField <bool>(row, "labelOverrideFont"); var labelFontSize = ActionBarUtils.GetField <float>(row, "labelFontSize"); var labelFontPosition = ActionBarUtils.GetField <Vector2>(row, "labelFontPosition"); var stackOverrideFont = ActionBarUtils.GetField <bool>(row, "stackOverrideFont"); var stackFontSize = ActionBarUtils.GetField <float>(row, "stackFontSize"); var stackFontPosition = ActionBarUtils.GetField <Vector2>(row, "stackFontPosition"); var anchor = ActionBarUtils.GetField <bool>(row, "anchor"); var anchorPoint = ActionBarUtils.GetField <ActionBarRowAnchorPoint>(row, "anchorPoint"); var anchorOffset = ActionBarUtils.GetField <Vector2>(row, "anchorOffset"); /* * EditorGUILayout.BeginHorizontal(); * EditorGUILayout.PrefixLabel("Buttons"); * int buttonSettingsLength = EditorGUILayout.IntField(buttonSettings.Value.Length); * EditorGUILayout.EndHorizontal(); */ buttonRows.Value = Mathf.Clamp(EditorGUILayout.IntField("Rows", buttonRows.Value), 0, 64); buttonColumns.Value = Mathf.Clamp(EditorGUILayout.IntField("Columns", buttonColumns.Value), 0, 64); int buttonSettingsLength = buttonRows.Value * buttonColumns.Value; // If we're playing, don't allow editing button settings length if (Application.isPlaying) { if (buttonSettingsLength != buttonSettings.Value.Length) { Debug.LogWarning("Can't edit button count while playing"); } buttonSettingsLength = buttonSettings.Value.Length; } isLocked.Value = EditorGUILayout.Toggle("Locked", isLocked.Value); cloneOnPickup.Value = EditorGUILayout.Toggle("Clone on pickup", cloneOnPickup.Value); if (cloneOnPickup.Value) { removeCloneWithinGroup.Value = EditorGUILayout.Toggle("De-Clone Within Group", removeCloneWithinGroup.Value); } itemGroup.Value = EditorGUILayout.IntField("Item Group", itemGroup.Value); buttonSize.Value = EditorGUILayout.IntField("Size", buttonSize.Value); buttonRowSpacing.Value = EditorGUILayout.IntField("Row Spacing", buttonRowSpacing.Value); buttonColumnSpacing.Value = EditorGUILayout.IntField("Column Spacing", buttonColumnSpacing.Value); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Exclude Groups"); int excludeGroupsLength = EditorGUILayout.IntField(excludeGroups.Value.Length); EditorGUILayout.EndHorizontal(); if (excludeGroups.Value.Length != excludeGroupsLength) { int[] excludeArray = new int[excludeGroupsLength]; System.Array.Copy(excludeGroups.Value, excludeArray, Mathf.Min(excludeGroups.Value.Length, excludeArray.Length)); if (excludeArray.Length > excludeGroups.Value.Length) { for (int i = excludeGroups.Value.Length; i < excludeArray.Length; ++i) { excludeArray[i] = -1; } } excludeGroups.Value = excludeArray; } for (int i = 0; i < excludeGroups.Value.Length; ++i) { excludeGroups.Value[i] = EditorGUILayout.IntField(excludeGroups.Value[i]); } // Button settings if (buttonSettingsLength != buttonSettings.Value.Length) { var settingsArray = buttonSettings.Value; // Resize array System.Array.Resize(ref settingsArray, buttonSettingsLength); // Initialize all values for (int i = 0; i < buttonSettingsLength; ++i) { if (settingsArray[i] == null) { settingsArray[i] = new ActionBarButtonSettings(); } } // Set new array buttonSettings.Value = settingsArray; // Modify toggled array System.Array.Resize(ref keysToggled, buttonSettingsLength); } if (row != previous) { previous = row; keysToggled = new bool[buttonSettingsLength]; } for (int i = 0; i < buttonSettingsLength; ++i) { var keyCombo = buttonSettings.Value[i]; if (keysToggled[i] = EditorGUILayout.Foldout(keysToggled[i], "Button " + i + " key bindings")) { //EditorGUILayout.LabelField("Button #" + i, EditorStyles.boldLabel); EditorGUILayout.LabelField("Primary", EditorStyles.miniBoldLabel); keyCombo.PrimaryKey = (KeyCode)EditorGUILayout.EnumPopup("Key", keyCombo.PrimaryKey); keyCombo.PrimaryModifiers = (ActionBarModifierKeys)EditorGUILayout.EnumMaskField("Modifiers", keyCombo.PrimaryModifiers); EditorGUILayout.LabelField("Secondary", EditorStyles.miniBoldLabel); keyCombo.SecondaryKey = (KeyCode)EditorGUILayout.EnumPopup("Key", keyCombo.SecondaryKey); keyCombo.SecondaryModifiers = (ActionBarModifierKeys)EditorGUILayout.EnumMaskField("Modifiers", keyCombo.SecondaryModifiers); } } // Override label font settings EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Override Label Font"); labelOverrideFont.Value = EditorGUILayout.Toggle(labelOverrideFont.Value); EditorGUILayout.EndHorizontal(); if (labelOverrideFont.Value) { labelFontSize.Value = EditorGUILayout.FloatField("Label Font Size", labelFontSize.Value); labelFontPosition.Value = EditorGUILayout.Vector2Field("Label Font Position", labelFontPosition.Value); } // Override stack font settings EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Override Stack Font"); stackOverrideFont.Value = EditorGUILayout.Toggle(stackOverrideFont.Value); EditorGUILayout.EndHorizontal(); if (stackOverrideFont.Value) { stackFontSize.Value = EditorGUILayout.FloatField("Stack Font Size", stackFontSize.Value); stackFontPosition.Value = EditorGUILayout.Vector2Field("Stack Font Position", stackFontPosition.Value); } // Anchor EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Anchor"); anchor.Value = EditorGUILayout.Toggle(anchor.Value); EditorGUILayout.EndHorizontal(); if (anchor.Value) { anchorPoint.Value = (ActionBarRowAnchorPoint)EditorGUILayout.EnumPopup("Point", anchorPoint.Value); anchorOffset.Value = EditorGUILayout.Vector2Field("Offset", anchorOffset.Value); } if (GUI.changed) { EditorUtility.SetDirty(row); } }