'The menu class handles all created menu's in the game
Type TMenu
''''''''''''''''''''''''''''''''''''''''''''''''''
'List Globals
''''''''''''''''''''''''''''''''''''''''''''''''''
Global MenuCollection:TList = New TList
''''''''''''''''''''''''''''''''''''''''''''''''''
'Basic Fields
''''''''''''''''''''''''''''''''''''''''''''''''''
Field X:Int
Field Y:Int
Field Name:String
Field Index:Byte
''''''''''''''''''''''''''''''''''''''''''''''''''
'Status Fields
''''''''''''''''''''''''''''''''''''''''''''''''''
Field Active:Byte
Field DoDraw:Byte
Field DoAlpha:Byte
Field DoColor:Byte
Field MouseOver:Byte
Field MouseClicked:Byte
''''''''''''''''''''''''''''''''''''''''''''''''''
'GFX Fields
''''''''''''''''''''''''''''''''''''''''''''''''''
Field DrawAlpha:Byte
Field DrawRed:Byte
Field DrawGreen:Byte
Field DrawBlue:Byte
''''''''''''''''''''''''''''''''''''''''''''''''''
'List Fields
''''''''''''''''''''''''''''''''''''''''''''''''''
Field EntityCollection:TList = New TList
Field ImageList:TList = New TList
Field ButtonList:TList = New TList
Field AudioList:TList = New TList
''''''''''''''''''''''''''''''''''''''''''''''''''
'Basic Static Functions
''''''''''''''''''''''''''''''''''''''''''''''''''
'Creates a menu and returns the handle to the provided variable
Function Create:TMenu(MenuName:String, MenuX:Int = 0, MenuY:Int = 0, MenuIndex:Int = -1, MenuActive:Byte = 1)
Local TempMenuHandle:TMenu = New TMenu
TempMenuHandle.Name = MenuName
TempMenuHandle.X = MenuX
TempMenuHandle.Y = MenuY
If MenuIndex <= -1
TempMenuHandle.Index = 0
Else
TempMenuHandle.Index = MenuIndex
EndIf
If MenuActive <> 1
TempMenuHandle.Active = 0
Else
TempMenuHandle.Active = 1
End If
TMenu.MenuCollection.AddLast(TempMenuHandle)
Return TempMenuHandle
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''
'List Static Functions
''''''''''''''''''''''''''''''''''''''''''''''''''
'Clears the list of menus. Set delete data to true if you want to kill all current menu objects.
Function ClearMenuList(DelData:Byte = 0)
If DelData = 1
For Local TempMenuHandle:TMenu = EachIn TMenu.MenuCollection
TMenu.MenuCollection.Remove(TempMenuHandle)
TempMenuHandle = Null
Next
Return
Else
TMenu.MenuCollection.Clear()
Return
End If
End Function
End Type
I need help developing the "ClearMenuList()" function i made. Looking at the other data in the type, would i have to go through and delete each list inside TMenu or will making the TMenu variable null also kill those lists completely? I want to make sure all data involving menu entities and audio objects are removed from memory. And I am not sure if I even wrote the MenuCollection list deletion code right...
Edit: Now that I think about it... this wouldnt work would it? I mean am I right to think that im just killing TempMenuHandle and not the object itself? I mean the object will stay in memory if any other variable anywhere in the program is "looking" at it right?
|