// Utility function to spawn a single button and add it to the tool panel. GameObject SpawnButton(GameObject buttonPrefab, int buttonId) { GameObject button = GameObject.Instantiate( buttonPrefab, menuComponent.ToolPanel.transform, false); Menus.GUIEditorButton component = button.GetComponent <Menus.GUIEditorButton>(); if (component != null) { component.buttonId = buttonId; toolButtons[buttonId] = button; } else { Debug.LogError("Button prefab had no LevelSelectButtionGUI component."); } return(button); }
// Update the button highlights and make sure that only the selection has one. void UpdateButtonHighlights() { foreach (KeyValuePair <int, GameObject> pair in toolButtons) { Menus.GUIEditorButton button = pair.Value.GetComponent <Menus.GUIEditorButton>(); // Attach the highlight to the appropriate button: if (button.buttonId == mapToolSelection) { menuComponent.Highlight.gameObject.SetActive(true); menuComponent.Highlight.transform.SetParent(button.transform, false); menuComponent.Highlight.transform.position = button.transform.position - button.transform.TransformVector(new Vector3(0, 0, 1)); return; } } // No highlighted button found. Hide the highlight. menuComponent.Highlight.transform.SetParent(menuComponent.transform, false); menuComponent.Highlight.gameObject.SetActive(false); }
// Handle button clicks etc, and act on them. public override void HandleUIEvent(GameObject source, object eventData) { if (source == menuComponent.MainButton.gameObject) { manager.SwapState(new MainMenu()); } else if (source == menuComponent.ClearButton.gameObject) { CommonData.gameWorld.DisposeWorld(); } else if (source == menuComponent.LoadButton.gameObject) { manager.PushState(new LoadMap()); } else if (source == menuComponent.SaveButton.gameObject) { manager.PushState(new SaveMap()); } else if (source == menuComponent.PlayButton.gameObject) { manager.PushState(new Gameplay(Gameplay.GameplayMode.Editor)); } else if (source == menuComponent.RotateButton.gameObject) { currentOrientation = (currentOrientation + 1) % 4; UpdateOrientationIndicator(); #if UNITY_EDITOR } else if (source == menuComponent.ExportButton.gameObject) { manager.PushState(new ExportMap(CommonData.gameWorld.worldMap)); } else if (source == menuComponent.BonusButton.gameObject) { manager.PushState(new SaveBonusMap()); #endif } else { Menus.GUIEditorButton editorButton = source.GetComponent <Menus.GUIEditorButton>(); if (editorButton != null) { int previousSelection = mapToolSelection; if (editorButton.buttonId == DownArrowId) { SpawnToolButtons(++currentPage); } else if (editorButton.buttonId == UpArrowId) { SpawnToolButtons(--currentPage); } else { mapToolSelection = editorButton.buttonId; UpdateButtonHighlights(); } // If selecting or unselecting Camera, we need to update the controller. if (previousSelection != mapToolSelection && (previousSelection == (int)SpecialTools.Camera || mapToolSelection == (int)SpecialTools.Camera)) { UpdateCameraController(); } } } }