1-
1+ using System ;
22using System . Collections . Generic ;
3+ using System . Linq ;
34using Network . Particle . Scripts . Model ;
45using Network . Particle . Scripts . Singleton ;
6+ using UnityEditor ;
57using UnityEngine ;
68using UnityEngine . Events ;
7- using UnityEngine . UI ;
9+ using Button = UnityEngine . UI . Button ;
810
911public class ChainChoice : SingletonMonoBehaviour < ChainChoice >
1012{
@@ -15,101 +17,49 @@ public class ChainChoice : SingletonMonoBehaviour<ChainChoice>
1517 void Start ( )
1618 {
1719 List < ChainInfo > chainInfos = new List < ChainInfo > ( ) ;
18- chainInfos . Add ( new SolanaChain ( SolanaChainId . Mainnet ) ) ;
19- chainInfos . Add ( new SolanaChain ( SolanaChainId . Devnet ) ) ;
20- chainInfos . Add ( new SolanaChain ( SolanaChainId . Testnet ) ) ;
21- chainInfos . Add ( new EthereumChain ( EthereumChainId . Mainnet ) ) ;
22- chainInfos . Add ( new EthereumChain ( EthereumChainId . Goerli ) ) ;
23-
24- chainInfos . Add ( new BSCChain ( BscChainId . Mainnet ) ) ;
25- chainInfos . Add ( new BSCChain ( BscChainId . Testnet ) ) ;
26-
27- chainInfos . Add ( new PolygonChain ( PolygonChainId . Mainnet ) ) ;
28- chainInfos . Add ( new PolygonChain ( PolygonChainId . Mumbai ) ) ;
29-
30- chainInfos . Add ( new AvalancheChain ( AvalancheChainId . Mainnet ) ) ;
31- chainInfos . Add ( new AvalancheChain ( AvalancheChainId . Testnet ) ) ;
32-
33- chainInfos . Add ( new MoonbeamChain ( MoonbeamChainId . Mainnet ) ) ;
34- chainInfos . Add ( new MoonbeamChain ( MoonbeamChainId . Testnet ) ) ;
35-
36- chainInfos . Add ( new MoonriverChain ( MoonriverChainId . Mainnet ) ) ;
37- chainInfos . Add ( new MoonriverChain ( MoonriverChainId . Testnet ) ) ;
38-
39- chainInfos . Add ( new HecoChain ( HecoChainId . Mainnet ) ) ;
40-
41- chainInfos . Add ( new FantomChain ( FantomChainId . Mainnet ) ) ;
42- chainInfos . Add ( new FantomChain ( FantomChainId . Testnet ) ) ;
43-
44- chainInfos . Add ( new ArbitrumChain ( ArbitrumChainId . One ) ) ;
45- chainInfos . Add ( new ArbitrumChain ( ArbitrumChainId . Nova ) ) ;
46- chainInfos . Add ( new ArbitrumChain ( ArbitrumChainId . Goerli ) ) ;
47-
48- chainInfos . Add ( new HarmonyChain ( HarmonyChainId . Mainnet ) ) ;
49- chainInfos . Add ( new HarmonyChain ( HarmonyChainId . Testnet ) ) ;
50-
51- chainInfos . Add ( new AuroraChain ( AuroraChainId . Mainnet ) ) ;
52- chainInfos . Add ( new AuroraChain ( AuroraChainId . Testnet ) ) ;
53-
54- chainInfos . Add ( new KccChain ( KccChainId . Mainnet ) ) ;
55- chainInfos . Add ( new KccChain ( KccChainId . Testnet ) ) ;
56-
57- chainInfos . Add ( new OptimismChain ( OptimismChainId . Mainnet ) ) ;
58- chainInfos . Add ( new OptimismChain ( OptimismChainId . Goerli ) ) ;
59-
60- chainInfos . Add ( new PlatONChain ( PlatONChainId . Mainnet ) ) ;
61- chainInfos . Add ( new PlatONChain ( PlatONChainId . Testnet ) ) ;
62-
63- chainInfos . Add ( new TronChain ( TronChainId . Mainnet ) ) ;
64- chainInfos . Add ( new TronChain ( TronChainId . Shasta ) ) ;
65- chainInfos . Add ( new TronChain ( TronChainId . Nile ) ) ;
66-
67- chainInfos . Add ( new OKCChain ( OKCChainId . Mainnet ) ) ;
68- chainInfos . Add ( new OKCChain ( OKCChainId . Testnet ) ) ;
69-
70- chainInfos . Add ( new ThunderCoreChain ( ThunderCoreChainId . Mainnet ) ) ;
71- chainInfos . Add ( new ThunderCoreChain ( ThunderCoreChainId . Testnet ) ) ;
72-
73- chainInfos . Add ( new CronosChain ( CronosChainId . Mainnet ) ) ;
74- chainInfos . Add ( new CronosChain ( CronosChainId . Testnet ) ) ;
20+ chainInfos . AddRange ( CreateInstancesFromEnum < SolanaChainId , SolanaChain > ( ) ) ;
21+ chainInfos . AddRange ( CreateInstancesFromEnum < EthereumChainId , EthereumChain > ( ) ) ;
22+ chainInfos . AddRange ( CreateInstancesFromEnum < AvalancheChainId , AvalancheChain > ( ) ) ;
23+ chainInfos . AddRange ( CreateInstancesFromEnum < PolygonChainId , PolygonChain > ( ) ) ;
24+ chainInfos . AddRange ( CreateInstancesFromEnum < MoonbeamChainId , MoonbeamChain > ( ) ) ;
25+ chainInfos . AddRange ( CreateInstancesFromEnum < MoonriverChainId , MoonriverChain > ( ) ) ;
26+ chainInfos . AddRange ( CreateInstancesFromEnum < HecoChainId , HecoChain > ( ) ) ;
27+ chainInfos . AddRange ( CreateInstancesFromEnum < BSCChainId , BSCChain > ( ) ) ;
28+ chainInfos . AddRange ( CreateInstancesFromEnum < FantomChainId , FantomChain > ( ) ) ;
29+ chainInfos . AddRange ( CreateInstancesFromEnum < ArbitrumChainId , ArbitrumChain > ( ) ) ;
30+ chainInfos . AddRange ( CreateInstancesFromEnum < HarmonyChainId , HarmonyChain > ( ) ) ;
31+ chainInfos . AddRange ( CreateInstancesFromEnum < AuroraChainId , AuroraChain > ( ) ) ;
32+ chainInfos . AddRange ( CreateInstancesFromEnum < KccChainId , KccChain > ( ) ) ;
33+ chainInfos . AddRange ( CreateInstancesFromEnum < OptimismChainId , OptimismChain > ( ) ) ;
34+ chainInfos . AddRange ( CreateInstancesFromEnum < PlatONChainId , PlatONChain > ( ) ) ;
35+ chainInfos . AddRange ( CreateInstancesFromEnum < TronChainId , TronChain > ( ) ) ;
36+ chainInfos . AddRange ( CreateInstancesFromEnum < OKCChainId , OKCChain > ( ) ) ;
37+ chainInfos . AddRange ( CreateInstancesFromEnum < ThunderCoreChainId , ThunderCoreChain > ( ) ) ;
38+ chainInfos . AddRange ( CreateInstancesFromEnum < CronosChainId , CronosChain > ( ) ) ;
39+ chainInfos . AddRange ( CreateInstancesFromEnum < OasisEmeraldChainId , OasisEmeraldChain > ( ) ) ;
40+ chainInfos . AddRange ( CreateInstancesFromEnum < GnosisChainId , GnosisChain > ( ) ) ;
41+ chainInfos . AddRange ( CreateInstancesFromEnum < CeloChainId , CeloChain > ( ) ) ;
42+ chainInfos . AddRange ( CreateInstancesFromEnum < KlaytnChainId , KlaytnChain > ( ) ) ;
43+ chainInfos . AddRange ( CreateInstancesFromEnum < ScrollChainId , ScrollChain > ( ) ) ;
44+ chainInfos . AddRange ( CreateInstancesFromEnum < ZkSyncChainId , ZkSyncChain > ( ) ) ;
45+ chainInfos . AddRange ( CreateInstancesFromEnum < MetisChainId , MetisChain > ( ) ) ;
46+ chainInfos . AddRange ( CreateInstancesFromEnum < ConfluxESpaceChainId , ConfluxESpaceChain > ( ) ) ;
47+ chainInfos . AddRange ( CreateInstancesFromEnum < MapoChainId , MapoChain > ( ) ) ;
48+ chainInfos . AddRange ( CreateInstancesFromEnum < PolygonZkEVMChainId , PolygonZkEVMChain > ( ) ) ;
49+ chainInfos . AddRange ( CreateInstancesFromEnum < BSCChainId , BSCChain > ( ) ) ;
50+ chainInfos . AddRange ( CreateInstancesFromEnum < LineaChainId , LineaChain > ( ) ) ;
51+ chainInfos . AddRange ( CreateInstancesFromEnum < ComboChainId , ComboChain > ( ) ) ;
52+ chainInfos . AddRange ( CreateInstancesFromEnum < MantaChainId , MantaChain > ( ) ) ;
53+ chainInfos . AddRange ( CreateInstancesFromEnum < ZkMetaChainId , ZkMetaChain > ( ) ) ;
54+ chainInfos . AddRange ( CreateInstancesFromEnum < OpBNBChainId , OpBNBChain > ( ) ) ;
55+ chainInfos . AddRange ( CreateInstancesFromEnum < OKBCChainId , OKBCChain > ( ) ) ;
56+ chainInfos . AddRange ( CreateInstancesFromEnum < TaikoChainId , TaikoChain > ( ) ) ;
57+ chainInfos . AddRange ( CreateInstancesFromEnum < ReadOnChainId , ReadOnChain > ( ) ) ;
58+ chainInfos . AddRange ( CreateInstancesFromEnum < ZoraChainId , ZoraChain > ( ) ) ;
59+ chainInfos . AddRange ( CreateInstancesFromEnum < PGNChainId , PGNChain > ( ) ) ;
60+ chainInfos . AddRange ( CreateInstancesFromEnum < MantaChainId , MantaChain > ( ) ) ;
61+ chainInfos . AddRange ( CreateInstancesFromEnum < NebulaChainId , NebulaChain > ( ) ) ;
7562
76- chainInfos . Add ( new OasisEmeraldChain ( OasisEmeraldChainId . Mainnet ) ) ;
77- chainInfos . Add ( new OasisEmeraldChain ( OasisEmeraldChainId . Testnet ) ) ;
78-
79- chainInfos . Add ( new GnosisChain ( GnosisChainId . Mainnet ) ) ;
80- chainInfos . Add ( new GnosisChain ( GnosisChainId . Testnet ) ) ;
81-
82- chainInfos . Add ( new CeloChain ( CeloChainId . Mainnet ) ) ;
83- chainInfos . Add ( new CeloChain ( CeloChainId . Testnet ) ) ;
84-
85- chainInfos . Add ( new KlaytnChain ( KlaytnChainId . Mainnet ) ) ;
86- chainInfos . Add ( new KlaytnChain ( KlaytnChainId . Testnet ) ) ;
87-
88- chainInfos . Add ( new ScrollChain ( ScrollChainId . Testnet ) ) ;
89-
90- chainInfos . Add ( new ZkSyncChain ( ZkSyncChainId . Mainnet ) ) ;
91- chainInfos . Add ( new ZkSyncChain ( ZkSyncChainId . Testnet ) ) ;
92-
93- chainInfos . Add ( new MetisChain ( MetisChainId . Mainnet ) ) ;
94- chainInfos . Add ( new MetisChain ( MetisChainId . Testnet ) ) ;
95-
96- chainInfos . Add ( new ConfluxESpaceChain ( ConfluxESpaceChainId . Mainnet ) ) ;
97- chainInfos . Add ( new ConfluxESpaceChain ( ConfluxESpaceChainId . Testnet ) ) ;
98-
99- chainInfos . Add ( new MapoChain ( MapoChainId . Mainnet ) ) ;
100- chainInfos . Add ( new MapoChain ( MapoChainId . Testnet ) ) ;
101-
102- chainInfos . Add ( new PolygonZkEVMChain ( PolygonZkEVMChainId . Mainnet ) ) ;
103- chainInfos . Add ( new PolygonZkEVMChain ( PolygonZkEVMChainId . Testnet ) ) ;
104-
105- chainInfos . Add ( new BaseChain ( BaseChainId . Testnet ) ) ;
106- chainInfos . Add ( new LineaChain ( LineaChainId . Testnet ) ) ;
107- chainInfos . Add ( new ComboChain ( ComboChainId . Testnet ) ) ;
108- chainInfos . Add ( new MantleChain ( MantleChainId . Testnet ) ) ;
109- chainInfos . Add ( new ZkMetaChain ( ZkMetaChainId . Testnet ) ) ;
110- chainInfos . Add ( new OpBNBChain ( OpBNBChainId . Testnet ) ) ;
111- chainInfos . Add ( new OKBCChain ( OKBCChainId . Testnet ) ) ;
112- chainInfos . Add ( new TaikoChain ( TaikoChainId . Testnet ) ) ;
11363
11464 foreach ( var chainInfo in chainInfos )
11565 {
@@ -125,6 +75,22 @@ void Start()
12575 }
12676 }
12777
78+ public static IEnumerable < TClass > CreateInstancesFromEnum < TEnum , TClass > ( )
79+ where TEnum : Enum
80+ where TClass : BaseChainInfo
81+ {
82+ var constructorInfo = typeof ( TClass ) . GetConstructor ( new [ ] { typeof ( TEnum ) } ) ;
83+
84+ if ( constructorInfo == null )
85+ {
86+ throw new ArgumentException ( $ "Type { typeof ( TClass ) } does not have a constructor that takes a { typeof ( TEnum ) } parameter.") ;
87+ }
88+
89+ return Enum . GetValues ( typeof ( TEnum ) )
90+ . Cast < TEnum > ( )
91+ . Select ( value => ( TClass ) constructorInfo . Invoke ( new object [ ] { value } ) ) ;
92+ }
93+
12894 public void Show ( UnityAction < ChainInfo > unityAction )
12995 {
13096 this . unityAction = unityAction ;
0 commit comments