4 void() Menu_InitGarbageStats =
6 Menu_GarbageFrameCount = 0;
7 Menu_GarbageToggleCount = 0;
10 void() Menu_ResetGarbageStats =
12 if( Menu_GarbageFrameCount )
13 print( "Menu: GC: ", ftos( Menu_GarbageFrameCount ), " items marked for frame deletion but couldnt be reached!\n" );
14 if( Menu_GarbageToggleCount )
15 print( "Menu: GC: ", ftos( Menu_GarbageToggleCount ), " items marked for toggle delition but couldnt be reached!\n" );
17 Menu_GarbageFrameCount = 0;
18 Menu_GarbageToggleCount = 0;
21 bool( entity pItem ) Menu_CheckForGarbage =
23 if( Menu_HasRunFlag( pItem, RUNFLAG_DELETEFRAME ) ) {
24 Menu_RemoveItem( pItem );
25 --Menu_GarbageFrameCount;
31 void( bool pToggle ) Menu_CollectGarbage =
37 while( (Menu_GarbageFrameCount || Menu_GarbageToggleCount) && (lNode = nextent( lNode )) != null_entity )
38 if( Menu_HasRunFlag( lNode, RUNFLAG_DELETEFRAME ) ) {
39 Menu_RemoveItem( lNode );
40 --Menu_GarbageFrameCount;
41 } else if( Menu_HasRunFlag( lNode, RUNFLAG_DELETETOGGLE ) ) {
42 Menu_RemoveItem( lNode );
43 --Menu_GarbageToggleCount;
45 } else while( Menu_GarbageFrameCount && (lNode = nextent( lNode )) != null_entity )
46 if( Menu_HasRunFlag( lNode, RUNFLAG_DELETEFRAME ) ) {
47 Menu_RemoveItem( lNode );
48 --Menu_GarbageFrameCount;
52 void( entity pItem ) Menu_DeleteAfterFrame =
54 if( !Menu_HasRunFlag( pItem, RUNFLAG_DELETEFRAME ) ) {
55 if( Menu_HasRunFlag( pItem, RUNFLAG_DELETETOGGLE ) ) {
56 pItem._runFlag = pItem._runFlag + RUNFLAG_DELETEFRAME - RUNFLAG_DELETETOGGLE;
57 --Menu_GarbageToggleCount;
59 pItem._runFlag = pItem._runFlag + RUNFLAG_DELETEFRAME;
60 ++Menu_GarbageFrameCount;
64 void( entity pItem ) Menu_DeleteAfterToggle =
66 if( Menu_HasRunFlag( pItem, RUNFLAG_DELETEFRAME )
67 || Menu_HasRunFlag( pItem, RUNFLAG_DELETETOGGLE ) )
69 pItem._runFlag = self._runFlag + RUNFLAG_DELETETOGGLE;
70 ++Menu_GarbageToggleCount;