Class MainMenu
- Namespace
- AshesOfVelsingrad.UI.Menus
- Assembly
- Ashes of Velsingrad.dll
Main menu controller that handles user interactions and navigation. Implements the Manager Pattern from your architecture documentation.
[ScriptPath("res://scripts/ui/menus/MainMenu.cs")]
public class MainMenu : Control, IDisposable
- Inheritance
-
GodotObjectNodeCanvasItemControlMainMenu
- Implements
- Inherited Members
-
Control.NotificationResizedControl.NotificationMouseEnterControl.NotificationMouseExitControl.NotificationMouseEnterSelfControl.NotificationMouseExitSelfControl.NotificationFocusEnterControl.NotificationFocusExitControl.NotificationThemeChangedControl.NotificationScrollBeginControl.NotificationScrollEndControl.NotificationLayoutDirectionChangedControl._AccessibilityGetContextualInfo()Control._CanDropData(Vector2, Variant)Control._DropData(Vector2, Variant)Control._GetAccessibilityContainerName(Node)Control._GetDragData(Vector2)Control._GetMinimumSize()Control._GetTooltip(Vector2)Control._GuiInput(InputEvent)Control._HasPoint(Vector2)Control.AcceptEvent()Control.GetMinimumSize()Control.GetCombinedMinimumSize()Control.SetBegin(Vector2)Control.SetEnd(Vector2)Control.ResetSize()Control.GetBegin()Control.GetEnd()Control.GetParentAreaSize()Control.GetScreenPosition()Control.GetRect()Control.GetGlobalRect()Control.GetFocusModeWithOverride()Control.HasFocus()Control.GrabFocus()Control.ReleaseFocus()Control.FindPrevValidFocus()Control.FindNextValidFocus()Control.FindValidFocusNeighbor(Side)Control.BeginBulkThemeOverride()Control.EndBulkThemeOverride()Control.AddThemeIconOverride(StringName, Texture2D)Control.AddThemeStyleboxOverride(StringName, StyleBox)Control.AddThemeFontOverride(StringName, Font)Control.AddThemeColorOverride(StringName, Color)Control.RemoveThemeIconOverride(StringName)Control.RemoveThemeStyleboxOverride(StringName)Control.RemoveThemeFontOverride(StringName)Control.RemoveThemeFontSizeOverride(StringName)Control.RemoveThemeColorOverride(StringName)Control.RemoveThemeConstantOverride(StringName)Control.GetThemeIcon(StringName, StringName)Control.GetThemeStylebox(StringName, StringName)Control.GetThemeFont(StringName, StringName)Control.GetThemeFontSize(StringName, StringName)Control.GetThemeColor(StringName, StringName)Control.GetThemeConstant(StringName, StringName)Control.HasThemeIconOverride(StringName)Control.HasThemeStyleboxOverride(StringName)Control.HasThemeFontOverride(StringName)Control.HasThemeFontSizeOverride(StringName)Control.HasThemeColorOverride(StringName)Control.HasThemeConstantOverride(StringName)Control.HasThemeIcon(StringName, StringName)Control.HasThemeStylebox(StringName, StringName)Control.HasThemeFont(StringName, StringName)Control.HasThemeFontSize(StringName, StringName)Control.HasThemeColor(StringName, StringName)Control.HasThemeConstant(StringName, StringName)Control.GetThemeDefaultBaseScale()Control.GetThemeDefaultFont()Control.GetThemeDefaultFontSize()Control.GetParentControl()Control.GetTooltip(Vector2?)Control.GetCursorShape(Vector2?)Control.ForceDrag(Variant, Control)Control.AccessibilityDrag()Control.AccessibilityDrop()Control.GetMouseFilterWithOverride()Control.GrabClickFocus()Control.SetDragForwarding(Callable, Callable, Callable)Control.SetDragPreview(Control)Control.IsDragSuccessful()Control.WarpMouse(Vector2)Control.UpdateMinimumSize()Control.IsLayoutRtl()Control.EmitSignalResized()Control.EmitSignalGuiInput(InputEvent)Control.EmitSignalMouseEntered()Control.EmitSignalMouseExited()Control.EmitSignalFocusEntered()Control.EmitSignalFocusExited()Control.EmitSignalSizeFlagsChanged()Control.EmitSignalMinimumSizeChanged()Control.EmitSignalThemeChanged()Control.InvokeGodotClassMethod(in godot_string_name, NativeVariantPtrArgs, out godot_variant)Control.HasGodotClassMethod(in godot_string_name)Control.HasGodotClassSignal(in godot_string_name)Control.ClipContentsControl.CustomMinimumSizeControl.LayoutDirectionControl.AnchorLeftControl.AnchorTopControl.AnchorRightControl.AnchorBottomControl.OffsetLeftControl.OffsetTopControl.OffsetRightControl.OffsetBottomControl.GrowHorizontalControl.GrowVerticalControl.SizeControl.PositionControl.GlobalPositionControl.RotationControl.RotationDegreesControl.ScaleControl.PivotOffsetControl.SizeFlagsHorizontalControl.SizeFlagsVerticalControl.SizeFlagsStretchRatioControl.LocalizeNumeralSystemControl.AutoTranslateControl.TooltipTextControl.TooltipAutoTranslateModeControl.FocusNeighborLeftControl.FocusNeighborTopControl.FocusNeighborRightControl.FocusNeighborBottomControl.FocusNextControl.FocusPreviousControl.FocusModeControl.FocusBehaviorRecursiveControl.MouseFilterControl.MouseBehaviorRecursiveControl.MouseForcePassScrollEventsControl.MouseDefaultCursorShapeControl.ShortcutContextControl.AccessibilityNameControl.AccessibilityDescriptionControl.AccessibilityLiveControl.AccessibilityControlsNodesControl.AccessibilityDescribedByNodesControl.AccessibilityLabeledByNodesControl.AccessibilityFlowToNodesControl.ThemeControl.ThemeTypeVariationControl.ResizedControl.GuiInputControl.MouseEnteredControl.MouseExitedControl.FocusEnteredControl.FocusExitedControl.SizeFlagsChangedControl.MinimumSizeChangedControl.ThemeChangedCanvasItem.NotificationTransformChangedCanvasItem.NotificationLocalTransformChangedCanvasItem.NotificationDrawCanvasItem.NotificationVisibilityChangedCanvasItem.NotificationEnterCanvasCanvasItem.NotificationExitCanvasCanvasItem.NotificationWorld2DChangedCanvasItem._Draw()CanvasItem.GetCanvasItem()CanvasItem.IsVisibleInTree()CanvasItem.Show()CanvasItem.Hide()CanvasItem.QueueRedraw()CanvasItem.MoveToFront()CanvasItem.DrawTexture(Texture2D, Vector2, Color?)CanvasItem.DrawLcdTextureRectRegion(Texture2D, Rect2, Rect2, Color?)CanvasItem.DrawStyleBox(StyleBox, Rect2)CanvasItem.DrawPrimitive(Vector2[], Color[], Vector2[], Texture2D)CanvasItem.DrawPolygon(Vector2[], Color[], Vector2[], Texture2D)CanvasItem.DrawPolygon(ReadOnlySpan<Vector2>, ReadOnlySpan<Color>, ReadOnlySpan<Vector2>, Texture2D)CanvasItem.DrawColoredPolygon(Vector2[], Color, Vector2[], Texture2D)CanvasItem.DrawMesh(Mesh, Texture2D, Transform2D?, Color?)CanvasItem.DrawMultimesh(MultiMesh, Texture2D)CanvasItem.DrawSetTransformMatrix(Transform2D)CanvasItem.DrawEndAnimation()CanvasItem.GetTransform()CanvasItem.GetGlobalTransform()CanvasItem.GetGlobalTransformWithCanvas()CanvasItem.GetViewportTransform()CanvasItem.GetViewportRect()CanvasItem.GetCanvasTransform()CanvasItem.GetScreenTransform()CanvasItem.GetLocalMousePosition()CanvasItem.GetGlobalMousePosition()CanvasItem.GetCanvas()CanvasItem.GetCanvasLayerNode()CanvasItem.GetWorld2D()CanvasItem.SetInstanceShaderParameter(StringName, Variant)CanvasItem.GetInstanceShaderParameter(StringName)CanvasItem.IsLocalTransformNotificationEnabled()CanvasItem.IsTransformNotificationEnabled()CanvasItem.ForceUpdateTransform()CanvasItem.MakeCanvasPositionLocal(Vector2)CanvasItem.MakeInputLocal(InputEvent)CanvasItem.EmitSignalDraw()CanvasItem.EmitSignalVisibilityChanged()CanvasItem.EmitSignalHidden()CanvasItem.EmitSignalItemRectChanged()CanvasItem.VisibleCanvasItem.ModulateCanvasItem.SelfModulateCanvasItem.ShowBehindParentCanvasItem.TopLevelCanvasItem.ClipChildrenCanvasItem.LightMaskCanvasItem.VisibilityLayerCanvasItem.ZIndexCanvasItem.ZAsRelativeCanvasItem.YSortEnabledCanvasItem.TextureFilterCanvasItem.TextureRepeatCanvasItem.MaterialCanvasItem.UseParentMaterialCanvasItem.DrawCanvasItem.VisibilityChangedCanvasItem.HiddenCanvasItem.ItemRectChangedNode.NotificationEnterTreeNode.NotificationExitTreeNode.NotificationMovedInParentNode.NotificationReadyNode.NotificationPausedNode.NotificationUnpausedNode.NotificationPhysicsProcessNode.NotificationProcessNode.NotificationParentedNode.NotificationUnparentedNode.NotificationSceneInstantiatedNode.NotificationDragBeginNode.NotificationDragEndNode.NotificationPathRenamedNode.NotificationChildOrderChangedNode.NotificationInternalProcessNode.NotificationInternalPhysicsProcessNode.NotificationPostEnterTreeNode.NotificationDisabledNode.NotificationEnabledNode.NotificationResetPhysicsInterpolationNode.NotificationEditorPreSaveNode.NotificationEditorPostSaveNode.NotificationWMMouseEnterNode.NotificationWMMouseExitNode.NotificationWMWindowFocusInNode.NotificationWMWindowFocusOutNode.NotificationWMCloseRequestNode.NotificationWMGoBackRequestNode.NotificationWMSizeChangedNode.NotificationWMDpiChangeNode.NotificationVpMouseEnterNode.NotificationVpMouseExitNode.NotificationWMPositionChangedNode.NotificationOsMemoryWarningNode.NotificationTranslationChangedNode.NotificationWMAboutNode.NotificationCrashNode.NotificationOsImeUpdateNode.NotificationApplicationResumedNode.NotificationApplicationPausedNode.NotificationApplicationFocusInNode.NotificationApplicationFocusOutNode.NotificationTextServerChangedNode.NotificationAccessibilityUpdateNode.NotificationAccessibilityInvalidateNode.GetNode<T>(NodePath)Node.GetNodeOrNull<T>(NodePath)Node.GetOwner<T>()Node.GetOwnerOrNull<T>()Node.GetParent<T>()Node.GetParentOrNull<T>()Node._EnterTree()Node._ExitTree()Node._GetAccessibilityConfigurationWarnings()Node._GetConfigurationWarnings()Node._GetFocusedAccessibilityElement()Node._Input(InputEvent)Node._ShortcutInput(InputEvent)Node._UnhandledInput(InputEvent)Node._UnhandledKeyInput(InputEvent)Node.PrintOrphanNodes()Node.GetOrphanNodeIds()Node.RemoveChild(Node)Node.HasNode(NodePath)Node.GetNode(NodePath)Node.GetNodeOrNull(NodePath)Node.GetParent()Node.HasNodeAndResource(NodePath)Node.GetNodeAndResource(NodePath)Node.IsInsideTree()Node.IsPartOfEditedScene()Node.IsAncestorOf(Node)Node.IsGreaterThan(Node)Node.GetPath()Node.RemoveFromGroup(StringName)Node.IsInGroup(StringName)Node.GetGroups()Node.PrintTree()Node.PrintTreePretty()Node.GetTreeString()Node.GetTreeStringPretty()Node.GetPhysicsProcessDeltaTime()Node.IsPhysicsProcessing()Node.GetProcessDeltaTime()Node.IsProcessing()Node.IsProcessingInput()Node.IsProcessingShortcutInput()Node.IsProcessingUnhandledInput()Node.IsProcessingUnhandledKeyInput()Node.CanProcess()Node.QueueAccessibilityUpdate()Node.GetAccessibilityElement()Node.IsDisplayedFolded()Node.IsProcessingInternal()Node.IsPhysicsProcessingInternal()Node.IsPhysicsInterpolated()Node.IsPhysicsInterpolatedAndEnabled()Node.ResetPhysicsInterpolation()Node.CanAutoTranslate()Node.SetTranslationDomainInherited()Node.GetWindow()Node.GetLastExclusiveWindow()Node.GetTree()Node.CreateTween()Node.GetSceneInstanceLoadPlaceholder()Node.IsEditableInstance(Node)Node.GetViewport()Node.QueueFree()Node.RequestReady()Node.IsNodeReady()Node.GetMultiplayerAuthority()Node.IsMultiplayerAuthority()Node.RpcConfig(StringName, Variant)Node.GetNodeRpcConfig()Node.Rpc(StringName, params Variant[])Node.UpdateConfigurationWarnings()Node.CallDeferredThreadGroup(StringName, params Variant[])Node.SetDeferredThreadGroup(StringName, Variant)Node.CallThreadSafe(StringName, params Variant[])Node.SetThreadSafe(StringName, Variant)Node.EmitSignalReady()Node.EmitSignalRenamed()Node.EmitSignalTreeEntered()Node.EmitSignalTreeExiting()Node.EmitSignalTreeExited()Node.EmitSignalChildEnteredTree(Node)Node.EmitSignalChildExitingTree(Node)Node.EmitSignalChildOrderChanged()Node.EmitSignalReplacingBy(Node)Node.EmitSignalEditorDescriptionChanged(Node)Node.EmitSignalEditorStateChanged()Node.NameNode.UniqueNameInOwnerNode.SceneFilePathNode.OwnerNode.MultiplayerNode.ProcessModeNode.ProcessPriorityNode.ProcessPhysicsPriorityNode.ProcessThreadGroupNode.ProcessThreadGroupOrderNode.ProcessThreadMessagesNode.PhysicsInterpolationModeNode.AutoTranslateModeNode.EditorDescriptionNode.ReadyNode.RenamedNode.TreeEnteredNode.TreeExitingNode.TreeExitedNode.ChildEnteredTreeNode.ChildExitingTreeNode.ChildOrderChangedNode.ReplacingByNode.EditorDescriptionChangedNode.EditorStateChangedGodotObject.NotificationPostinitializeGodotObject.NotificationPredeleteGodotObject.NotificationExtensionReloadedGodotObject.IsInstanceValid(GodotObject)GodotObject.WeakRef(GodotObject)GodotObject.Dispose()GodotObject.ToString()GodotObject.ToSignal(GodotObject, StringName)GodotObject._Get(StringName)GodotObject._GetPropertyList()GodotObject._IterGet(Variant)GodotObject._IterInit(Array)GodotObject._IterNext(Array)GodotObject._PropertyCanRevert(StringName)GodotObject._PropertyGetRevert(StringName)GodotObject._Set(StringName, Variant)GodotObject._ValidateProperty(Dictionary)GodotObject.Free()GodotObject.GetClass()GodotObject.Set(StringName, Variant)GodotObject.Get(StringName)GodotObject.SetIndexed(NodePath, Variant)GodotObject.GetIndexed(NodePath)GodotObject.GetPropertyList()GodotObject.GetMethodList()GodotObject.PropertyCanRevert(StringName)GodotObject.PropertyGetRevert(StringName)GodotObject.GetInstanceId()GodotObject.SetScript(Variant)GodotObject.GetScript()GodotObject.SetMeta(StringName, Variant)GodotObject.RemoveMeta(StringName)GodotObject.GetMeta(StringName, Variant)GodotObject.HasMeta(StringName)GodotObject.GetMetaList()GodotObject.HasUserSignal(StringName)GodotObject.RemoveUserSignal(StringName)GodotObject.EmitSignal(StringName, params Variant[])GodotObject.Call(StringName, params Variant[])GodotObject.CallDeferred(StringName, params Variant[])GodotObject.SetDeferred(StringName, Variant)GodotObject.Callv(StringName, Array)GodotObject.HasMethod(StringName)GodotObject.GetMethodArgumentCount(StringName)GodotObject.HasSignal(StringName)GodotObject.GetSignalList()GodotObject.GetSignalConnectionList(StringName)GodotObject.GetIncomingConnections()GodotObject.Disconnect(StringName, Callable)GodotObject.IsConnected(StringName, Callable)GodotObject.HasConnections(StringName)GodotObject.IsBlockingSignals()GodotObject.NotifyPropertyListChanged()GodotObject.CanTranslateMessages()GodotObject.Tr(StringName, StringName)GodotObject.GetTranslationDomain()GodotObject.SetTranslationDomain(StringName)GodotObject.IsQueuedForDeletion()GodotObject.CancelFree()GodotObject.EmitSignalScriptChanged()GodotObject.EmitSignalPropertyListChanged()GodotObject.NativeInstanceGodotObject.ScriptChangedGodotObject.PropertyListChanged
Remarks
This class is responsible for displaying the main menu and handling user input. It interacts with the MenuManager to show or hide menus as needed.
Methods
SetMenuManagerForTesting(MenuManager)
FOR TESTING ONLY: Sets a custom MenuManager instance. This allows tests to inject a test double without relying on the singleton.
public void SetMenuManagerForTesting(MenuManager menuManager)
Parameters
menuManagerMenuManagerThe MenuManager instance to use.
_Ready()
Called when the node is added to the scene tree. Initializes the menu and connects signals for button interactions.
public override void _Ready()
Remarks
This method is called automatically by Godot when the node is ready. It sets up the initial state of the menu and connects button signals to their handlers.