XmdsZoneFactory.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. using CommonAI.Zone;
  2. using CommonAI.Zone.Helper;
  3. using CommonAI.Zone.Instance;
  4. using System;
  5. using CommonAI.Zone.ZoneEditor;
  6. using CommonAI.ZoneClient;
  7. using XmdsCommon.ZoneClient;
  8. using CommonAI.Zone.Formula;
  9. using XmdsCommon.Message;
  10. using XmdsCommon.ZoneClient.XmdsClientVirtual;
  11. using XmdsCommon.EditorData;
  12. using System.IO;
  13. using CommonLang.Concurrent;
  14. using System.Collections.Generic;
  15. namespace XmdsCommon.Plugin
  16. {
  17. public class XmdsZoneFactory : InstanceZoneFactory
  18. {
  19. private XmdsClientFormula mFormula = new XmdsClientFormula();
  20. public override CommonAI.Zone.Formula.IFormula Formula
  21. {
  22. get { return mFormula; }
  23. }
  24. public XmdsZoneFactory()
  25. {
  26. }
  27. public override IUnitProperties CreateUnitProperties()
  28. {
  29. return new XmdsUnitProperties();
  30. }
  31. public override IAttackProperties CreateAttackProperties()
  32. {
  33. return new XmdsAttackProperties();
  34. }
  35. public override IBuffProperties CreateBuffProperties()
  36. {
  37. return new XmdsBuffProperties();
  38. }
  39. public override IItemProperties CreateItemProperties()
  40. {
  41. return new XmdsItemProperties();
  42. }
  43. public override ISkillProperties CreateSkillProperties()
  44. {
  45. return new XmdsSkillProperties();
  46. }
  47. public override ISpellProperties CreateSpellProperties()
  48. {
  49. return new XmdsSpellProperties();
  50. }
  51. public override IUnitTriggerProperties CreateTriggerProperties()
  52. {
  53. return new XmdsUnitTriggerProperties();
  54. }
  55. public override ISceneProperties CreateSceneProperties()
  56. {
  57. return new XmdsSceneProperties();
  58. }
  59. public override ICommonConfig CreateCommonCFG()
  60. {
  61. return new XmdsConfig();
  62. }
  63. public override IQuestAdapter CreateQuestAdapter(InstanceZone zone)
  64. {
  65. throw new NotImplementedException();
  66. }
  67. public override ZoneLayer CreateClientZoneLayer(EditorTemplates templates, ILayerClient listener)
  68. {
  69. return new HZZoneLayer(templates, listener);
  70. }
  71. public override IVirtualClientUnit CreateClientUnitVirtual(ZoneUnit owner)
  72. {
  73. //是否主角.
  74. if (owner is ZoneActor)
  75. {
  76. return new XmdsClientVirtual_Actor();
  77. }
  78. IUnitVisibleData data = owner.SyncInfo.VisibleInfo;
  79. //根据数据类型,确定中间层数据类型.
  80. if (data == null)
  81. {
  82. switch (owner.Info.UType)
  83. {
  84. case UnitInfo.UnitType.TYPE_MONSTER:
  85. return new XmdsClientVirtual_Monster();
  86. case UnitInfo.UnitType.TYPE_NPC:
  87. return new XmdsClientVirtual_Monster();
  88. case UnitInfo.UnitType.TYPE_PET:
  89. return new XmdsClientVirtual_Pet();
  90. case UnitInfo.UnitType.TYPE_PLAYER:
  91. return new XmdsClientVirtual_Player();
  92. case UnitInfo.UnitType.TYPE_SUMMON:
  93. return new XmdsClientVirtual_SummonUnit();
  94. default:
  95. return new XmdsClientVirtual();
  96. }
  97. }
  98. else if (data is SummonUnitVisibleDataB2C)
  99. {
  100. return new XmdsClientVirtual_SummonUnit();
  101. }
  102. else if (data is PlayerVisibleDataB2C)
  103. {
  104. return new XmdsClientVirtual_Player();
  105. }
  106. else if (data is PetVisibleDataB2C)
  107. {
  108. return new XmdsClientVirtual_Pet();
  109. }
  110. else if (data is MonsterVisibleDataB2C)
  111. {
  112. return new XmdsClientVirtual_Monster();
  113. }
  114. return base.CreateClientUnitVirtual(owner);
  115. }
  116. public override string ToClientDisplayName(UnitInfo info, SyncUnitInfo syncInfo)
  117. {
  118. if (!string.IsNullOrEmpty(syncInfo.Alias))
  119. {
  120. return syncInfo.Alias;
  121. }
  122. var prop = info.Properties as XmdsCommon.Plugin.XmdsUnitProperties;
  123. if (prop.ServerData != null && prop.ServerData.BaseInfo != null)
  124. {
  125. return prop.ServerData.BaseInfo.name;
  126. }
  127. var visible = syncInfo.VisibleInfo as PlayerVisibleDataB2C;
  128. if (visible != null && visible.BaseInfo != null)
  129. {
  130. return visible.BaseInfo.name;
  131. }
  132. return info.Name;
  133. }
  134. }
  135. public class XmdsClientFormula : IFormula
  136. {
  137. public override void OnEditorSaving(EditorTemplatesData datas, DirectoryInfo data_root, List<FileInfo> savedfiles, AtomicFloat progress_percent)
  138. {
  139. base.OnEditorSaving(datas, data_root, savedfiles, progress_percent);
  140. SceneSnapManager.SaveAllSceneSnap(datas, new DirectoryInfo(data_root.FullName + "/scene_snaps"));
  141. //UnitSnapData dataTemp = SceneSnapManager.LoadSceneUnitSnapData(10099);
  142. SceneSnapManager.SaveAllSceneSnapExt(datas, new DirectoryInfo(data_root.FullName + "/scene_unitsnaps"));
  143. }
  144. public override void InitPluginsData(EditorTemplates data_root)
  145. {
  146. base.InitPluginsData(data_root);
  147. SceneSnapManager.InitSceneSnap(data_root.DataRoot + "/scene_snaps", data_root.DataRoot + "/scene_unitsnaps");
  148. }
  149. }
  150. }