@@ -37,7 +37,7 @@ private static GameObject WingMenuPrefab
3737
3838 private readonly Wing _wing ;
3939 private readonly string _menuName ;
40-
40+
4141 public ReWingMenu ( string text , bool left = true ) : base ( WingMenuPrefab , ( left ? QuickMenuEx . LeftWing : QuickMenuEx . RightWing ) . field_Public_RectTransform_0 , text , false )
4242 {
4343 _menuName = GetCleanName ( text ) ;
@@ -82,31 +82,55 @@ public ReWingMenu(string text, bool left = true) : base(WingMenuPrefab, (left ?
8282 uiPage . field_Private_Boolean_1 = true ;
8383 uiPage . field_Protected_MenuStateController_0 = menuStateCtrl ;
8484 uiPage . field_Private_List_1_UIPage_0 = new Il2CppSystem . Collections . Generic . List < UIPage > ( ) ;
85- uiPage . field_Private_List_1_UIPage_0 . Add ( uiPage ) ;
85+ uiPage . field_Private_List_1_UIPage_0 . Add ( uiPage ) ; // what is this for? I forgot
8686
8787 menuStateCtrl . field_Private_Dictionary_2_String_UIPage_0 . Add ( uiPage . field_Public_String_0 , uiPage ) ;
8888 }
8989
9090 public void Open ( )
9191 {
92+ if ( ! GameObject )
93+ throw new NullReferenceException ( "This wing menu has been destroyed." ) ;
94+
9295 _wing . field_Private_MenuStateController_0 . PushPage ( _menuName ) ;
9396 }
9497
9598 public ReWingButton AddButton ( string text , string tooltip , Action onClick , Sprite sprite = null , bool arrow = true , bool background = true , bool separator = false )
9699 {
100+ if ( ! GameObject )
101+ throw new NullReferenceException ( "This wing menu has been destroyed." ) ;
102+
97103 return new ReWingButton ( text , tooltip , onClick , Container , sprite , arrow , background , separator ) ;
98104 }
99105
100106 public ReWingToggle AddToggle ( string text , string tooltip , Action < bool > onToggle , bool defaultValue = false )
101107 {
108+ if ( ! GameObject )
109+ throw new NullReferenceException ( "This wing menu has been destroyed." ) ;
110+
102111 return new ReWingToggle ( text , tooltip , onToggle , Container , defaultValue ) ;
103112 }
104113
105114 public ReWingMenu AddSubMenu ( string text , string tooltip )
106115 {
116+ if ( ! GameObject )
117+ throw new NullReferenceException ( "This wing menu has been destroyed." ) ;
118+
107119 var menu = new ReWingMenu ( text , _wing . _wingType == WingType . Left ) ;
108120 AddButton ( text , tooltip , menu . Open ) ;
109121 return menu ;
110122 }
123+
124+ public override void Destroy ( )
125+ {
126+ if ( ! GameObject )
127+ return ;
128+
129+ var menuStateCtrl = _wing . GetComponent < MenuStateController > ( ) ;
130+ var uiPage = GameObject . GetComponent < UIPage > ( ) ;
131+ menuStateCtrl . field_Private_Dictionary_2_String_UIPage_0 . Remove ( uiPage . field_Public_String_0 ) ;
132+
133+ UnityEngine . Object . Destroy ( GameObject ) ;
134+ }
111135 }
112136}
0 commit comments