XmdsClientVirtual_Player.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. using CommonAI.Data;
  2. using CommonAI.ZoneClient;
  3. using System.Collections.Generic;
  4. using XmdsCommon.Message;
  5. using XmdsCommon.Plugin;
  6. namespace XmdsCommon.ZoneClient.XmdsClientVirtual
  7. {
  8. public class XmdsClientVirtual_Player : XmdsClientVirtual
  9. {
  10. public delegate void OnStatusChange();
  11. public event OnStatusChange OnUnitLvChange;
  12. protected PlayerVisibleDataB2C mData = null;
  13. protected string mPlayerUUID = null;
  14. public override void OnInit(ZoneUnit owner)
  15. {
  16. base.OnInit(owner);
  17. mPlayerUUID = owner.PlayerUUID;
  18. mData = owner.SyncInfo.VisibleInfo as PlayerVisibleDataB2C;
  19. (owner.Info.Properties as XmdsUnitProperties).ServerData.AvatarList = new List<XmdsAvatarInfo>(mData.AvatarList);
  20. }
  21. public override void OnDispose(ZoneUnit owner)
  22. {
  23. base.OnDispose(owner);
  24. mData = null;
  25. OnUnitLvChange = null;
  26. mPlayerUUID = null;
  27. }
  28. protected override void MOwner_OnDoEvent(ZoneObject obj, CommonAI.Zone.ObjectEvent e)
  29. {
  30. if (e is XmdsUnitBaseInfoEventB2C)
  31. {
  32. var evt = e as XmdsUnitBaseInfoEventB2C;
  33. int lv = mData.BaseInfo.UnitLv;
  34. mData.BaseInfo = evt.Props;
  35. if (evt.Props.UnitLv != lv)
  36. {
  37. //升级通知.
  38. if (OnUnitLvChange != null)
  39. {
  40. OnUnitLvChange.Invoke();
  41. }
  42. }
  43. }
  44. else if (e is PlayerPKLvChangeEventB2C)
  45. {
  46. var evt = e as PlayerPKLvChangeEventB2C;
  47. mData.UnitPKInfo.CurPKLevel = evt.CurLv;
  48. }
  49. else if (e is PlayerPKValueChangeEventB2C)
  50. {
  51. var evt = e as PlayerPKValueChangeEventB2C;
  52. mData.UnitPKInfo.CurPKValue = evt.CurPKValue;
  53. }
  54. else if (e is TestamentChangeEventB2C)
  55. {
  56. var evt = e as TestamentChangeEventB2C;
  57. mData.BaseInfo.Testament = evt.TestamentID;
  58. }
  59. base.MOwner_OnDoEvent(obj, e);
  60. }
  61. #region 常用方法.
  62. public PKLevel GetPKLv()
  63. {
  64. return mData.UnitPKInfo.CurPKLevel;
  65. }
  66. public PKInfo GetPKInfo()
  67. {
  68. return mData.UnitPKInfo;
  69. }
  70. public int GetPKValue()
  71. {
  72. if (mData == null) { return 0; }
  73. return mData.UnitPKInfo.CurPKValue;
  74. }
  75. public string GetName()
  76. {
  77. return mData.BaseInfo.name;
  78. }
  79. public int GetServerID()
  80. {
  81. return mData.BaseInfo.ServerID;
  82. }
  83. public string GetGuildID()
  84. {
  85. return mData.BaseInfo.GuildID;
  86. }
  87. public string GetGuildName()
  88. {
  89. return mData.BaseInfo.GuildName;
  90. }
  91. public int GetLv()
  92. {
  93. return mData.BaseInfo.UnitLv;
  94. }
  95. public int GetForceID()
  96. {
  97. return mData.BaseInfo.force;
  98. }
  99. public override string GetPlayerUUID()
  100. {
  101. return mPlayerUUID;
  102. }
  103. public int GetTitleID()
  104. {
  105. return mData.BaseInfo.TitleID;
  106. }
  107. public XmdsUnitBaseInfo GetBaseInfo()
  108. {
  109. return mData.BaseInfo;
  110. }
  111. public bool AllowAutoGuard()
  112. {
  113. if (mData != null)
  114. {
  115. return mData.UnitSceneInfo.AllowAutoGuard;
  116. }
  117. return true;
  118. }
  119. /// <summary>
  120. /// 获得单位特殊状态.
  121. /// </summary>
  122. /// <returns></returns>
  123. public CommonAI.XmdsConstConfig.SpecialState GetSPState()
  124. {
  125. if(mData != null)
  126. {
  127. return mData.BaseInfo.SPState;
  128. }
  129. return CommonAI.XmdsConstConfig.SpecialState.None;
  130. }
  131. #endregion
  132. }
  133. }