Table of Contents

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
GodotObject
Node
CanvasItem
Control
MainMenu
Implements
Inherited Members
Control.NotificationResized
Control.NotificationMouseEnter
Control.NotificationMouseExit
Control.NotificationMouseEnterSelf
Control.NotificationMouseExitSelf
Control.NotificationFocusEnter
Control.NotificationFocusExit
Control.NotificationThemeChanged
Control.NotificationScrollBegin
Control.NotificationScrollEnd
Control.NotificationLayoutDirectionChanged
Control._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.ClipContents
Control.CustomMinimumSize
Control.LayoutDirection
Control.AnchorLeft
Control.AnchorTop
Control.AnchorRight
Control.AnchorBottom
Control.OffsetLeft
Control.OffsetTop
Control.OffsetRight
Control.OffsetBottom
Control.GrowHorizontal
Control.GrowVertical
Control.Size
Control.Position
Control.GlobalPosition
Control.Rotation
Control.RotationDegrees
Control.Scale
Control.PivotOffset
Control.SizeFlagsHorizontal
Control.SizeFlagsVertical
Control.SizeFlagsStretchRatio
Control.LocalizeNumeralSystem
Control.AutoTranslate
Control.TooltipText
Control.TooltipAutoTranslateMode
Control.FocusNeighborLeft
Control.FocusNeighborTop
Control.FocusNeighborRight
Control.FocusNeighborBottom
Control.FocusNext
Control.FocusPrevious
Control.FocusMode
Control.FocusBehaviorRecursive
Control.MouseFilter
Control.MouseBehaviorRecursive
Control.MouseForcePassScrollEvents
Control.MouseDefaultCursorShape
Control.ShortcutContext
Control.AccessibilityName
Control.AccessibilityDescription
Control.AccessibilityLive
Control.AccessibilityControlsNodes
Control.AccessibilityDescribedByNodes
Control.AccessibilityLabeledByNodes
Control.AccessibilityFlowToNodes
Control.Theme
Control.ThemeTypeVariation
Control.Resized
Control.GuiInput
Control.MouseEntered
Control.MouseExited
Control.FocusEntered
Control.FocusExited
Control.SizeFlagsChanged
Control.MinimumSizeChanged
Control.ThemeChanged
CanvasItem.NotificationTransformChanged
CanvasItem.NotificationLocalTransformChanged
CanvasItem.NotificationDraw
CanvasItem.NotificationVisibilityChanged
CanvasItem.NotificationEnterCanvas
CanvasItem.NotificationExitCanvas
CanvasItem.NotificationWorld2DChanged
CanvasItem._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.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.Visible
CanvasItem.Modulate
CanvasItem.SelfModulate
CanvasItem.ShowBehindParent
CanvasItem.TopLevel
CanvasItem.ClipChildren
CanvasItem.LightMask
CanvasItem.VisibilityLayer
CanvasItem.ZIndex
CanvasItem.ZAsRelative
CanvasItem.YSortEnabled
CanvasItem.TextureFilter
CanvasItem.TextureRepeat
CanvasItem.Material
CanvasItem.UseParentMaterial
CanvasItem.Draw
CanvasItem.VisibilityChanged
CanvasItem.Hidden
CanvasItem.ItemRectChanged
Node.NotificationEnterTree
Node.NotificationExitTree
Node.NotificationMovedInParent
Node.NotificationReady
Node.NotificationPaused
Node.NotificationUnpaused
Node.NotificationPhysicsProcess
Node.NotificationProcess
Node.NotificationParented
Node.NotificationUnparented
Node.NotificationSceneInstantiated
Node.NotificationDragBegin
Node.NotificationDragEnd
Node.NotificationPathRenamed
Node.NotificationChildOrderChanged
Node.NotificationInternalProcess
Node.NotificationInternalPhysicsProcess
Node.NotificationPostEnterTree
Node.NotificationDisabled
Node.NotificationEnabled
Node.NotificationResetPhysicsInterpolation
Node.NotificationEditorPreSave
Node.NotificationEditorPostSave
Node.NotificationWMMouseEnter
Node.NotificationWMMouseExit
Node.NotificationWMWindowFocusIn
Node.NotificationWMWindowFocusOut
Node.NotificationWMCloseRequest
Node.NotificationWMGoBackRequest
Node.NotificationWMSizeChanged
Node.NotificationWMDpiChange
Node.NotificationVpMouseEnter
Node.NotificationVpMouseExit
Node.NotificationWMPositionChanged
Node.NotificationOsMemoryWarning
Node.NotificationTranslationChanged
Node.NotificationWMAbout
Node.NotificationCrash
Node.NotificationOsImeUpdate
Node.NotificationApplicationResumed
Node.NotificationApplicationPaused
Node.NotificationApplicationFocusIn
Node.NotificationApplicationFocusOut
Node.NotificationTextServerChanged
Node.NotificationAccessibilityUpdate
Node.NotificationAccessibilityInvalidate
Node.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.Name
Node.UniqueNameInOwner
Node.SceneFilePath
Node.Owner
Node.Multiplayer
Node.ProcessMode
Node.ProcessPriority
Node.ProcessPhysicsPriority
Node.ProcessThreadGroup
Node.ProcessThreadGroupOrder
Node.ProcessThreadMessages
Node.PhysicsInterpolationMode
Node.AutoTranslateMode
Node.EditorDescription
Node.Ready
Node.Renamed
Node.TreeEntered
Node.TreeExiting
Node.TreeExited
Node.ChildEnteredTree
Node.ChildExitingTree
Node.ChildOrderChanged
Node.ReplacingBy
Node.EditorDescriptionChanged
Node.EditorStateChanged
GodotObject.NotificationPostinitialize
GodotObject.NotificationPredelete
GodotObject.NotificationExtensionReloaded
GodotObject.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.NativeInstance
GodotObject.ScriptChanged
GodotObject.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

menuManager MenuManager

The 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.