44using System . Reactive . Linq ;
55using System . Reactive . Subjects ;
66using WDE . Common . Parameters ;
7+ using WDE . Common . Utils ;
78using WDE . Module . Attributes ;
89using WDE . MVVM . Observable ;
910using WDE . Parameters . Models ;
11+ using WDE . Parameters . QuickAccess ;
1012
1113namespace WDE . Parameters
1214{
1315 [ AutoRegister ]
1416 [ SingleInstance ]
1517 public class ParameterFactory : IParameterFactory
1618 {
17- private readonly Dictionary < string , ParameterSpecModel > data = new ( ) ;
18- private readonly Dictionary < string , IParameter < long > > parameters = new ( ) ;
19- private readonly Dictionary < string , IParameter < string > > stringParameters = new ( ) ;
20-
19+ private readonly IQuickAccessRegisteredParameters quickAccessRegisteredParameters ;
20+ private readonly Dictionary < string , ParameterSpecModel > data ;
21+ private readonly Dictionary < string , IParameter < long > > parameters ;
22+ private readonly Dictionary < string , IParameter < string > > stringParameters ;
23+
24+ internal ParameterFactory ( IQuickAccessRegisteredParameters quickAccessRegisteredParameters )
25+ {
26+ this . quickAccessRegisteredParameters = quickAccessRegisteredParameters ;
27+ data = new ( StringComparer . OrdinalIgnoreCase ) ;
28+ parameters = new ( StringComparer . OrdinalIgnoreCase ) ;
29+ stringParameters = new ( StringComparer . OrdinalIgnoreCase ) ;
30+ }
31+
2132 public IParameter < long > Factory ( string type )
2233 {
2334 if ( parameters . TryGetValue ( type , out var parameter ) )
@@ -42,14 +53,15 @@ public bool IsRegisteredString(string type)
4253 return stringParameters . ContainsKey ( type ) ;
4354 }
4455
45- public void Register ( string key , IParameter < long > parameter )
56+ public void Register ( string key , IParameter < long > parameter , QuickAccessMode quickAccessMode = QuickAccessMode . None )
4657 {
4758 parameters . Add ( key , parameter ) ;
4859 if ( pendingObservables . TryGetValue ( key , out var pending ) )
4960 pending . Publish ( parameter ) ;
5061 if ( pendingLongObservables . TryGetValue ( key , out var pending2 ) )
5162 pending2 . Publish ( parameter ) ;
5263 registration . OnNext ( parameter ) ;
64+ quickAccessRegisteredParameters . Register ( quickAccessMode , key , key . Replace ( "Parameter" , "" ) . ToTitleCase ( ) ) ;
5365 }
5466
5567 public void Register ( string key , IParameter < string > parameter )
@@ -125,30 +137,32 @@ public ParameterSpecModel GetDefinition(string key)
125137
126138 ////
127139 public void RegisterCombined ( string name , string param1 , string param2 ,
128- Func < IParameter < long > , IParameter < long > , IParameter < long > > creator )
140+ Func < IParameter < long > , IParameter < long > , IParameter < long > > creator ,
141+ QuickAccessMode quickAccessMode = QuickAccessMode . None )
129142 {
130143 OnRegisterLong ( param1 ) . CombineLatest ( OnRegisterLong ( param2 ) ) . Subscribe ( pair =>
131144 {
132- Register ( name , creator ( pair . First , pair . Second ) ) ;
145+ Register ( name , creator ( pair . First , pair . Second ) , quickAccessMode ) ;
133146 } ) ;
134147 }
135148
136149 public void RegisterCombined ( string name , string param1 , string param2 , string param3 , string param4 ,
137- Func < IParameter < long > , IParameter < long > , IParameter < long > , IParameter < long > , IParameter < long > > creator )
150+ Func < IParameter < long > , IParameter < long > , IParameter < long > , IParameter < long > , IParameter < long > > creator ,
151+ QuickAccessMode quickAccessMode = QuickAccessMode . None )
138152 {
139153 OnRegisterLong ( param1 )
140154 . CombineLatest ( OnRegisterLong ( param2 ) , OnRegisterLong ( param3 ) , OnRegisterLong ( param4 ) )
141155 . Subscribe ( pair =>
142156 {
143- Register ( name , creator ( pair . First , pair . Second , pair . Third , pair . Fourth ) ) ;
157+ Register ( name , creator ( pair . First , pair . Second , pair . Third , pair . Fourth ) , quickAccessMode ) ;
144158 } ) ;
145159 }
146160
147- public void RegisterDepending ( string name , string dependsOn , Func < IParameter < long > , IParameter < long > > creator )
161+ public void RegisterDepending ( string name , string dependsOn , Func < IParameter < long > , IParameter < long > > creator , QuickAccessMode quickAccessMode = QuickAccessMode . None )
148162 {
149163 OnRegisterLong ( dependsOn ) . Subscribe ( item =>
150164 {
151- Register ( name , creator ( item ) ) ;
165+ Register ( name , creator ( item ) , quickAccessMode ) ;
152166 } ) ;
153167 }
154168
0 commit comments