FightingManagerOpr.cs 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine.UI;
  5. using System;
  6. namespace YLBattle
  7. {
  8. /// <summary>
  9. ///
  10. /// </summary>
  11. partial class FightingManager : MonoSingleton<FightingManager>
  12. {
  13. /// <summary>
  14. /// 已加载的怪物的龙骨数据(角色排除)
  15. /// </summary>
  16. private List<string> mLoadedMonsterDragons = new List<string>();
  17. /// <summary>
  18. /// 添加一个战斗者
  19. /// </summary>
  20. /// <param name="_id">对象全局唯一编号(当着战斗)</param>
  21. /// <param name="_strIid">对象全局唯一编号(ServerId,Monster没有)</param>
  22. /// <param name="_strTid">模版ID</param>
  23. /// <param name="_strPrefebName">资源名称</param>
  24. /// <param name="_intTeam">所属队伍</param>
  25. /// <param name="_seat">位置</_seat>
  26. /// <param name="isFriend">友情支援</_seat>
  27. /// <param name="playerUID">玩家注册ID</_seat>
  28. internal void AddOneFighter(string _id, string _strIid,
  29. string _strTid,
  30. string _strDragonBoneName,
  31. EBattleTeam _eTeam,
  32. int _seat,
  33. string _sounds,
  34. int levelmode,
  35. bool isFriend = false,
  36. string playerUID = ""
  37. )
  38. {
  39. if (mFighterList.ContainsKey(_id) == false)
  40. {
  41. mFighterTIDs.Add(_id, _strTid);
  42. ///pvp时,敌方也存在IID,这里只有己方需要添加到iid里供UI使用
  43. if (_eTeam == EBattleTeam.BLUETEAM)
  44. {
  45. mFighterIIDs.Add(_id, _strIid);
  46. }
  47. if (mFriendIIDs.ContainsKey(_seat) == false && isFriend)
  48. {
  49. mFriendIIDs.Add(_seat, playerUID);
  50. }
  51. GameObject obj = null;
  52. string bundleName = _eTeam == EBattleTeam.BLUETEAM ? "DragonBone_Role" : "DragonBone_Mon";
  53. Transform part = null;
  54. if (_eTeam == EBattleTeam.REDTEAM)
  55. {
  56. part = FightingSeatManager.Instance.GetFightingMapSeat(_seat, levelmode);
  57. }
  58. else
  59. {
  60. part = BUI_FighterAniWindow.Instance.GetTransBySeat(_seat);
  61. }
  62. if (part == null)
  63. {
  64. LogHelper.LogWarning("编队信息有误!!! " + _id);
  65. }
  66. #region
  67. ResourceHelper.Instance.LoadAssetBundle(bundleName, ab =>
  68. {
  69. if (ab != null)
  70. {
  71. //LogHelper.LogWarning("1 成功加载龙骨数据 " + bundleName);
  72. obj = (GameObject)Instantiate(ab.LoadAsset(bundleName));
  73. obj.transform.SetParent(part);
  74. obj.transform.localRotation = Quaternion.identity;
  75. obj.transform.localPosition = Vector3.zero;
  76. obj.transform.localScale = new Vector3(1, 1, 1);
  77. obj.gameObject.SetActive(false);
  78. Fighter fighter = obj.AddComponent<Fighter>();
  79. fighter.SetInfo(_id, _strTid, _eTeam, _seat, mBFM, _sounds, _strDragonBoneName);
  80. if (this.mLoadedMonsterDragons.Contains(_strDragonBoneName) == false &&
  81. _eTeam == EBattleTeam.REDTEAM)
  82. {
  83. this.mLoadedMonsterDragons.Add(_strDragonBoneName);
  84. }
  85. BUI_DragonBonesControl.Instance.ShowHeroModel(_id, _strDragonBoneName,
  86. _eTeam == EBattleTeam.BLUETEAM ? FightingResManager.EDragonResLevel.Hero : FightingResManager.EDragonResLevel.Monster,
  87. (armatureComponent) =>
  88. {
  89. RenderTexture rendertexture = null;
  90. BUI_DragonBonesControl.Instance.AttachDragonToSeat(armatureComponent.transform, _seat, _eTeam, ref rendertexture);
  91. fighter.SetDragonBone(armatureComponent.GetComponent<DragonBones.UnityArmatureComponent>(), rendertexture);
  92. fighter.SetHidden();
  93. if (_eTeam == EBattleTeam.REDTEAM)
  94. {
  95. BUI_BattleInfoBar.Instance.CreatNewBar(_id);
  96. }
  97. obj.gameObject.SetActive(true);
  98. mFighterList.Add(_id, fighter);
  99. if (isFriend && playerUID.Trim().Length > 0)
  100. {
  101. this.OnUpdateSlotData(_seat, playerUID);
  102. }
  103. });
  104. }
  105. else
  106. {
  107. LogHelper.LogError(bundleName + " bundle 丢失");
  108. }
  109. });
  110. #endregion
  111. }
  112. else
  113. {
  114. LogHelper.LogError("sa不sa,sa不sa,损色...." + _id + " have contain~");
  115. }
  116. }
  117. /// <summary>
  118. /// 删除一个战斗者
  119. /// </summary>
  120. /// <param name="id">编号</param>
  121. public void DeleteOneFighter(string id)
  122. {
  123. //LogHelper.LogError("[" + id + "]..................delete from battle~~");
  124. if (mFighterList.ContainsKey(id))
  125. {
  126. BUI_DragonBonesControl.Instance.DestroyModel(id);
  127. Destroy(mFighterList[id].gameObject);
  128. mFighterList.Remove(id);
  129. }
  130. mFighterIIDs.Remove(id);
  131. mFighterTIDs.Remove(id);
  132. }
  133. /// <summary>
  134. /// 清除所有战斗者
  135. /// </summary>
  136. public void ClearAllFighter()
  137. {
  138. List<Fighter> fighters = new List<Fighter>(mFighterList.Values);
  139. for (int i = 0; i < fighters.Count; i++)
  140. {
  141. Destroy(fighters[i].gameObject);
  142. BUI_DragonBonesControl.Instance.DestroyModel(fighters[i].mID);
  143. }
  144. mFighterList.Clear();
  145. mFighterTIDs.Clear();
  146. mFighterIIDs.Clear();
  147. mFriendIIDs.Clear();
  148. }
  149. /// <summary>
  150. ///
  151. /// </summary>
  152. /// <returns></returns>
  153. public Dictionary<int, string> GetFriendIID()
  154. {
  155. return this.mFriendIIDs;
  156. }
  157. /// <summary>
  158. /// 获取所有己方战斗者(serverId)
  159. /// </summary>
  160. /// <returns>IID列表</returns>
  161. public Dictionary<string, string> GetBlueFighterIID()
  162. {
  163. Dictionary<string, string> list = new Dictionary<string, string>();
  164. foreach (KeyValuePair<string, string> keyvalue in mFighterIIDs)
  165. {
  166. if (keyvalue.Value != string.Empty)
  167. {
  168. list.Add(mFighterList[keyvalue.Key].mSeat.ToString(), keyvalue.Value);
  169. }
  170. }
  171. return list;
  172. }
  173. /// <summary>
  174. /// 通过ServerIID获取战斗唯一ID
  175. /// </summary>
  176. /// <param name="iid"></param>
  177. /// <returns></returns>
  178. public string GetFitherIdByIID(string iid)
  179. {
  180. string result = string.Empty;
  181. foreach (KeyValuePair<string, string> keyvalue in mFighterIIDs)
  182. {
  183. if (keyvalue.Value == iid)
  184. {
  185. return keyvalue.Key;
  186. }
  187. }
  188. return result;
  189. }
  190. /// <summary>
  191. /// 获取战斗者
  192. /// </summary>
  193. /// <param name="id"> 玩家ID </param>
  194. /// <returns>战斗者实例</returns>
  195. public Fighter GetFighter(string id)
  196. {
  197. if (mFighterList.ContainsKey(id))
  198. {
  199. return mFighterList[id];
  200. }
  201. return null;
  202. }
  203. }
  204. }