UIStartFightRoomComponentSystem.cs 54 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using UnityEngine;
  6. using UnityEngine.PlayerLoop;
  7. using UnityEngine.UI;
  8. using static System.Net.Mime.MediaTypeNames;
  9. using static UnityEditor.Progress;
  10. namespace ET.Client
  11. {
  12. #region 定时器 刷新
  13. [Invoke(TimerInvokeType.fightTimeShow)]
  14. public class UIStartFightRoomComponentChecker : ATimer<UIStartFightRoomComponent>
  15. {
  16. protected override void Run(UIStartFightRoomComponent self)
  17. {
  18. try
  19. {
  20. self.Check();
  21. }
  22. catch (Exception e)
  23. {
  24. Log.Error($"idle check error: {self.Id}\n{e}");
  25. }
  26. }
  27. }
  28. [Invoke(TimerInvokeType.startFightTimeCount)]
  29. public class UIStartFightTimeCountChecker : ATimer<UIStartFightRoomComponent>
  30. {
  31. protected override void Run(UIStartFightRoomComponent self)
  32. {
  33. try
  34. {
  35. self.UpdateTimeCount();
  36. }
  37. catch (Exception e)
  38. {
  39. Log.Error($"idle check error: {self.Id}\n{e}");
  40. }
  41. }
  42. }
  43. #endregion
  44. [FriendOf(typeof(UIStartFightRoomComponent))]
  45. public static class UIStartFightRoomComponentSystem
  46. {
  47. public static void Check(this UIStartFightRoomComponent self)
  48. {
  49. self.timeTxt.text = string.Format("{0}:{1}", DateTime.Now.Hour, DateTime.Now.Minute);
  50. }
  51. public static void UpdateTimeCount(this UIStartFightRoomComponent self)
  52. {
  53. if (self.startTimeCount > 0)
  54. {
  55. self.timeCountTxt.text = self.startTimeCount.ToString();
  56. }
  57. else
  58. {
  59. if (self.startTimer > 0)
  60. TimerComponent.Instance?.Remove(ref self.startTimer);
  61. self.timeCountTxt.text = "";
  62. }
  63. self.startTimeCount = self.startTimeCount - 1;
  64. }
  65. [ObjectSystem]
  66. public class UIStartFightRoomComponentAwakeSystem : AwakeSystem<UIStartFightRoomComponent>
  67. {
  68. protected override void Awake(UIStartFightRoomComponent self, params object[] param)
  69. {
  70. ReferenceCollector rc = self.GetParent<UI>().GameObject.GetComponent<ReferenceCollector>();
  71. //头像部分
  72. self.houseIcon = rc.Get<GameObject>("houseIcon");
  73. self.houseIdTxt = rc.Get<GameObject>("houseIdTxt");
  74. self.gameNumTxt = rc.Get<GameObject>("gameNumTxt");
  75. self.curResidueTxt = rc.Get<GameObject>("curResidueTxt");
  76. //右上系统信息部分
  77. self.wifiImage = rc.Get<GameObject>("wifiImage");
  78. self.powerImage = rc.Get<GameObject>("powerImage");
  79. var timeTxt = rc.Get<GameObject>("timeTxt");
  80. self.timeTxt = timeTxt.GetComponent<UnityEngine.UI.Text>();
  81. self.menuBtn = rc.Get<GameObject>("menuBtn");
  82. self.menuBtn.GetComponent<Button>().onClick.AddListener(() => { self.OnMenuBtn(); });
  83. self.faceBtn = rc.Get<GameObject>("faceBtn");
  84. self.faceBtn.GetComponent<Button>().onClick.AddListener(() => { self.OnFaceBtn(); });
  85. self.videoBtn = rc.Get<GameObject>("videoBtn");
  86. self.videoBtn.GetComponent<Button>().onClick.AddListener(() => { self.OnVideoBtn(); });
  87. //菜单
  88. self.menuPanel = rc.Get<GameObject>("menuPanel");
  89. self.menuPanel.SetActive(false);
  90. self.maskBtn = rc.Get<GameObject>("maskBtn");
  91. self.maskBtn.GetComponent<Button>().onClick.AddListener(() => { self.OnMenuPanelClose(); });
  92. self.menuBackBtn = rc.Get<GameObject>("menuBackBtn");
  93. self.menuBackBtn.GetComponent<Button>().onClick.AddListener(() => { self.OnMenuPanelBack(); });
  94. self.menuQuitBtn = rc.Get<GameObject>("menuQuitBtn");
  95. self.menuQuitBtn.GetComponent<Button>().onClick.AddListener(() => { self.OnMenuPanelQuit(); });
  96. self.menuSettingBtn = rc.Get<GameObject>("menuSettingBtn");
  97. self.menuSettingBtn.GetComponent<Button>().onClick.AddListener(() => { self.OnMenuPanelSetting(); });
  98. //表情面板
  99. self.facePanel = rc.Get<GameObject>("facePanel");
  100. self.facePanel.SetActive(false);
  101. self.fastToggleBtn = rc.Get<GameObject>("fastToggleBtn");
  102. self.fastToggleBtn.GetComponent<Button>().onClick.AddListener(() => { self.OnFaceFastToggleBtn(0); });
  103. self.faceToggleBtn = rc.Get<GameObject>("faceToggleBtn");
  104. self.faceToggleBtn.GetComponent<Button>().onClick.AddListener(() => { self.OnFaceFastToggleBtn(1); });
  105. self.faceAndVideoObj = rc.Get<GameObject>("faceAndVideoObj");
  106. self.faceAndVideoObj.SetActive(false);
  107. self.facePanelCloseBtn = rc.Get<GameObject>("facePanelCloseBtn");
  108. self.facePanelCloseBtn.GetComponent<Button>().onClick.AddListener(() => { self.facePanel.SetActive(false); });
  109. //表情列表以及快捷语列表
  110. self.listFastGridBg = rc.Get<GameObject>("listFastGridBg");
  111. self.listFastGridBg.SetActive(false);
  112. self.listFastContent = rc.Get<GameObject>("listFastContent");
  113. self.gridFastItem = rc.Get<GameObject>("gridFastItem");
  114. self.listFaceGridBg = rc.Get<GameObject>("listFaceGridBg");
  115. self.listFaceGridBg.SetActive(false);
  116. self.listFaceContent = rc.Get<GameObject>("listFaceContent");
  117. self.gridFaceItem = rc.Get<GameObject>("gridFaceItem");
  118. self.shakeDiceImage = rc.Get<GameObject>("shakeDiceImage").GetComponent<UnityEngine.UI.Image>();
  119. self.timeCountTxt = rc.Get<GameObject>("timeCountTxt").GetComponent<UnityEngine.UI.Text>();
  120. //玩
  121. self.readyBtn = rc.Get<GameObject>("readyBtn");
  122. self.readyBtn.GetComponent<Button>().onClick.AddListener(() => { self.OnReadyAndInviteBtn(0); });
  123. self.inviteBtn = rc.Get<GameObject>("inviteBtn");
  124. self.inviteBtn.GetComponent<Button>().onClick.AddListener(() => { self.OnReadyAndInviteBtn(1); });
  125. self.fightCardItem = rc.Get<GameObject>("fightCardItem");
  126. self.fightCardItem.SetActive(false);
  127. GameUtil.Instance.SetCardCloneItem(self.fightCardItem,0);
  128. self.fightCardItem1 = rc.Get<GameObject>("fightCardItem1");
  129. self.fightCardItem1.SetActive(false);
  130. GameUtil.Instance.SetCardCloneItem(self.fightCardItem1, 1);
  131. for (int i = 1;i <= 4;i++)
  132. {
  133. UIStartFightRoomPlayerCom uIStartFightRoomPlayerCom = new UIStartFightRoomPlayerCom();
  134. var playerObj = rc.Get<GameObject>("player" + i);
  135. var playerIconObj = rc.Get<GameObject>("playerIcon" + i);
  136. var readyImage = rc.Get<GameObject>("readyImage" + i);
  137. var playerIconImage = playerIconObj.GetComponent<UnityEngine.UI.Image>();
  138. uIStartFightRoomPlayerCom.playerObj = playerObj;
  139. uIStartFightRoomPlayerCom.readyImage = readyImage;
  140. uIStartFightRoomPlayerCom.playerIcon = playerIconImage;
  141. var fightCardContentNode = rc.Get<GameObject>("fightCardContent" + i);
  142. uIStartFightRoomPlayerCom.fightCardNode = fightCardContentNode;
  143. var disCardContentNode = rc.Get<GameObject>("disCardContent" + i);
  144. uIStartFightRoomPlayerCom.disCardsNode = disCardContentNode;
  145. self.uIStartFightRoomPlayerComs.Add(uIStartFightRoomPlayerCom);
  146. playerObj.SetActive(false);
  147. var playChatObj = rc.Get<GameObject>("playChatObj" + i);
  148. self.playChatObjList.Add(playChatObj);
  149. }
  150. //操作
  151. self.operatorObj = rc.Get<GameObject>("operatorObj");
  152. self.operatorObj.SetActive(false);
  153. int operatorIndex = 1;
  154. for (int i = 1;i <= 5;i++)
  155. {
  156. var operatorObjBtn = rc.Get<GameObject>("operatorBtn" + i);
  157. var btn = operatorObjBtn.GetComponent<Button>();
  158. operatorIndex = i;
  159. btn.onClick.AddListener(()=>
  160. {
  161. self.OnOperatorBtn(operatorIndex);
  162. });
  163. self.operatorObj_btn.Add(operatorObjBtn);
  164. }
  165. self.Init();
  166. }
  167. }
  168. private static async void Init(this UIStartFightRoomComponent self)
  169. {
  170. self.RepeatedTimer = TimerComponent.Instance.NewRepeatedTimer(ConstValue.fightTimeRefreshTime / 2 + 100, TimerInvokeType.fightTimeShow, self);
  171. var startFightRoomInfo = self.ClientScene().GetComponent<StartFightRoomComponment>().GetStartFightRoomInfo();
  172. CommonBridge.Instance.dispathPush += DispathPush;
  173. self.readyBtn.SetActive(true);
  174. self.inviteBtn.SetActive(true);
  175. self.houseIdTxt.GetComponent<UnityEngine.UI.Text>().text = startFightRoomInfo.roomInfo.RoomId.ToString();
  176. self.gameNumTxt.GetComponent<UnityEngine.UI.Text>().text = startFightRoomInfo.roomInfo.OwnerId.ToString();
  177. self.curResidueTxt.GetComponent<UnityEngine.UI.Text>().text = "0";
  178. await SoundManager.Instance.PlaySound("common_playing", true);
  179. }
  180. private static void DispathPush(Scene scene, object type)
  181. {
  182. var ui = scene.GetComponent<UIComponent>().Get(UIType.UIStartFightRoom);
  183. var startFightRoomInfo = scene.GetComponent<StartFightRoomComponment>().GetStartFightRoomInfo();
  184. switch (type)
  185. {
  186. case EventType.JoinRoomPush:
  187. {
  188. var startFightRoomComponentUI = ui.GetComponent<UIStartFightRoomComponent>();
  189. //处理其他玩家信息
  190. for (int i = 1; i < startFightRoomComponentUI.uIStartFightRoomPlayerComs.Count; i++)
  191. {
  192. startFightRoomComponentUI.uIStartFightRoomPlayerComs[i].playerObj.SetActive(false);
  193. }
  194. if (startFightRoomInfo.roomInfo.OtherInfo != null && startFightRoomInfo.roomInfo.OtherInfo.Count > 0)
  195. {
  196. for (int i = 0; i < startFightRoomInfo.roomInfo.OtherInfo.Count; i++)
  197. {
  198. var otherPlayInfo = startFightRoomInfo.roomInfo.OtherInfo[i];
  199. if (i >= startFightRoomComponentUI.uIStartFightRoomPlayerComs.Count - 1)
  200. {
  201. startFightRoomComponentUI.uIStartFightRoomPlayerComs[i + 1].playerObj.SetActive(false);
  202. }
  203. else
  204. {
  205. startFightRoomComponentUI.uIStartFightRoomPlayerComs[i + 1].playerObj.SetActive(true);
  206. startFightRoomComponentUI.uIStartFightRoomPlayerComs[i + 1].readyImage.SetActive(false);
  207. }
  208. }
  209. }
  210. break;
  211. }
  212. case EventType.ReadyPush:
  213. {
  214. var startFightRoomComponent = ui.GetComponent<UIStartFightRoomComponent>();
  215. //先处理自己的信息
  216. if (startFightRoomInfo.roomInfo.MyInfo != null)
  217. {
  218. startFightRoomComponent.readyBtn.SetActive(startFightRoomInfo.roomInfo.MyInfo.state == 0);
  219. startFightRoomComponent.inviteBtn.SetActive(startFightRoomInfo.roomInfo.MyInfo.state == 0);
  220. startFightRoomComponent.uIStartFightRoomPlayerComs[0].playerObj.SetActive(true);
  221. startFightRoomComponent.faceAndVideoObj.SetActive(true);
  222. startFightRoomComponent.uIStartFightRoomPlayerComs[0].readyImage.SetActive(startFightRoomInfo.roomInfo.MyInfo.state == 1);
  223. }
  224. //处理其他玩家信息
  225. for (int i = 1;i < startFightRoomComponent.uIStartFightRoomPlayerComs.Count;i++)
  226. {
  227. startFightRoomComponent.uIStartFightRoomPlayerComs[i].playerObj.SetActive(false);
  228. }
  229. if (startFightRoomInfo.roomInfo.OtherInfo != null && startFightRoomInfo.roomInfo.OtherInfo.Count > 0)
  230. {
  231. for (int i = 0; i < startFightRoomInfo.roomInfo.OtherInfo.Count; i++)
  232. {
  233. var otherPlayInfo = startFightRoomInfo.roomInfo.OtherInfo[i];
  234. if (i >= startFightRoomComponent.uIStartFightRoomPlayerComs.Count - 1)
  235. {
  236. startFightRoomComponent.uIStartFightRoomPlayerComs[i + 1].playerObj.SetActive(false);
  237. }
  238. else
  239. {
  240. startFightRoomComponent.uIStartFightRoomPlayerComs[i + 1].playerObj.SetActive(true);
  241. startFightRoomComponent.uIStartFightRoomPlayerComs[i + 1].readyImage.SetActive(otherPlayInfo.state == 1);
  242. }
  243. }
  244. }
  245. break;
  246. }
  247. case EventType.ReadyStartPush:
  248. {
  249. //开始 倒计时
  250. Log.Error("@@@@@ 倒计时: " + startFightRoomInfo.readyStartTimeCount);
  251. var startFightRoomComponentUI = ui.GetComponent<UIStartFightRoomComponent>();
  252. startFightRoomComponentUI.startTimeCount = startFightRoomInfo.readyStartTimeCount;
  253. startFightRoomComponentUI.startTimer = TimerComponent.Instance.NewRepeatedTimer(ConstValue.fightTimeRefreshTime / 2 + 100, TimerInvokeType.startFightTimeCount, startFightRoomComponentUI);
  254. break;
  255. }
  256. case EventType.GameStartPush:
  257. case EventType.GameDrawCardPush:
  258. case EventType.GameOperationPush:
  259. case EventType.KickPush:
  260. {
  261. //正式开始 发牌
  262. var startFightRoomComponentUI = ui.GetComponent<UIStartFightRoomComponent>();
  263. var myCardInfo = startFightRoomInfo.roomInfo.MyInfo;
  264. var otherCardInfo = startFightRoomInfo.roomInfo.OtherInfo;
  265. #region 其他玩家牌处理
  266. //处理其他玩家信息
  267. for (int i = 1; i < startFightRoomComponentUI.uIStartFightRoomPlayerComs.Count; i++)
  268. {
  269. startFightRoomComponentUI.uIStartFightRoomPlayerComs[i].playerObj.SetActive(false);
  270. }
  271. if (otherCardInfo != null && otherCardInfo.Count > 0)
  272. {
  273. RefreshPlayCardList(0, otherCardInfo, startFightRoomInfo.roomInfo, startFightRoomComponentUI);
  274. }
  275. #endregion
  276. #region 自己牌处理
  277. //处理牌型
  278. //自己牌
  279. if (myCardInfo != null)
  280. {
  281. RefreshPlayCardList(1, new List<PlayerInfo>() { myCardInfo }, startFightRoomInfo.roomInfo, startFightRoomComponentUI);
  282. }
  283. #endregion
  284. break;
  285. }
  286. case EventType.GameDisCardPush:
  287. {
  288. //其他玩家出推送,处理自己的操作
  289. var startFightRoomComponentUI = ui.GetComponent<UIStartFightRoomComponent>();
  290. var roomInfo = startFightRoomInfo.roomInfo;
  291. var myCardInfo = roomInfo.MyInfo;
  292. if (myCardInfo != null && myCardInfo.cardInfo != null && myCardInfo.cardInfo.Acts.Count > 0)
  293. {
  294. startFightRoomComponentUI.operatorObj.SetActive(true);
  295. //处理操作按钮
  296. for (int i = 0;i < startFightRoomComponentUI.operatorObj_btn.Count;i++)
  297. {
  298. startFightRoomComponentUI.operatorObj_btn[i].SetActive(false);
  299. }
  300. for (int i = 0; i < myCardInfo.cardInfo.Acts.Count; i++)
  301. {
  302. if (myCardInfo.cardInfo.Acts[i] == 1)
  303. {
  304. startFightRoomComponentUI.operatorObj_btn[i].SetActive(true);
  305. }
  306. }
  307. //重置所有牌的状态
  308. var parentNode = startFightRoomComponentUI.uIStartFightRoomPlayerComs[0].fightCardNode;
  309. for (int i = 0;i < parentNode.transform.childCount;i++)
  310. {
  311. StartFightCardItem startFightCardItem = parentNode.transform.GetChild(i).gameObject.GetComponent<StartFightCardItem>();
  312. startFightCardItem.GetDown();
  313. }
  314. GameObjectPool.Instance.ClearRealySelCardList();
  315. //抬起
  316. for (int i = 0; i < myCardInfo.cardInfo.ActInfo.Count; i++)
  317. {
  318. //根据服务器信息 弹起响应的牌
  319. DisCardPushWithOperator(parentNode.transform, myCardInfo.cardInfo.ActInfo[i]);
  320. }
  321. //记录当前出的牌
  322. startFightRoomComponentUI.curCardVal = startFightRoomInfo.roomInfo.CurDisCard;
  323. Log.Error("当前出的牌: " + startFightRoomComponentUI.curCardVal);
  324. }
  325. //处理每个回合倒计时
  326. Log.Error("当前自己回合");
  327. startFightRoomComponentUI.startTimeCount = startFightRoomInfo.roomInfo.Time;
  328. if (startFightRoomComponentUI.startTimer > 0)
  329. {
  330. startFightRoomComponentUI.timeCountTxt.text = "";
  331. TimerComponent.Instance?.Remove(ref startFightRoomComponentUI.startTimer);
  332. }
  333. startFightRoomComponentUI.startTimer = TimerComponent.Instance.NewRepeatedTimer(ConstValue.fightTimeRefreshTime / 2 + 100, TimerInvokeType.startFightTimeCount, startFightRoomComponentUI);
  334. //处理当前操作玩家的状态显示
  335. RefreshCenterOperationState(startFightRoomInfo.roomInfo.OpPos, startFightRoomComponentUI);
  336. break;
  337. }
  338. }
  339. }
  340. #region 右上系统部分
  341. public static void OnMenuBtn(this UIStartFightRoomComponent self)
  342. {
  343. self.menuPanel.SetActive(!self.menuPanel.activeInHierarchy);
  344. }
  345. public static async void OnFaceBtn(this UIStartFightRoomComponent self)
  346. {
  347. await SoundManager.Instance.PlaySound("clickbtnsound");
  348. self.facePanel.SetActive(true);
  349. self.LoadChatData(0);
  350. }
  351. public static void OnVideoBtn(this UIStartFightRoomComponent self)
  352. {
  353. }
  354. #endregion
  355. #region 菜单
  356. public static void OnMenuPanelClose(this UIStartFightRoomComponent self)
  357. {
  358. self.menuPanel.SetActive(false);
  359. }
  360. public static async void OnMenuPanelBack(this UIStartFightRoomComponent self)
  361. {
  362. Action<object> myAction = (param) =>
  363. {
  364. int result = (int)param;
  365. if (result == 1)
  366. {
  367. self.ReturnMainUI().Coroutine();
  368. }
  369. };
  370. Dictionary<string,object> dic = new Dictionary<string, object>()
  371. {
  372. { "callback",myAction},
  373. { "title","提示"},
  374. { "content","返回大厅,你的房间仍会保留。"},
  375. { "yesTxt","确定"},
  376. { "cancelTxt","取消"},
  377. };
  378. await SoundManager.Instance.PlaySound("clickbtnsound");
  379. await UIHelper.Create(self.ClientScene(), UIType.UIAlert, UILayer.High, dic);
  380. }
  381. public static void OnMenuPanelQuit(this UIStartFightRoomComponent self)
  382. {
  383. }
  384. public static void OnMenuPanelSetting(this UIStartFightRoomComponent self)
  385. {
  386. }
  387. #endregion
  388. #region 表情
  389. public static async void OnFaceFastToggleBtn(this UIStartFightRoomComponent self,int index)
  390. {
  391. await SoundManager.Instance.PlaySound("clickbtnsound");
  392. self.LoadChatData(index);
  393. }
  394. static async void LoadChatData(this UIStartFightRoomComponent self, int index)
  395. {
  396. self.listFaceGridBg.SetActive(false);
  397. self.listFastGridBg.SetActive(false);
  398. string[] abName = new string[] { "com_bg1", "com_bg2" };
  399. await ResourcesComponentHelper.Instance.LoadSprite(self.ClientScene(), "commonatlas");
  400. Sprite sprite = ResourcesComponentHelper.Instance.GetSprite("commonatlas", abName[0]);
  401. Sprite sprite1 = ResourcesComponentHelper.Instance.GetSprite("commonatlas", abName[1]);
  402. self.fastToggleBtn.GetComponent<UnityEngine.UI.Image>().sprite = index == 0 ? sprite: sprite1;
  403. self.faceToggleBtn.GetComponent<UnityEngine.UI.Image>().sprite = index == 1 ? sprite : sprite1;
  404. self.CleanChatItem(index);
  405. if (index == 0)
  406. {
  407. self.listFastGridBg.SetActive(true);
  408. var startFightRoomInfo = self.ClientScene().GetComponent<StartFightRoomComponment>().GetStartFightRoomInfo();
  409. int sexType = startFightRoomInfo.roomInfo.MyInfo.sex;
  410. var fightConfig = FightChatConfigCategory.Instance.GetAll();
  411. var achievedDic = fightConfig.Where(kvp => kvp.Value.Type == sexType);
  412. foreach (var item in achievedDic)
  413. {
  414. if (GameObjectPool.Instance.chatFastItemPools.Count > 0)
  415. {
  416. GameObject uiFastItem = GameObjectPool.Instance.chatFastItemPools[0];
  417. GameObjectPool.Instance.chatFastItemPools.RemoveAt(0);
  418. uiFastItem.SetActive(true);
  419. uiFastItem.transform.SetParent(self.listFastContent.transform, false);
  420. var txt = uiFastItem.GetComponentInChildren<UnityEngine.UI.Text>();
  421. txt.text = item.Value.Content;
  422. var btn = txt.gameObject.GetComponent<Button>();
  423. btn.onClick.RemoveAllListeners();
  424. btn.onClick.AddListener(async () =>
  425. {
  426. Log.Error("btn click1: " + item.Value.Content + " vedio: " + item.Value.VedioPath);
  427. await SoundManager.Instance.PlaySound(item.Value.VedioPath);
  428. self.facePanel.SetActive(false);
  429. self.playChatObjList[0].SetActive(true);
  430. var playChatTxt = self.playChatObjList[0].GetComponentInChildren<UnityEngine.UI.Text>();
  431. playChatTxt.text = item.Value.Content;
  432. await TimerComponent.Instance.WaitAsync(3000);
  433. self.playChatObjList[0].SetActive(false);
  434. });
  435. }
  436. else
  437. {
  438. var uiFastItem = GameUtil.Instance.InitializeObj(self.gridFastItem);
  439. uiFastItem.gameObject.SetActive(true);
  440. uiFastItem.transform.SetParent(self.listFastContent.transform, false);
  441. var txt = uiFastItem.GetComponentInChildren<UnityEngine.UI.Text>();
  442. txt.text = item.Value.Content;
  443. var btn = txt.gameObject.GetComponent<Button>();
  444. btn.onClick.RemoveAllListeners();
  445. btn.onClick.AddListener(async () =>
  446. {
  447. Log.Error("btn click1: " + item.Value.Content + " vedio: " + item.Value.VedioPath);
  448. await SoundManager.Instance.PlaySound(item.Value.VedioPath);
  449. self.facePanel.SetActive(false);
  450. self.playChatObjList[0].SetActive(true);
  451. var playChatTxt = self.playChatObjList[0].GetComponentInChildren<UnityEngine.UI.Text>();
  452. playChatTxt.text = item.Value.Content;
  453. await TimerComponent.Instance.WaitAsync(3000);
  454. self.playChatObjList[0].SetActive(false);
  455. });
  456. }
  457. }
  458. }
  459. else
  460. {
  461. }
  462. }
  463. static void CleanChatItem(this UIStartFightRoomComponent self,int index)
  464. {
  465. Transform node = null;
  466. List<GameObject> list = null;
  467. if (index == 0)
  468. {
  469. node = self.listFastContent.transform;
  470. list = GameObjectPool.Instance.chatFastItemPools;
  471. }
  472. else
  473. {
  474. node = self.listFaceContent.transform;
  475. list = GameObjectPool.Instance.chatFaceItemPools;
  476. }
  477. for (int i = 0; i < node.childCount; i++)
  478. {
  479. var child = node.GetChild(i);
  480. list.Add(child.gameObject);
  481. child.gameObject.SetActive(false);
  482. }
  483. }
  484. #endregion
  485. #region 邀请以及准备
  486. public static void OnReadyAndInviteBtn(this UIStartFightRoomComponent self, int index)
  487. {
  488. if (index == 0)
  489. {
  490. self.ReadyRes().Coroutine();
  491. }
  492. else
  493. {
  494. //邀请
  495. }
  496. }
  497. #endregion
  498. public static void SetBattery()
  499. {
  500. //var level = SystemInfo.batteryLevel == -1 ? 1 : SystemInfo.batteryLevel;
  501. //batteryLevelImg.fillAmount = level;
  502. //batteryTxt.text = (level * 100).ToString() + "%";
  503. //var isCharging = SystemInfo.batteryStatus == BatteryStatus.Charging;
  504. //charging.gameObject.SetActive(isCharging);
  505. }
  506. static async ETTask ReturnMainUI(this UIStartFightRoomComponent self)
  507. {
  508. var scene = self.ClientScene();
  509. await UIHelper.Remove(scene, UIType.UIStartFightRoom);
  510. var startFightRoomInfo = scene.GetComponent<StartFightRoomComponment>().GetStartFightRoomInfo();
  511. Dictionary<string, object> dic = new Dictionary<string, object>()
  512. {
  513. { "result",1},
  514. { "roomId",startFightRoomInfo.roomInfo.RoomId.ToString()}
  515. };
  516. await UIHelper.Create(scene, UIType.UIMain, UILayer.Mid, dic);
  517. }
  518. static async ETTask ReadyRes(this UIStartFightRoomComponent self)
  519. {
  520. //try
  521. {
  522. var scene = self.ClientScene();
  523. var session = scene.GetComponent<SessionComponent>().Session;
  524. if (session != null)
  525. {
  526. G2C_Ready g2Ready = (G2C_Ready)await session.Call(
  527. new C2G_Ready() { });
  528. if (g2Ready.Error != ErrorCode.ERR_Success)
  529. {
  530. Log.Error($"g2Ready错误...errCode={g2Ready.Error}" + " mess: " + g2Ready.Message);
  531. return;
  532. }
  533. }
  534. }
  535. //catch (Exception e)
  536. //{
  537. // Log.Error($"准备出错...{e.Message}");
  538. //}
  539. }
  540. public static async void OnCloseAsync(this UIStartFightRoomComponent self)
  541. {
  542. await UIHelper.Remove(self.ClientScene(),UIType.UIStartFightRoom);
  543. }
  544. public static async void OnOperatorBtn(this UIStartFightRoomComponent self, int operatorIndex)
  545. {
  546. var startFightRoomInfo = GameUtil.Instance.GetSceneComponent().GetComponent<StartFightRoomComponment>().GetStartFightRoomInfo();
  547. int sexType = startFightRoomInfo.roomInfo.MyInfo.sex;
  548. switch (operatorIndex)
  549. {
  550. case 1:
  551. {
  552. //吃
  553. var list = GameObjectPool.Instance.GetRealySelCardList();
  554. if (list == null || list.Count <= 0 || list.Count > 3)
  555. {
  556. await CommonUtil.Instance.OpenCommonServerMsgPanel("出牌不符合条件,请重新调整 " + string.Join(", ", list));
  557. return;
  558. }
  559. var isSequence = GameUtil.Instance.CheckIsSequence(list);
  560. if (!isSequence)
  561. {
  562. await CommonUtil.Instance.OpenCommonServerMsgPanel("出牌不符合条件,请重新调整 " + string.Join(", ", list));
  563. return;
  564. }
  565. int cardVal = list[0];
  566. Log.Error("当前吃牌请求发送的值: " + cardVal);
  567. Dictionary<string, object> dic = new Dictionary<string, object>()
  568. {
  569. { "OpType",operatorIndex},
  570. { "Card",cardVal}
  571. };
  572. await RequestServerUtil.Instance.OpenRequestServer(OuterMessage.C2G_Operation,dic,async (messageObj, errorCode) =>
  573. {
  574. if (errorCode != ErrorCode.ERR_Success)
  575. {
  576. await CommonUtil.Instance.OpenCommonServerMsgPanel($"操作失败,errCode={errorCode},operatorType={operatorIndex}");
  577. return;
  578. }
  579. string soundStrType = sexType == 0 ? GameSetting.Instance.disCardBoySoundName : GameSetting.Instance.disCardGirlSoundName;
  580. await SoundManager.Instance.PlaySound(string.Concat(soundStrType, "chi"));
  581. });
  582. break;
  583. }
  584. //case 2:
  585. // {
  586. // //碰
  587. // var list = GameObjectPool.Instance.GetRealySelCardList();
  588. // if (list == null || list.Count <= 0 || list.Count > 3)
  589. // {
  590. // await CommonUtil.Instance.OpenCommonServerMsgPanel("出牌不符合条件,请重新调整 " + string.Join(", ", list));
  591. // return;
  592. // }
  593. // var isSequence = GameUtil.Instance.CheckIsSame(list,0);
  594. // if (!isSequence)
  595. // {
  596. // await CommonUtil.Instance.OpenCommonServerMsgPanel("出牌不符合条件,请重新调整 " + string.Join(", ", list));
  597. // return;
  598. // }
  599. // int cardVal = list[0];
  600. // Log.Error("当前碰牌请求发送的值: " + cardVal);
  601. // Dictionary<string, object> dic = new Dictionary<string, object>()
  602. // {
  603. // { "OpType",operatorIndex},
  604. // { "Card",0}
  605. // };
  606. // await RequestServerUtil.Instance.OpenRequestServer(OuterMessage.C2G_Operation, dic, async (messageObj, errorCode) =>
  607. // {
  608. // if (errorCode != ErrorCode.ERR_Success)
  609. // {
  610. // await CommonUtil.Instance.OpenCommonServerMsgPanel($"操作失败,errCode={errorCode},operatorType={operatorIndex}");
  611. // return;
  612. // }
  613. // });
  614. // break;
  615. // }
  616. case 2:
  617. case 3:
  618. case 5:
  619. {
  620. //胡 peng guo
  621. Dictionary<string, object> dic = new Dictionary<string, object>()
  622. {
  623. { "OpType",operatorIndex},
  624. { "Card",0}
  625. };
  626. await RequestServerUtil.Instance.OpenRequestServer(OuterMessage.C2G_Operation, dic, async (messageObj, errorCode) =>
  627. {
  628. if (errorCode != ErrorCode.ERR_Success)
  629. {
  630. await CommonUtil.Instance.OpenCommonServerMsgPanel($"操作失败,errCode={errorCode},operatorType={operatorIndex}");
  631. return;
  632. }
  633. if (operatorIndex == 2 || operatorIndex == 3)
  634. {
  635. string soundStrType = sexType == 0 ? GameSetting.Instance.disCardBoySoundName : GameSetting.Instance.disCardGirlSoundName;
  636. string destSoundStr = operatorIndex == 2? "peng": "hu";
  637. await SoundManager.Instance.PlaySound(string.Concat(soundStrType, destSoundStr));
  638. }
  639. });
  640. break;
  641. }
  642. case 4:
  643. {
  644. //杠
  645. var list = GameObjectPool.Instance.GetRealySelCardList();
  646. if (list == null || list.Count <= 0 || list.Count > 4)
  647. {
  648. await CommonUtil.Instance.OpenCommonServerMsgPanel("出牌不符合条件,请重新调整 " + string.Join(", ", list));
  649. return;
  650. }
  651. var isSequence = GameUtil.Instance.CheckIsSame(list, 1);
  652. if (!isSequence)
  653. {
  654. await CommonUtil.Instance.OpenCommonServerMsgPanel("出牌不符合条件,请重新调整 " + string.Join(", ", list));
  655. return;
  656. }
  657. int cardVal = list[0];
  658. Log.Error("当前杠牌请求发送的值: " + cardVal);
  659. Dictionary<string, object> dic = new Dictionary<string, object>()
  660. {
  661. { "OpType",operatorIndex},
  662. { "Card",cardVal}
  663. };
  664. await RequestServerUtil.Instance.OpenRequestServer(OuterMessage.C2G_Operation, dic, async (messageObj, errorCode) =>
  665. {
  666. if (errorCode != ErrorCode.ERR_Success)
  667. {
  668. await CommonUtil.Instance.OpenCommonServerMsgPanel($"操作失败,errCode={errorCode},operatorType={operatorIndex}");
  669. return;
  670. }
  671. string soundStrType = sexType == 0 ? GameSetting.Instance.disCardBoySoundName : GameSetting.Instance.disCardGirlSoundName;
  672. await SoundManager.Instance.PlaySound(string.Concat(soundStrType, "gang"));
  673. });
  674. break;
  675. }
  676. }
  677. }
  678. public static async void RefreshPlayCardList(int index, List<PlayerInfo> playerInfos,RoomInfo roomInfo, UIStartFightRoomComponent startFightRoomComponentUI)
  679. {
  680. if (index == 0)
  681. {
  682. for (int i = 0; i < playerInfos.Count; i++)
  683. {
  684. var otherPlayInfo = playerInfos[i];
  685. if (i >= startFightRoomComponentUI.uIStartFightRoomPlayerComs.Count - 1)
  686. {
  687. startFightRoomComponentUI.uIStartFightRoomPlayerComs[i + 1].playerObj.SetActive(false);
  688. }
  689. else
  690. {
  691. startFightRoomComponentUI.uIStartFightRoomPlayerComs[i + 1].playerObj.SetActive(true);
  692. startFightRoomComponentUI.uIStartFightRoomPlayerComs[i + 1].readyImage.SetActive(false);
  693. var fightCardParentNode = startFightRoomComponentUI.uIStartFightRoomPlayerComs[i + 1].fightCardNode;
  694. var disCardParentNode = startFightRoomComponentUI.uIStartFightRoomPlayerComs[i + 1].disCardsNode;
  695. CleanCardItemList(fightCardParentNode.transform,0);
  696. for (int p = 0; p < otherPlayInfo.cardInfo.RemainCardsNum; p++)
  697. {
  698. if (GameObjectPool.Instance.fightCardItemPools.Count > 0)
  699. {
  700. GameObject uifightItem = GameObjectPool.Instance.fightCardItemPools[0];
  701. GameObjectPool.Instance.fightCardItemPools.RemoveAt(0);
  702. uifightItem.gameObject.SetActive(true);
  703. uifightItem.transform.SetParent(fightCardParentNode.transform, false);
  704. var sprite = await GameObjectPool.Instance.AcquireSprite(GameSetting.Instance.otherPlayCardSpiteName);
  705. UnityEngine.UI.Image icon = uifightItem.GetComponentInChildren<UnityEngine.UI.Image>();
  706. icon.sprite = sprite;
  707. var btn = icon.gameObject.GetComponent<Button>();
  708. btn.onClick.RemoveAllListeners();
  709. btn.onClick.AddListener(() =>
  710. {
  711. Log.Error("card Click...");
  712. });
  713. }
  714. else
  715. {
  716. int cloneItemIndex = i % 2 == 0? 1 : 0;
  717. var uifightItem = GameUtil.Instance.InitializeObj(GameUtil.Instance.GetCardCloneItem(cloneItemIndex));
  718. uifightItem.SetActive(true);
  719. uifightItem.transform.SetParent(fightCardParentNode.transform, false);
  720. var sprite = await GameObjectPool.Instance.AcquireSprite(GameSetting.Instance.otherPlayCardSpiteName);
  721. UnityEngine.UI.Image icon = uifightItem.GetComponentInChildren<UnityEngine.UI.Image>();
  722. icon.sprite = sprite;
  723. }
  724. }
  725. //已经出过的牌列表
  726. CleanCardItemList(disCardParentNode.transform, 1);
  727. if (otherPlayInfo.cardInfo.DisCards != null)
  728. {
  729. for (int l = 0; l < otherPlayInfo.cardInfo.DisCards.Count; l++)
  730. {
  731. int value = otherPlayInfo.cardInfo.DisCards[l];
  732. if (GameObjectPool.Instance.disCardItemPools.Count > 0)
  733. {
  734. GameObject uiDisItem = GameObjectPool.Instance.disCardItemPools[0];
  735. GameObjectPool.Instance.disCardItemPools.RemoveAt(0);
  736. uiDisItem.gameObject.SetActive(true);
  737. uiDisItem.transform.SetParent(disCardParentNode.transform, false);
  738. var sprite = await GameObjectPool.Instance.AcquireSprite(string.Concat(GameSetting.Instance.selfPlayCardSpiteName, value));
  739. UnityEngine.UI.Image icon = uiDisItem.GetComponentInChildren<UnityEngine.UI.Image>();
  740. icon.sprite = sprite;
  741. }
  742. else
  743. {
  744. int cloneItemIndex = i % 2 == 0 ? 1 : 0;
  745. var uiDisItem = GameUtil.Instance.InitializeObj(GameUtil.Instance.GetCardCloneItem(cloneItemIndex));
  746. uiDisItem.SetActive(true);
  747. uiDisItem.transform.SetParent(disCardParentNode.transform, false);
  748. var sprite = await GameObjectPool.Instance.AcquireSprite(string.Concat(GameSetting.Instance.selfPlayCardSpiteName, value));
  749. UnityEngine.UI.Image icon = uiDisItem.GetComponentInChildren<UnityEngine.UI.Image>();
  750. icon.sprite = sprite;
  751. }
  752. }
  753. }
  754. }
  755. }
  756. }
  757. else
  758. {
  759. var myCardInfo = playerInfos[0];
  760. if (myCardInfo.cardInfo.RemainCards == null)
  761. {
  762. Log.Error("自己牌队列为NULL");
  763. return;
  764. }
  765. var parentNode = startFightRoomComponentUI.uIStartFightRoomPlayerComs[0].fightCardNode;
  766. var disCardParentNode = startFightRoomComponentUI.uIStartFightRoomPlayerComs[0].disCardsNode;
  767. startFightRoomComponentUI.uIStartFightRoomPlayerComs[0].readyImage.SetActive(false);
  768. Log.Error("card数量: " + myCardInfo.cardInfo.RemainCards.Count);
  769. CleanCardItemList(parentNode.transform,0);
  770. for (int i = 0; i < myCardInfo.cardInfo.RemainCards.Count;i++)
  771. {
  772. var value = myCardInfo.cardInfo.RemainCards[i];
  773. if (GameObjectPool.Instance.fightCardItemPools.Count > 0)
  774. {
  775. GameObject uifightItem = GameObjectPool.Instance.fightCardItemPools[0];
  776. StartFightCardItem startFightCardItem = uifightItem.GetComponent<StartFightCardItem>();
  777. if(startFightCardItem == null)
  778. startFightCardItem = uifightItem.AddComponent<StartFightCardItem>();
  779. GameObjectPool.Instance.fightCardItemPools.RemoveAt(0);
  780. uifightItem.gameObject.SetActive(true);
  781. uifightItem.transform.SetParent(parentNode.transform, false);
  782. startFightCardItem.Init(uifightItem.GetComponentInChildren<UnityEngine.UI.Image>(), value,(val)=>
  783. {
  784. if (myCardInfo.state != roomInfo.OpPos || myCardInfo.id != roomInfo.OpId)
  785. {
  786. Log.Error("不是自己回合");
  787. return;
  788. }
  789. DisCardRequest(val, startFightRoomComponentUI).Coroutine();
  790. });
  791. }
  792. else
  793. {
  794. var uifightItem = GameUtil.Instance.InitializeObj(GameUtil.Instance.GetCardCloneItem(0));
  795. StartFightCardItem startFightCardItem = uifightItem.GetComponent<StartFightCardItem>();
  796. if (startFightCardItem == null)
  797. startFightCardItem = uifightItem.AddComponent<StartFightCardItem>();
  798. uifightItem.gameObject.SetActive(true);
  799. uifightItem.transform.SetParent(parentNode.transform, false);
  800. startFightCardItem.Init(uifightItem.GetComponentInChildren<UnityEngine.UI.Image>(), value, (val) =>
  801. {
  802. if (myCardInfo.state != roomInfo.OpPos || myCardInfo.id != roomInfo.OpId)
  803. {
  804. Log.Error("不是自己回合");
  805. return;
  806. }
  807. DisCardRequest(val, startFightRoomComponentUI).Coroutine();
  808. });
  809. }
  810. }
  811. //已经出过的牌列表
  812. CleanCardItemList(disCardParentNode.transform, 1);
  813. if (myCardInfo.cardInfo.DisCards != null)
  814. {
  815. for (int l = 0; l < myCardInfo.cardInfo.DisCards.Count; l++)
  816. {
  817. int value = myCardInfo.cardInfo.DisCards[l];
  818. if (GameObjectPool.Instance.disCardItemPools.Count > 0)
  819. {
  820. GameObject uiDisItem = GameObjectPool.Instance.disCardItemPools[0];
  821. GameObjectPool.Instance.disCardItemPools.RemoveAt(0);
  822. uiDisItem.gameObject.SetActive(true);
  823. uiDisItem.transform.SetParent(disCardParentNode.transform, false);
  824. var sprite = await GameObjectPool.Instance.AcquireSprite(string.Concat(GameSetting.Instance.selfPlayCardSpiteName, value));
  825. UnityEngine.UI.Image icon = uiDisItem.GetComponentInChildren<UnityEngine.UI.Image>();
  826. icon.sprite = sprite;
  827. }
  828. else
  829. {
  830. var uiDisItem = GameUtil.Instance.InitializeObj(GameUtil.Instance.GetCardCloneItem(0));
  831. uiDisItem.SetActive(true);
  832. uiDisItem.transform.SetParent(disCardParentNode.transform, false);
  833. var sprite = await GameObjectPool.Instance.AcquireSprite(string.Concat(GameSetting.Instance.selfPlayCardSpiteName, value));
  834. UnityEngine.UI.Image icon = uiDisItem.GetComponentInChildren<UnityEngine.UI.Image>();
  835. icon.sprite = sprite;
  836. }
  837. }
  838. }
  839. }
  840. }
  841. //刷新中间表示当前操作玩家
  842. public static async void RefreshCenterOperationState(int OpPos, UIStartFightRoomComponent uIStartFightRoomComponent)
  843. {
  844. await ResourcesComponentHelper.Instance.LoadSprite(GameUtil.Instance.GetSceneComponent(), "fightatlas");
  845. string abName = string.Concat("TimePoint",OpPos);
  846. Sprite sprite = ResourcesComponentHelper.Instance.GetSprite("fightatlas", abName);
  847. uIStartFightRoomComponent.shakeDiceImage.sprite = sprite;
  848. }
  849. #region 请求相关
  850. //操作,chi p hu
  851. public static async ETTask OperationCardRequest(int operationType,int firstCard)
  852. {
  853. try
  854. {
  855. var scene = GameUtil.Instance.GetSceneComponent();
  856. var session = scene.GetComponent<SessionComponent>().Session;
  857. if (session != null)
  858. {
  859. G2C_Operation g2Operation = (G2C_Operation)await session.Call(
  860. new C2G_Operation() { OpType = operationType , Card = firstCard });
  861. if (g2Operation.Error != ErrorCode.ERR_Success)
  862. {
  863. Log.Error($"操作 {operationType} 出错...errCode={g2Operation.Error}");
  864. return;
  865. }
  866. //之后走推送
  867. }
  868. }
  869. catch (Exception e)
  870. {
  871. Log.Error($"操作 {operationType} 出错...{e.Message}");
  872. }
  873. }
  874. //出
  875. public static async ETTask DisCardRequest(int disCard, UIStartFightRoomComponent startFightRoomComponentUI)
  876. {
  877. try
  878. {
  879. var scene = GameUtil.Instance.GetSceneComponent();
  880. var session = scene.GetComponent<SessionComponent>().Session;
  881. if (session != null)
  882. {
  883. G2C_DisCard g2DisCard = (G2C_DisCard)await session.Call(
  884. new C2G_DisCard() { Card = disCard });
  885. if (g2DisCard.Error != ErrorCode.ERR_Success)
  886. {
  887. await CommonUtil.Instance.OpenCommonServerMsgPanel($"出牌{disCard} 出错...errCode={g2DisCard.Error}");
  888. return;
  889. }
  890. var startFightRoomInfo = GameUtil.Instance.GetSceneComponent().GetComponent<StartFightRoomComponment>().GetStartFightRoomInfo();
  891. int sexType = startFightRoomInfo.roomInfo.MyInfo.sex;
  892. string soundStrType = sexType == 0 ? GameSetting.Instance.disCardBoySoundName : GameSetting.Instance.disCardGirlSoundName;
  893. await SoundManager.Instance.PlaySound(string.Concat(soundStrType, disCard));
  894. //出牌之后 暂停回合倒计时
  895. if (startFightRoomComponentUI.startTimer > 0)
  896. {
  897. startFightRoomComponentUI.timeCountTxt.text = "";
  898. TimerComponent.Instance?.Remove(ref startFightRoomComponentUI.startTimer);
  899. }
  900. startFightRoomComponentUI.shakeDiceImage.sprite = null;
  901. //之后走推送
  902. }
  903. }
  904. catch (Exception e)
  905. {
  906. Log.Error($"操作 {disCard} 出错...{e.Message}");
  907. }
  908. }
  909. #endregion
  910. public static void CleanCardItemList(Transform node,int index)
  911. {
  912. List<GameObject> tempList = index == 0? GameObjectPool.Instance.fightCardItemPools: GameObjectPool.Instance.disCardItemPools;
  913. for (int i = 0;i < node.childCount;i++)
  914. {
  915. var child = node.GetChild(i);
  916. tempList.Add(child.gameObject);
  917. child.gameObject.SetActive(false);
  918. }
  919. }
  920. public static void DisCardPushWithOperator(Transform node, ActInfo actInfo)
  921. {
  922. ActInfoType actInfoType = (ActInfoType)actInfo.Type;
  923. switch (actInfoType)
  924. {
  925. case ActInfoType.LightPole:
  926. case ActInfoType.BackPole:
  927. case ActInfoType.DarkPole:
  928. {
  929. var cardVal = actInfo.Card;
  930. int loopIndex = 1;
  931. for (int i = 0; i < node.childCount; i++)
  932. {
  933. if (loopIndex > 3)
  934. {
  935. break;
  936. }
  937. var child = node.GetChild(i);
  938. StartFightCardItem startFightCardItem = child.gameObject.GetComponent<StartFightCardItem>();
  939. if (startFightCardItem.val == cardVal)
  940. {
  941. startFightCardItem.StandUp();
  942. }
  943. loopIndex++;
  944. }
  945. //将出的牌添加到操作列表里面去
  946. GameObjectPool.Instance.OperatoRarealySelCardList(0, cardVal);
  947. break;
  948. }
  949. case ActInfoType.Peng:
  950. {
  951. var cardVal = actInfo.Card;
  952. int loopIndex = 1;
  953. for (int i = 0; i < node.childCount; i++)
  954. {
  955. if (loopIndex >= 3)
  956. {
  957. break;
  958. }
  959. var child = node.GetChild(i);
  960. StartFightCardItem startFightCardItem = child.gameObject.GetComponent<StartFightCardItem>();
  961. if (startFightCardItem.val == cardVal)
  962. {
  963. startFightCardItem.StandUp();
  964. }
  965. loopIndex++;
  966. }
  967. GameObjectPool.Instance.OperatoRarealySelCardList(0, cardVal);
  968. break;
  969. }
  970. case ActInfoType.Chi:
  971. {
  972. var cardVal = actInfo.Card;
  973. int loopIndex = 1;
  974. for (int i = 0; i < node.childCount; i++)
  975. {
  976. if (loopIndex >= 3)
  977. {
  978. break;
  979. }
  980. var child = node.GetChild(i);
  981. StartFightCardItem startFightCardItem = child.gameObject.GetComponent<StartFightCardItem>();
  982. if (startFightCardItem.val == cardVal + 1)
  983. {
  984. startFightCardItem.StandUp();
  985. }
  986. cardVal = startFightCardItem.val;
  987. loopIndex++;
  988. }
  989. GameObjectPool.Instance.OperatoRarealySelCardList(0, cardVal);
  990. break;
  991. }
  992. }
  993. }
  994. [ObjectSystem]
  995. public class UIStartFightRoomComponentDestroySystem : DestroySystem<UIStartFightRoomComponent>
  996. {
  997. protected override void Destroy(UIStartFightRoomComponent self)
  998. {
  999. TimerComponent.Instance?.Remove(ref self.RepeatedTimer);
  1000. CommonBridge.Instance.Clear();
  1001. }
  1002. }
  1003. }
  1004. }