summaryrefslogtreecommitdiff
path: root/Client/Assets/Scripts/XMainClient/XComponentMgr.cs
blob: 9aba51362f71fceaefb0867dae21ddea9e0d05e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
using System;
using System.Collections.Generic;
using XUtliPoolLib;

namespace XMainClient
{
	internal sealed class XComponentMgr : XSingleton<XComponentMgr>
	{
		private Dictionary<uint, int> _slots = new Dictionary<uint, int>();

        // 复用component的池子
		private Dictionary<uint, XComponentMgr.ComponentCache> _componentCache = new Dictionary<uint, XComponentMgr.ComponentCache>();

		public static int ComponenCreatetCount = 0;

		private int count = 0;

		public class ComponentCache
		{
			public int SlotIndex = -1;

			public Queue<XComponent> componentCache = new Queue<XComponent>();
		}

		private enum XComponentSet
		{
			AI_Auto_Fight,
			Player_Attributes,
			Basic_Move,
			BeHit_Presentation,
			Charge_Move,
			Basic_Fall,
			Freezing_Presentation,
			Basic_Idle,
			Basic_Jump,
			Basic_Rotation,
			Audio,
			Character_Billboard,
			Moba_Billboard,
			Character_Buff,
			Death,
			Character_Equipment,
			Entity_Gravity,
			CombatInfoInScene,
			Presentation,
			Skill,
			StateMachine,
			Role_StateMachine,
			AI_StateMachine,
			Camera_Basic_Collison,
			Camera_Basic_Shake,
			Action_Generator,
			Renderer,
			Net_Component,
			Role_Attributes,
			Camera_Common_Action,
			ShowUp,
			Npc_Attributes,
			Camera_Solo_Effect,
			Camera_Wall_Component,
			Camera_Motion,
			Navgation_Component,
			Camera_CloseUp_Component,
			Camera_IntellectiveFollow_Component,
			Fly,
			Shadow,
			Assist_AI,
			Others_Attributes,
			Endure,
			TShow,
			CampMainDocument,
			CampMissionDocument,
			FindExpDocument,
			EquipCreateDocument,
			ArenaDocument,
			AchievementDocument,
			JadeDocument,
			CharacterDocument,
			ActivityDocument,
			MystShopDocument,
			LoginRewardDocument,
			MainInterfaceDocument,
			DailyActivitiesDocument,
			FashionDocument,
			SuperRiskDocument,
			EmblemDocument,
			RankDocument,
			FlowerSendDocument,
			FlowerRankDocument,
			FlowerReplyDocument,
			WeekendPartyDocument,
			PlatformAbilityDocument,
			PKInvitationDocument,
			WelfareDocument,
			CharacterCommonMenuDocument,
			EnhanceDocument,
			OptionsDocument,
			SystemRewardDocument,
			XBagDocument,
			CharacterEquipDocument,
			XEquipDocument,
			NormalShopDocument,
			SweepDocument,
			TeamDocument,
			ShowGetItemDocument,
			AdditionRemindDocument,
			ExpeditionDocument,
			WorldBossDocument,
			DanceDocument,
			XRechargeDocument,
			XPurchaseDocument,
			XFPStrengthenDocument,
			LevelUpStatusDocument,
			ShowGetAchivementTipDocument,
			SystemTipDocument,
			ReinforceDocument,
			SkillTreeDocument,
			XOtherPlayerInfoDocument,
			LotteryDocument,
			RecycleItemDocument,
			XChatDocument,
			SelectCharacterDocument,
			GuildDocument,
			GuildListDocument,
			XFriendsDocument,
			XLevelDocument,
			XGuildArenaBattleDocument,
			GuildHallDocument,
			GuildApproveDocument,
			GuildMemberDocument,
			GuildSignInDocument,
			GuildViewDocument,
			GuildRelaxGameDocument,
			GuildJokerDocument,
			GuildSkillDocument,
			GuildRedPacketDocument,
			XGuildQualifierDocument,
			XGuildJokerMatchDocument,
			XGuildArenaDocument,
			XGuildRankDocument,
			XGuildSalaryDocument,
			XGuildInheritDocument,
			XGuildTerritoryDocument,
			LevelRewardDocument,
			CharacterItemDocument,
			GuildDragonDocument,
			NextDayRewardDocument,
			InvitationDocument,
			OnlineRewardDocument,
			FootFx,
			XRoleAutoFightAIComponent,
			XLocateTarget,
			SmeltingDocument,
			QualifyingDocument,
			XAIArenaFightComponent,
			BattleSkillDocument,
			GuildSmallMonsterDocument,
			XTitleDocument,
			XQuickTimeEventComponent,
			SceneDamageRankDocument,
			XSuperArmorComponent,
			WoozyComponent,
			BattleDocument,
			XAIComponent,
			XInheritComponent,
			GayValleyDocument,
			GayValleyFashionDocument,
			GayValleyFishingDocument,
			FishingComponent,
			Camera_Vertical_Adjustment,
			TShowDocument,
			FightGroupDocument,
			PetDocument,
			XAuctionDocument,
			AuctionDocument,
			MailDocument,
			XGameMallDocument,
			PPTDocument,
			MountComponent,
			DesignationDocument,
			DragonRewardDocument,
			LevelSealDocument,
			Bubble,
			XTerritoryComponent,
			QuickReplyDocument,
			CaptainPVPDocument,
			VoiceQADocument,
			BattleCaptainPVPDocument,
			XSkyArenaEntranceDocument,
			XSkyArenaBattleDocument,
			XBigMeleeEntranceDocument,
			XBigMeleeBattleDocument,
			XBattleFieldEntranceDocument,
			XBattleFieldBattleDocument,
			XRaceDocument,
			XPersonalCareerDocument,
			DragonNestDocument,
			PushSubscribeDocument,
			MulActivityDocument,
			PVPActivityDocument,
			TeamInviteDocument,
			XBossBushDocument,
			SpectateDocument,
			SpectateSceneDocument,
			SpectateLevelRewardDocument,
			XApolloDocument,
			GroupChatDocument,
			XBigPrizeDocument,
			XRadioDocument,
			XLuaDocument,
			XSevenLoginDocument,
			FirstPassDocument,
			XOperatingActivityDocument,
			XThemeActivityDocument,
			BiochemicalHellDogDocument,
			MadDuckSiegeDocument,
			RollDocument,
			SpriteSystemDocument,
			XCardCollectDocument,
			XDragonCrusadeDocument,
			XGuildMineBattleDocument,
			XGuildMineMainDocument,
			XGuildMineEntranceDocument,
			XManipulation,
			ReviveDocument,
			IDIPDocument,
			XSmeltDocument,
			HomePlantDocument,
			HomeMainDocument,
			TaskDocument,
			XCarnivalDocument,
			TempActivityDocument,
			HomeCookAndPartyDocument,
			ActivityInviteDocument,
			HomeFishingDocument,
			CombatStatisticsDocument,
			AuctionHouseDocument,
			GuildResContentionBuffDocument,
			XScreenShotShareDocument,
			GuildDonateDocument,
			GuildDailyTaskDocument,
			BillboardDocument,
			CharacterShowChatComponent,
			MentorshipDocument,
			EnchantDocument,
			HeroBattleDocument,
			HeroBattleSkillDocument,
			XWeekNestDocument,
			XCompeteDocument,
			XPartnerDocument,
			WeddingDocument,
			DragonPartnerDocument,
			NPCFavorDocument,
			DramaDocument,
			XJokerKingDocument,
			PandoraDocument,
			XForgeDocument,
			FreeTeamVersusLeagueDocument,
			TeamLeagueBattleDocument,
			NestDocument,
			ProfessionChangeDocument,
			AnnouncementDocument,
			HallFameDocument,
			MilitaryRankDocument,
			GuildCollectDocument,
			ExchangeItemDocument,
			RenameDocument,
			FashionStorageDocument,
			ArtifactDocument,
			ArtifactComposeDocument,
			ArtifactBagDocument,
			ArtifactAtlasDocument,
			RequestDocument,
			AbyssPartyDocument,
			CustomBattleDocument,
			MobaEntranceDocument,
			MobaBattleDocument,
			TaJieHelpDocument,
			ArtifactDeityStoveDocument,
			ArtifactRecastDocument,
			ArtifactFuseDocument,
			ArtifactInscriptionDocument,
			WeekEndNestDocument,
			XGuildWeeklyBountyDocument,
			EquipUpgradeDocument,
			EquipFusionDocument,
			PrerogativeDocument,
			TargetRewardDocument,
			XDragonGuildDocument,
			XDragonGuildListDocument,
			XDragonGuildTaskDocument,
			XDragonGuildApproveDocument,
			XTransformDocument,
			XBackFlowDocument,
			XYorozuyaDocument,
			MysterioursDocument,
			XCampDuelDocument,
			ArtifactRefinedDocument,
			XArtifactCreateDocument,
			CrossGVGDocument,
			XGuildGrowthDocument,
			MAX
		}

		public XComponentMgr()
		{
			int num = 15;
			int num2 = 26;
			XComponentMgr.ComponentCache componentCache = new XComponentMgr.ComponentCache();
			componentCache.SlotIndex = num;
			this._componentCache.Add(XEquipComponent.uuID, componentCache);
			componentCache = new XComponentMgr.ComponentCache();
			componentCache.SlotIndex = num2;
			this._componentCache.Add(XRenderComponent.uuID, componentCache);
			int num3 = XFastEnumIntEqualityComparer<XComponentMgr.XComponentSet>.ToInt(XComponentMgr.XComponentSet.MAX);
			for (int i = 0; i < num3; i++)
			{
				bool flag = i != num && i != num2;
				if (flag)
				{
					Dictionary<uint, int> slots = this._slots;
					XCommon singleton = XSingleton<XCommon>.singleton;
					XComponentMgr.XComponentSet xcomponentSet = (XComponentMgr.XComponentSet)i;
					slots.Add(singleton.XHash(xcomponentSet.ToString()), i);
				}
			}
		}

		public XComponent CreateComponent(XObject hoster, uint uuid)
		{
			XComponent xcomponent = null;
			XComponentMgr.ComponentCache componentCache = null;
            // 先从池子中取
			bool flag = this._componentCache.TryGetValue(uuid, out componentCache);
			if (flag)
			{
				bool flag2 = componentCache.componentCache.Count > 0;
				if (flag2)
				{
					xcomponent = componentCache.componentCache.Dequeue();
				}
				else
				{
					xcomponent = this.ComponentFactory((XComponentMgr.XComponentSet)componentCache.SlotIndex);
				}
			}
			else
			{
				int slot = 0;
				bool flag3 = this._slots.TryGetValue(uuid, out slot);
				if (flag3)
				{
					xcomponent = this.ComponentFactory((XComponentMgr.XComponentSet)slot);
				}
			}
			bool flag4 = xcomponent != null;
			if (flag4)
			{
				xcomponent.InitilizeBuffer();
				bool flag5 = hoster != null;
				if (flag5)
				{
					hoster.AttachComponent(xcomponent);
				}
				XComponentMgr.ComponenCreatetCount++;
				this.count++;
				return xcomponent;
			}
			throw new XErrorUnregisteredComponentException("Component with uuid: " + uuid + " not registered.");
		}

		public void RemoveComponent(XComponent c)
		{
			bool flag = !c.ManualUnitBuff;
			if (flag)
			{
				c.UninitilizeBuffer();
				this.count--;
			}
			XComponentMgr.ComponentCache componentCache = null;
			bool flag2 = this._componentCache.TryGetValue(c.ID, out componentCache);
			if (flag2)
			{
                // 放到池子里
				componentCache.componentCache.Enqueue(c);
			}
		}

		public void ClearAll()
		{
			foreach (KeyValuePair<uint, XComponentMgr.ComponentCache> keyValuePair in this._componentCache)
			{
				keyValuePair.Value.componentCache.Clear();
			}
		}

		public void PrintAllComponent()
		{
		}

		private XComponent ComponentFactory(XComponentMgr.XComponentSet slot)
		{
			switch (slot)
			{
			case XComponentMgr.XComponentSet.Player_Attributes:
				return new XPlayerAttributes();
			case XComponentMgr.XComponentSet.Basic_Move:
				return new XMoveComponent();
			case XComponentMgr.XComponentSet.BeHit_Presentation:
				return new XBeHitComponent();
			case XComponentMgr.XComponentSet.Charge_Move:
				return new XChargeComponent();
			case XComponentMgr.XComponentSet.Basic_Fall:
				return new XFallComponent();
			case XComponentMgr.XComponentSet.Freezing_Presentation:
				return new XFreezeComponent();
			case XComponentMgr.XComponentSet.Basic_Idle:
				return new XIdleComponent();
			case XComponentMgr.XComponentSet.Basic_Jump:
				return new XJumpComponent();
			case XComponentMgr.XComponentSet.Basic_Rotation:
				return new XRotationComponent();
			case XComponentMgr.XComponentSet.Audio:
				return new XAudioComponent();
			case XComponentMgr.XComponentSet.Character_Billboard:
				return new XBillboardComponent();
			case XComponentMgr.XComponentSet.Moba_Billboard:
				return new XMobaBillboardComponent();
			case XComponentMgr.XComponentSet.Character_Buff:
				return new XBuffComponent();
			case XComponentMgr.XComponentSet.Death:
				return new XDeathComponent();
			case XComponentMgr.XComponentSet.Character_Equipment:
				return new XEquipComponent();
			case XComponentMgr.XComponentSet.Entity_Gravity:
				return new XGravityComponent();
			case XComponentMgr.XComponentSet.CombatInfoInScene:
				return new XHUDComponent();
			case XComponentMgr.XComponentSet.Presentation:
				return new XPresentComponent();
			case XComponentMgr.XComponentSet.Skill:
				return new XSkillComponent();
			case XComponentMgr.XComponentSet.StateMachine:
				return new XStateMachine();
			case XComponentMgr.XComponentSet.Camera_Basic_Collison:
				return new XCameraCollisonComponent();
			case XComponentMgr.XComponentSet.Camera_Basic_Shake:
				return new XCameraShakeComponent();
			case XComponentMgr.XComponentSet.Action_Generator:
				return new XActionGeneratorComponent();
			case XComponentMgr.XComponentSet.Renderer:
				return new XRenderComponent();
			case XComponentMgr.XComponentSet.Net_Component:
				return new XNetComponent();
			case XComponentMgr.XComponentSet.Role_Attributes:
				return new XRoleAttributes();
			case XComponentMgr.XComponentSet.Camera_Common_Action:
				return new XCameraActionComponent();
			case XComponentMgr.XComponentSet.ShowUp:
				return new XShowUpComponent();
			case XComponentMgr.XComponentSet.Npc_Attributes:
				return new XNpcAttributes();
			case XComponentMgr.XComponentSet.Camera_Solo_Effect:
				return new XCameraSoloComponent();
			case XComponentMgr.XComponentSet.Camera_Wall_Component:
				return new XCameraWallComponent();
			case XComponentMgr.XComponentSet.Camera_Motion:
				return new XCameraMotionComponent();
			case XComponentMgr.XComponentSet.Navgation_Component:
				return new XNavigationComponent();
			case XComponentMgr.XComponentSet.Camera_CloseUp_Component:
				return new XCameraCloseUpComponent();
			case XComponentMgr.XComponentSet.Camera_IntellectiveFollow_Component:
				return new XCameraIntellectiveFollow();
			case XComponentMgr.XComponentSet.Fly:
				return new XFlyComponent();
			case XComponentMgr.XComponentSet.Shadow:
				return new XShadowComponent();
			case XComponentMgr.XComponentSet.Others_Attributes:
				return new XOthersAttributes();
			case XComponentMgr.XComponentSet.Endure:
				return new XEndureComponent();
			case XComponentMgr.XComponentSet.FindExpDocument:
				return new XFindExpDocument();
			case XComponentMgr.XComponentSet.EquipCreateDocument:
				return new XEquipCreateDocument();
			case XComponentMgr.XComponentSet.ArenaDocument:
				return new XArenaDocument();
			case XComponentMgr.XComponentSet.AchievementDocument:
				return new XAchievementDocument();
			case XComponentMgr.XComponentSet.JadeDocument:
				return new XJadeDocument();
			case XComponentMgr.XComponentSet.CharacterDocument:
				return new XCharacterDocument();
			case XComponentMgr.XComponentSet.ActivityDocument:
				return new XActivityDocument();
			case XComponentMgr.XComponentSet.MystShopDocument:
				return new XMystShopDocument();
			case XComponentMgr.XComponentSet.LoginRewardDocument:
				return new XLoginRewardDocument();
			case XComponentMgr.XComponentSet.MainInterfaceDocument:
				return new XMainInterfaceDocument();
			case XComponentMgr.XComponentSet.DailyActivitiesDocument:
				return new XDailyActivitiesDocument();
			case XComponentMgr.XComponentSet.FashionDocument:
				return new XFashionDocument();
			case XComponentMgr.XComponentSet.SuperRiskDocument:
				return new XSuperRiskDocument();
			case XComponentMgr.XComponentSet.EmblemDocument:
				return new XEmblemDocument();
			case XComponentMgr.XComponentSet.RankDocument:
				return new XRankDocument();
			case XComponentMgr.XComponentSet.FlowerSendDocument:
				return new XFlowerSendDocument();
			case XComponentMgr.XComponentSet.FlowerRankDocument:
				return new XFlowerRankDocument();
			case XComponentMgr.XComponentSet.FlowerReplyDocument:
				return new XFlowerReplyDocument();
			case XComponentMgr.XComponentSet.WeekendPartyDocument:
				return new XWeekendPartyDocument();
			case XComponentMgr.XComponentSet.PlatformAbilityDocument:
				return new XPlatformAbilityDocument();
			case XComponentMgr.XComponentSet.PKInvitationDocument:
				return new XPKInvitationDocument();
			case XComponentMgr.XComponentSet.WelfareDocument:
				return new XWelfareDocument();
			case XComponentMgr.XComponentSet.CharacterCommonMenuDocument:
				return new XCharacterCommonMenuDocument();
			case XComponentMgr.XComponentSet.EnhanceDocument:
				return new XEnhanceDocument();
			case XComponentMgr.XComponentSet.OptionsDocument:
				return new XOptionsDocument();
			case XComponentMgr.XComponentSet.SystemRewardDocument:
				return new XSystemRewardDocument();
			case XComponentMgr.XComponentSet.XBagDocument:
				return new XBagDocument();
			case XComponentMgr.XComponentSet.CharacterEquipDocument:
				return new XCharacterEquipDocument();
			case XComponentMgr.XComponentSet.XEquipDocument:
				return new XEquipDocument();
			case XComponentMgr.XComponentSet.NormalShopDocument:
				return new XNormalShopDocument();
			case XComponentMgr.XComponentSet.SweepDocument:
				return new XSweepDocument();
			case XComponentMgr.XComponentSet.TeamDocument:
				return new XTeamDocument();
			case XComponentMgr.XComponentSet.ShowGetItemDocument:
				return new XShowGetItemDocument();
			case XComponentMgr.XComponentSet.AdditionRemindDocument:
				return new AdditionRemindDocument();
			case XComponentMgr.XComponentSet.ExpeditionDocument:
				return new XExpeditionDocument();
			case XComponentMgr.XComponentSet.WorldBossDocument:
				return new XWorldBossDocument();
			case XComponentMgr.XComponentSet.DanceDocument:
				return new XDanceDocument();
			case XComponentMgr.XComponentSet.XRechargeDocument:
				return new XRechargeDocument();
			case XComponentMgr.XComponentSet.XPurchaseDocument:
				return new XPurchaseDocument();
			case XComponentMgr.XComponentSet.XFPStrengthenDocument:
				return new XFPStrengthenDocument();
			case XComponentMgr.XComponentSet.LevelUpStatusDocument:
				return new XLevelUpStatusDocument();
			case XComponentMgr.XComponentSet.ShowGetAchivementTipDocument:
				return new XShowGetAchivementTipDocument();
			case XComponentMgr.XComponentSet.SystemTipDocument:
				return new XSystemTipDocument();
			case XComponentMgr.XComponentSet.SkillTreeDocument:
				return new XSkillTreeDocument();
			case XComponentMgr.XComponentSet.XOtherPlayerInfoDocument:
				return new XOtherPlayerInfoDocument();
			case XComponentMgr.XComponentSet.RecycleItemDocument:
				return new XRecycleItemDocument();
			case XComponentMgr.XComponentSet.XChatDocument:
				return new XChatDocument();
			case XComponentMgr.XComponentSet.SelectCharacterDocument:
				return new XSelectCharacterDocument();
			case XComponentMgr.XComponentSet.GuildDocument:
				return new XGuildDocument();
			case XComponentMgr.XComponentSet.GuildListDocument:
				return new XGuildListDocument();
			case XComponentMgr.XComponentSet.XFriendsDocument:
				return new XFriendsDocument();
			case XComponentMgr.XComponentSet.XLevelDocument:
				return new XLevelDocument();
			case XComponentMgr.XComponentSet.XGuildArenaBattleDocument:
				return new XGuildArenaBattleDocument();
			case XComponentMgr.XComponentSet.GuildHallDocument:
				return new XGuildHallDocument();
			case XComponentMgr.XComponentSet.GuildApproveDocument:
				return new XGuildApproveDocument();
			case XComponentMgr.XComponentSet.GuildMemberDocument:
				return new XGuildMemberDocument();
			case XComponentMgr.XComponentSet.GuildSignInDocument:
				return new XGuildSignInDocument();
			case XComponentMgr.XComponentSet.GuildViewDocument:
				return new XGuildViewDocument();
			case XComponentMgr.XComponentSet.GuildRelaxGameDocument:
				return new XGuildRelaxGameDocument();
			case XComponentMgr.XComponentSet.GuildJokerDocument:
				return new XGuildJokerDocument();
			case XComponentMgr.XComponentSet.GuildSkillDocument:
				return new XGuildSkillDocument();
			case XComponentMgr.XComponentSet.GuildRedPacketDocument:
				return new XGuildRedPacketDocument();
			case XComponentMgr.XComponentSet.XGuildQualifierDocument:
				return new XGuildQualifierDocument();
			case XComponentMgr.XComponentSet.XGuildJokerMatchDocument:
				return new XGuildJockerMatchDocument();
			case XComponentMgr.XComponentSet.XGuildArenaDocument:
				return new XGuildArenaDocument();
			case XComponentMgr.XComponentSet.XGuildRankDocument:
				return new XGuildRankDocument();
			case XComponentMgr.XComponentSet.XGuildSalaryDocument:
				return new XGuildSalaryDocument();
			case XComponentMgr.XComponentSet.XGuildInheritDocument:
				return new XGuildInheritDocument();
			case XComponentMgr.XComponentSet.XGuildTerritoryDocument:
				return new XGuildTerritoryDocument();
			case XComponentMgr.XComponentSet.LevelRewardDocument:
				return new XLevelRewardDocument();
			case XComponentMgr.XComponentSet.CharacterItemDocument:
				return new XCharacterItemDocument();
			case XComponentMgr.XComponentSet.GuildDragonDocument:
				return new XGuildDragonDocument();
			case XComponentMgr.XComponentSet.NextDayRewardDocument:
				return new XNextDayRewardDocument();
			case XComponentMgr.XComponentSet.InvitationDocument:
				return new XInvitationDocument();
			case XComponentMgr.XComponentSet.OnlineRewardDocument:
				return new XOnlineRewardDocument();
			case XComponentMgr.XComponentSet.FootFx:
				return new XFootFxComponent();
			case XComponentMgr.XComponentSet.XLocateTarget:
				return new XLocateTargetComponent();
			case XComponentMgr.XComponentSet.QualifyingDocument:
				return new XQualifyingDocument();
			case XComponentMgr.XComponentSet.BattleSkillDocument:
				return new XBattleSkillDocument();
			case XComponentMgr.XComponentSet.GuildSmallMonsterDocument:
				return new XGuildSmallMonsterDocument();
			case XComponentMgr.XComponentSet.XTitleDocument:
				return new XTitleDocument();
			case XComponentMgr.XComponentSet.XQuickTimeEventComponent:
				return new XQuickTimeEventComponent();
			case XComponentMgr.XComponentSet.SceneDamageRankDocument:
				return new XSceneDamageRankDocument();
			case XComponentMgr.XComponentSet.XSuperArmorComponent:
				return new XSuperArmorComponent();
			case XComponentMgr.XComponentSet.WoozyComponent:
				return new XWoozyComponent();
			case XComponentMgr.XComponentSet.BattleDocument:
				return new XBattleDocument();
			case XComponentMgr.XComponentSet.XAIComponent:
				return new XAIComponent();
			case XComponentMgr.XComponentSet.XInheritComponent:
				return new XInheritComponent();
			case XComponentMgr.XComponentSet.FishingComponent:
				return new XFishingComponent();
			case XComponentMgr.XComponentSet.Camera_Vertical_Adjustment:
				return new XCameraVAdjustComponent();
			case XComponentMgr.XComponentSet.FightGroupDocument:
				return new XFightGroupDocument();
			case XComponentMgr.XComponentSet.PetDocument:
				return new XPetDocument();
			case XComponentMgr.XComponentSet.AuctionDocument:
				return new AuctionDocument();
			case XComponentMgr.XComponentSet.MailDocument:
				return new XMailDocument();
			case XComponentMgr.XComponentSet.XGameMallDocument:
				return new XGameMallDocument();
			case XComponentMgr.XComponentSet.PPTDocument:
				return new XPPTDocument();
			case XComponentMgr.XComponentSet.MountComponent:
				return new XMountComponent();
			case XComponentMgr.XComponentSet.DesignationDocument:
				return new XDesignationDocument();
			case XComponentMgr.XComponentSet.DragonRewardDocument:
				return new XDragonRewardDocument();
			case XComponentMgr.XComponentSet.LevelSealDocument:
				return new XLevelSealDocument();
			case XComponentMgr.XComponentSet.Bubble:
				return new XBubbleComponent();
			case XComponentMgr.XComponentSet.XTerritoryComponent:
				return new XTerritoryComponent();
			case XComponentMgr.XComponentSet.QuickReplyDocument:
				return new XQuickReplyDocument();
			case XComponentMgr.XComponentSet.CaptainPVPDocument:
				return new XCaptainPVPDocument();
			case XComponentMgr.XComponentSet.VoiceQADocument:
				return new XVoiceQADocument();
			case XComponentMgr.XComponentSet.BattleCaptainPVPDocument:
				return new XBattleCaptainPVPDocument();
			case XComponentMgr.XComponentSet.XSkyArenaEntranceDocument:
				return new XSkyArenaEntranceDocument();
			case XComponentMgr.XComponentSet.XSkyArenaBattleDocument:
				return new XSkyArenaBattleDocument();
			case XComponentMgr.XComponentSet.XBigMeleeEntranceDocument:
				return new XBigMeleeEntranceDocument();
			case XComponentMgr.XComponentSet.XBigMeleeBattleDocument:
				return new XBigMeleeBattleDocument();
			case XComponentMgr.XComponentSet.XBattleFieldEntranceDocument:
				return new XBattleFieldEntranceDocument();
			case XComponentMgr.XComponentSet.XBattleFieldBattleDocument:
				return new XBattleFieldBattleDocument();
			case XComponentMgr.XComponentSet.XRaceDocument:
				return new XRaceDocument();
			case XComponentMgr.XComponentSet.XPersonalCareerDocument:
				return new XPersonalCareerDocument();
			case XComponentMgr.XComponentSet.DragonNestDocument:
				return new XDragonNestDocument();
			case XComponentMgr.XComponentSet.PushSubscribeDocument:
				return new XPushSubscribeDocument();
			case XComponentMgr.XComponentSet.PVPActivityDocument:
				return new XPVPActivityDocument();
			case XComponentMgr.XComponentSet.TeamInviteDocument:
				return new XTeamInviteDocument();
			case XComponentMgr.XComponentSet.XBossBushDocument:
				return new XBossBushDocument();
			case XComponentMgr.XComponentSet.SpectateDocument:
				return new XSpectateDocument();
			case XComponentMgr.XComponentSet.SpectateSceneDocument:
				return new XSpectateSceneDocument();
			case XComponentMgr.XComponentSet.SpectateLevelRewardDocument:
				return new XSpectateLevelRewardDocument();
			case XComponentMgr.XComponentSet.XApolloDocument:
				return new XApolloDocument();
			case XComponentMgr.XComponentSet.GroupChatDocument:
				return new GroupChatDocument();
			case XComponentMgr.XComponentSet.XBigPrizeDocument:
				return new XAncientDocument();
			case XComponentMgr.XComponentSet.XRadioDocument:
				return new XRadioDocument();
			case XComponentMgr.XComponentSet.XLuaDocument:
				return new XLuaDocument();
			case XComponentMgr.XComponentSet.XSevenLoginDocument:
				return new XSevenLoginDocument();
			case XComponentMgr.XComponentSet.FirstPassDocument:
				return new FirstPassDocument();
			case XComponentMgr.XComponentSet.XOperatingActivityDocument:
				return new XOperatingActivityDocument();
			case XComponentMgr.XComponentSet.XThemeActivityDocument:
				return new XThemeActivityDocument();
			case XComponentMgr.XComponentSet.BiochemicalHellDogDocument:
				return new BiochemicalHellDogDocument();
			case XComponentMgr.XComponentSet.MadDuckSiegeDocument:
				return new MadDuckSiegeDocument();
			case XComponentMgr.XComponentSet.RollDocument:
				return new XRollDocument();
			case XComponentMgr.XComponentSet.SpriteSystemDocument:
				return new XSpriteSystemDocument();
			case XComponentMgr.XComponentSet.XCardCollectDocument:
				return new XCardCollectDocument();
			case XComponentMgr.XComponentSet.XDragonCrusadeDocument:
				return new XDragonCrusadeDocument();
			case XComponentMgr.XComponentSet.XGuildMineBattleDocument:
				return new XGuildMineBattleDocument();
			case XComponentMgr.XComponentSet.XGuildMineMainDocument:
				return new XGuildMineMainDocument();
			case XComponentMgr.XComponentSet.XGuildMineEntranceDocument:
				return new XGuildMineEntranceDocument();
			case XComponentMgr.XComponentSet.XManipulation:
				return new XManipulationComponent();
			case XComponentMgr.XComponentSet.ReviveDocument:
				return new XReviveDocument();
			case XComponentMgr.XComponentSet.IDIPDocument:
				return new XIDIPDocument();
			case XComponentMgr.XComponentSet.XSmeltDocument:
				return new XSmeltDocument();
			case XComponentMgr.XComponentSet.HomePlantDocument:
				return new HomePlantDocument();
			case XComponentMgr.XComponentSet.HomeMainDocument:
				return new HomeMainDocument();
			case XComponentMgr.XComponentSet.TaskDocument:
				return new XTaskDocument();
			case XComponentMgr.XComponentSet.XCarnivalDocument:
				return new XCarnivalDocument();
			case XComponentMgr.XComponentSet.TempActivityDocument:
				return new XTempActivityDocument();
			case XComponentMgr.XComponentSet.HomeCookAndPartyDocument:
				return new XHomeCookAndPartyDocument();
			case XComponentMgr.XComponentSet.ActivityInviteDocument:
				return new XActivityInviteDocument();
			case XComponentMgr.XComponentSet.HomeFishingDocument:
				return new XHomeFishingDocument();
			case XComponentMgr.XComponentSet.CombatStatisticsDocument:
				return new XCombatStatisticsDocument();
			case XComponentMgr.XComponentSet.AuctionHouseDocument:
				return new AuctionHouseDocument();
			case XComponentMgr.XComponentSet.GuildResContentionBuffDocument:
				return new XGuildResContentionBuffDocument();
			case XComponentMgr.XComponentSet.XScreenShotShareDocument:
				return new XScreenShotShareDocument();
			case XComponentMgr.XComponentSet.GuildDonateDocument:
				return new XGuildDonateDocument();
			case XComponentMgr.XComponentSet.GuildDailyTaskDocument:
				return new XGuildDailyTaskDocument();
			case XComponentMgr.XComponentSet.BillboardDocument:
				return new XBillBoardDocument();
			case XComponentMgr.XComponentSet.CharacterShowChatComponent:
				return new XCharacterShowChatComponent();
			case XComponentMgr.XComponentSet.MentorshipDocument:
				return new XMentorshipDocument();
			case XComponentMgr.XComponentSet.EnchantDocument:
				return new XEnchantDocument();
			case XComponentMgr.XComponentSet.HeroBattleDocument:
				return new XHeroBattleDocument();
			case XComponentMgr.XComponentSet.HeroBattleSkillDocument:
				return new XHeroBattleSkillDocument();
			case XComponentMgr.XComponentSet.XWeekNestDocument:
				return new XWeekNestDocument();
			case XComponentMgr.XComponentSet.XCompeteDocument:
				return new XCompeteDocument();
			case XComponentMgr.XComponentSet.XPartnerDocument:
				return new XPartnerDocument();
			case XComponentMgr.XComponentSet.WeddingDocument:
				return new XWeddingDocument();
			case XComponentMgr.XComponentSet.DragonPartnerDocument:
				return new XDragonPartnerDocument();
			case XComponentMgr.XComponentSet.NPCFavorDocument:
				return new XNPCFavorDocument();
			case XComponentMgr.XComponentSet.DramaDocument:
				return new XDramaDocument();
			case XComponentMgr.XComponentSet.XJokerKingDocument:
				return new XJokerKingDocument();
			case XComponentMgr.XComponentSet.PandoraDocument:
				return new PandoraDocument();
			case XComponentMgr.XComponentSet.XForgeDocument:
				return new XForgeDocument();
			case XComponentMgr.XComponentSet.FreeTeamVersusLeagueDocument:
				return new XFreeTeamVersusLeagueDocument();
			case XComponentMgr.XComponentSet.TeamLeagueBattleDocument:
				return new XTeamLeagueBattleDocument();
			case XComponentMgr.XComponentSet.NestDocument:
				return new XNestDocument();
			case XComponentMgr.XComponentSet.ProfessionChangeDocument:
				return new XProfessionChangeDocument();
			case XComponentMgr.XComponentSet.AnnouncementDocument:
				return new XAnnouncementDocument();
			case XComponentMgr.XComponentSet.HallFameDocument:
				return new XHallFameDocument();
			case XComponentMgr.XComponentSet.MilitaryRankDocument:
				return new XMilitaryRankDocument();
			case XComponentMgr.XComponentSet.GuildCollectDocument:
				return new XGuildCollectDocument();
			case XComponentMgr.XComponentSet.ExchangeItemDocument:
				return new XExchangeItemDocument();
			case XComponentMgr.XComponentSet.RenameDocument:
				return new XRenameDocument();
			case XComponentMgr.XComponentSet.FashionStorageDocument:
				return new XFashionStorageDocument();
			case XComponentMgr.XComponentSet.ArtifactDocument:
				return new ArtifactDocument();
			case XComponentMgr.XComponentSet.ArtifactComposeDocument:
				return new ArtifactComposeDocument();
			case XComponentMgr.XComponentSet.ArtifactBagDocument:
				return new ArtifactBagDocument();
			case XComponentMgr.XComponentSet.ArtifactAtlasDocument:
				return new ArtifactAtlasDocument();
			case XComponentMgr.XComponentSet.RequestDocument:
				return new XRequestDocument();
			case XComponentMgr.XComponentSet.AbyssPartyDocument:
				return new XAbyssPartyDocument();
			case XComponentMgr.XComponentSet.CustomBattleDocument:
				return new XCustomBattleDocument();
			case XComponentMgr.XComponentSet.MobaEntranceDocument:
				return new XMobaEntranceDocument();
			case XComponentMgr.XComponentSet.MobaBattleDocument:
				return new XMobaBattleDocument();
			case XComponentMgr.XComponentSet.TaJieHelpDocument:
				return new TaJieHelpDocument();
			case XComponentMgr.XComponentSet.ArtifactDeityStoveDocument:
				return new ArtifactDeityStoveDocument();
			case XComponentMgr.XComponentSet.ArtifactRecastDocument:
				return new ArtifactRecastDocument();
			case XComponentMgr.XComponentSet.ArtifactFuseDocument:
				return new ArtifactFuseDocument();
			case XComponentMgr.XComponentSet.ArtifactInscriptionDocument:
				return new ArtifactInscriptionDocument();
			case XComponentMgr.XComponentSet.WeekEndNestDocument:
				return new WeekEndNestDocument();
			case XComponentMgr.XComponentSet.XGuildWeeklyBountyDocument:
				return new XGuildWeeklyBountyDocument();
			case XComponentMgr.XComponentSet.EquipUpgradeDocument:
				return new EquipUpgradeDocument();
			case XComponentMgr.XComponentSet.EquipFusionDocument:
				return new EquipFusionDocument();
			case XComponentMgr.XComponentSet.PrerogativeDocument:
				return new XPrerogativeDocument();
			case XComponentMgr.XComponentSet.TargetRewardDocument:
				return new XTargetRewardDocument();
			case XComponentMgr.XComponentSet.XDragonGuildDocument:
				return new XDragonGuildDocument();
			case XComponentMgr.XComponentSet.XDragonGuildListDocument:
				return new XDragonGuildListDocument();
			case XComponentMgr.XComponentSet.XDragonGuildTaskDocument:
				return new XDragonGuildTaskDocument();
			case XComponentMgr.XComponentSet.XDragonGuildApproveDocument:
				return new XDragonGuildApproveDocument();
			case XComponentMgr.XComponentSet.XTransformDocument:
				return new XTransformDocument();
			case XComponentMgr.XComponentSet.XBackFlowDocument:
				return new XBackFlowDocument();
			case XComponentMgr.XComponentSet.XYorozuyaDocument:
				return new XYorozuyaDocument();
			case XComponentMgr.XComponentSet.MysterioursDocument:
				return new XRiftDocument();
			case XComponentMgr.XComponentSet.XCampDuelDocument:
				return new XCampDuelDocument();
			case XComponentMgr.XComponentSet.ArtifactRefinedDocument:
				return new ArtifactRefinedDocument();
			case XComponentMgr.XComponentSet.XArtifactCreateDocument:
				return new XArtifactCreateDocument();
			case XComponentMgr.XComponentSet.CrossGVGDocument:
				return new XCrossGVGDocument();
			case XComponentMgr.XComponentSet.XGuildGrowthDocument:
				return new XGuildGrowthDocument();
			}
			throw new XErrorUnregisteredComponentException("Component at slot " + slot + " not registered.");
		}
	}
}