void OnGUI() { if (textField == null) { textField = new GUIStyle(GUI.skin.textField) { alignment = TextAnchor.MiddleLeft, fontSize = 20 }; middledText = new GUIStyle(GUI.skin.label) { alignment = TextAnchor.MiddleLeft }; bigText = new GUIStyle(middledText) { fontSize = 20 }; } if (!useGUILayout) { return; } if (Event.current.type == EventType.Layout) { if (groupToRemove != -1) { var g = module.groups[groupToRemove]; foreach (var w in g.weapons) { if (w.hammer) { ModuleWeaponGroupController.RemoveGroupForHammer(w.hammer, g); } } module.groups.RemoveAt(groupToRemove); groupToRemove = -1; } if (selectedGroup != null) { displayWeapons = new List <ModuleWeaponGroupController.WeaponWrapper>(selectedGroup.weapons); } } Win = GUI.Window(ID, Win, DoWindow, "Weapon Group Controller"); }
private void DoWindow(int id) { if (selectedGroup != null && changeKey) { Event current = Event.current; if (current.isKey) { selectedGroup.keyCode = current.keyCode; changeKey = false; } /*else if (current.isMouse) { * Console.WriteLine(current.button + " " + current.keyCode); * }*/ } GUILayout.BeginVertical(); scroll = GUILayout.BeginScrollView(scroll); { //Groups for (int i = 0; i < module.groups.Count; i++) { var group = module.groups[i]; var tempgroup = selectedGroup; var tempExpanded = expanded; GUILayout.BeginHorizontal(GUI.skin.button, GUILayout.Height(25)); { GUILayout.BeginVertical(); { GUILayout.FlexibleSpace(); GUILayout.BeginHorizontal(); { //Renaming if (renaming && group == selectedGroup) { group.name = GUILayout.TextField(group.name, textField, GUILayout.Width(250), GUILayout.Height(icon_size)); } else { GUILayout.Label(group.name, bigText, GUILayout.Width(250)); } GUILayout.FlexibleSpace(); //Rename button if (GUILayout.Button(renaming && group == selectedGroup ? icon_cancel : icon_rename, GUILayout.Width(icon_size), GUILayout.Height(icon_size))) { renaming = !renaming; changeKey = false; } //Key button if (GUILayout.Button(changeKey && group == selectedGroup ? "Press a key" : group.keyCode.ToString(), GUILayout.MinWidth(icon_size))) { changeKey = true; } //Remove button if (GUILayout.Button(icon_remove, GUILayout.Width(icon_size), GUILayout.Height(icon_size))) { groupToRemove = i; if (selectedGroup == group) { CleanGroup(); } } //Expand button if (GUILayout.Button(selectedGroup == group && expanded ? "V" : ">", GUILayout.Width(icon_size), GUILayout.Height(icon_size))) { if (group != selectedGroup) { CleanGroup(); expanded = true; selectedGroup = group; foreach (var w in selectedGroup.weapons) { w.block.visible.EnableOutlineGlow(true, cakeslice.Outline.OutlineEnableReason.ScriptHighlight); } } else { expanded = !expanded; } } } GUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); } GUILayout.EndVertical(); } GUILayout.EndHorizontal(); if (Event.current.type == EventType.Repaint) { //Scroll to added group var lastrect = GUILayoutUtility.GetLastRect(); if (groupAdded && i == module.groups.Count - 1) { groupAdded = false; scroll.y = lastrect.y + lastrect.height / 2; } } if (tempgroup != null && selectedGroup == tempgroup) { if (group == selectedGroup && tempExpanded) { GUILayout.BeginHorizontal(); GUILayout.Space(25f); { GUILayout.BeginVertical(); //Group weapons for (int j = 0; j < displayWeapons.Count; j++) { var weapon = displayWeapons[j]; GUILayout.BeginHorizontal(GUI.skin.button); { GUILayout.Label(StringLookup.GetItemName(ObjectTypes.Block, (int)weapon.block.BlockType), middledText, GUILayout.Width(250)); GUILayout.FlexibleSpace(); if (GUILayout.Button(icon_remove, GUILayout.Width(icon_size), GUILayout.Height(icon_size))) { weapon.block.visible.EnableOutlineGlow(false, cakeslice.Outline.OutlineEnableReason.ScriptHighlight); group.weapons.RemoveAt(j); if (weapon.hammer) { ModuleWeaponGroupController.RemoveGroupForHammer(weapon.hammer, group); } } } GUILayout.EndHorizontal(); if (Event.current.type == EventType.Repaint && weaponSelected && j == displayWeapons.Count - 1) { weaponSelected = false; var rect = GUILayoutUtility.GetLastRect(); scroll.y = rect.y + rect.height / 2; } } if (GUILayout.Button(selectingWeapon ? "Selecting weapon..." : "Add weapon to group")) { selectingWeapon = true; } GUILayout.EndVertical(); } GUILayout.EndHorizontal(); } } } } GUILayout.EndScrollView(); //Add group button if (GUILayout.Button("Add group")) { CleanGroup(); selectedGroup = new ModuleWeaponGroupController.WeaponGroup(); module.groups.Add(selectedGroup); groupAdded = true; } GUILayout.EndVertical(); GUI.DragWindow(); }