1- #if ML
2-
3- #if ! ML_LEGACY // ML 0.3.1+ config handler
4-
1+ #if ML
52using MelonLoader ;
63using System ;
74using System . Collections . Generic ;
@@ -77,130 +74,4 @@ public override void SaveConfig()
7774 }
7875 }
7976}
80-
81- #else // ML 0.3.0 config handler
82-
83- using MelonLoader ;
84- using MelonLoader . Tomlyn . Model ;
85- using System ;
86- using System . Collections . Generic ;
87- using System . Linq ;
88- using System . Text ;
89- using UnityEngine ;
90- using UnityExplorer . Core ;
91- using UnityExplorer . Core . Config ;
92-
93- namespace UnityExplorer . Loader . ML
94- {
95- public class MelonLoaderConfigHandler : ConfigHandler
96- {
97- internal const string CTG_NAME = "UnityExplorer" ;
98-
99- internal MelonPreferences_Category prefCategory ;
100-
101- public override void Init ( )
102- {
103- prefCategory = MelonPreferences . CreateCategory ( CTG_NAME , $ "{ CTG_NAME } Settings") ;
104-
105- try { MelonPreferences . Mapper . RegisterMapper ( KeycodeReader , KeycodeWriter ) ; } catch { }
106- try { MelonPreferences . Mapper . RegisterMapper ( AnchorReader , AnchorWriter ) ; } catch { }
107- }
108-
109- public override void LoadConfig ( )
110- {
111- foreach ( var entry in ConfigManager . ConfigElements )
112- {
113- var key = entry . Key ;
114- if ( prefCategory . GetEntry ( key ) is MelonPreferences_Entry )
115- {
116- var config = entry . Value ;
117- config . BoxedValue = config . GetLoaderConfigValue ( ) ;
118- }
119- }
120- }
121-
122- public override void RegisterConfigElement < T > ( ConfigElement < T > config )
123- {
124- var entry = prefCategory . CreateEntry ( config . Name , config . Value , null , config . IsInternal ) as MelonPreferences_Entry < T > ;
125-
126- entry . OnValueChangedUntyped += ( ) =>
127- {
128- if ( ( entry . Value == null && config . Value == null ) || config . Value . Equals ( entry . Value ) )
129- return ;
130-
131- config . Value = entry . Value ;
132- } ;
133- }
134-
135- public override void SetConfigValue < T > ( ConfigElement < T > config , T value )
136- {
137- if ( prefCategory . GetEntry < T > ( config . Name ) is MelonPreferences_Entry < T > entry )
138- {
139- entry . Value = value ;
140- entry . Save ( ) ;
141- }
142- }
143-
144- public override T GetConfigValue < T > ( ConfigElement < T > config )
145- {
146- if ( prefCategory . GetEntry < T > ( config . Name ) is MelonPreferences_Entry < T > entry )
147- return entry . Value ;
148-
149- return default ;
150- }
151-
152- public override void OnAnyConfigChanged ( )
153- {
154- }
155-
156- public override void SaveConfig ( )
157- {
158- MelonPreferences . Save ( ) ;
159- }
160-
161- // Enum config handlers
162-
163- public static KeyCode KeycodeReader ( TomlObject value )
164- {
165- try
166- {
167- KeyCode kc = ( KeyCode ) Enum . Parse ( typeof ( KeyCode ) , ( value as TomlString ) . Value ) ;
168-
169- if ( kc == default )
170- throw new Exception ( ) ;
171-
172- return kc ;
173- }
174- catch
175- {
176- return KeyCode . F7 ;
177- }
178- }
179-
180- public static TomlObject KeycodeWriter ( KeyCode value )
181- {
182- return MelonPreferences . Mapper . ToToml ( value . ToString ( ) ) ;
183- }
184-
185- public static UI . UIManager . VerticalAnchor AnchorReader ( TomlObject value )
186- {
187- try
188- {
189- return ( UI . UIManager . VerticalAnchor ) Enum . Parse ( typeof ( UI . UIManager . VerticalAnchor ) , ( value as TomlString ) . Value ) ;
190- }
191- catch
192- {
193- return UI . UIManager . VerticalAnchor . Top ;
194- }
195- }
196-
197- public static TomlObject AnchorWriter ( UI . UIManager . VerticalAnchor anchor )
198- {
199- return MelonPreferences . Mapper . ToToml ( anchor . ToString ( ) ) ;
200- }
201- }
202- }
203-
204- #endif
205-
20677#endif
0 commit comments