SkillSelectPanel.cs 50 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Core.Audio;
  5. using Core.Event.Event;
  6. using Core.Language;
  7. using Excel2Json;
  8. using Fort23.Core;
  9. using Fort23.UTool;
  10. using GameLogic.Combat;
  11. using GameLogic.Combat.CombatTool;
  12. using GameLogic.Hero;
  13. using UnityEngine;
  14. using UnityEngine.EventSystems;
  15. using UnityEngine.UI;
  16. namespace Fort23.Mono
  17. {
  18. [UIBinding(prefab = "SkillSelectPanel")]
  19. public partial class SkillSelectPanel : UIPanel, IScrollListContent
  20. {
  21. private bool _isSelectSkill;
  22. public List<SkillKongWidget> allKongSkill = new List<SkillKongWidget>();
  23. List<WuXingGongFaWidget> _wuXingGongFaWidgets = new List<WuXingGongFaWidget>();
  24. private SkillInfo selectSkillConfig;
  25. private bool isAlter;
  26. private int type1 = 0;
  27. private int type2 = 0;
  28. public SkillInfo[] allUseSkill;
  29. private int currenRoadSkilId;
  30. private SkillInfo currentOnclickskillWidget;
  31. /// <summary>
  32. /// 1.执行升级逻辑 2.执行更换逻辑
  33. /// </summary>
  34. private int infoType = 1;
  35. SkillInfo currentSelectedSkill;
  36. public static async CTask<SkillSelectPanel> OpenSkillSelectPanel()
  37. {
  38. CombatDrive.Instance.CombatController.isUpdate = false;
  39. SkillSelectPanel skillSelectPanel =
  40. await UIManager.Instance.LoadAndOpenPanel<SkillSelectPanel>(null, UILayer.Middle);
  41. return skillSelectPanel;
  42. }
  43. public async override CTask GetFocus()
  44. {
  45. if (infoType == 1)
  46. {
  47. await AppBarPanel.OpenPanel(this);
  48. }
  49. else if (infoType == 2)
  50. {
  51. AppBarPanel.ClosePanel();
  52. }
  53. TitlePanel.ClosePanel();
  54. // AppBarPanel.OpenPanel(this);
  55. await base.GetFocus();
  56. if (PlayerGuideManager.Instance.GuideIsCanDo(4, 1))
  57. {
  58. PlayerGuideManager.Instance.NextGuide();
  59. }
  60. }
  61. public override CTask LoseFocus()
  62. {
  63. // AppBarPanel.ClosePanel();
  64. return base.LoseFocus();
  65. }
  66. private void Init()
  67. {
  68. isAddStack = true;
  69. IsShowAppBar = true;
  70. }
  71. protected override void AddEvent()
  72. {
  73. }
  74. protected override void DelEvent()
  75. {
  76. }
  77. public override CTask<bool> AsyncInit(object[] uiData)
  78. {
  79. allUseSkill = PlayerManager.Instance.GongFaControl.allUseSkill.ToArray();
  80. currenRoadSkilId = PlayerManager.Instance.myHero.TaoismSkillId;
  81. UpdateSkillWidget();
  82. UpdateRoad();
  83. // CloseSelect();
  84. return base.AsyncInit(uiData);
  85. }
  86. public override void AddButtonEvent()
  87. {
  88. Btn_Help.onClick.AddListener(() => { HelpTipPanel.OpenTipMessagePanel(10788); });
  89. Btn_OneKyChange.onClick.AddListener(() =>
  90. {
  91. for (var i = 0; i < allUseSkill.Length; i++)
  92. {
  93. allUseSkill[i] = null;
  94. }
  95. SkillInfo[] skills = new SkillInfo[5];
  96. List<SkillInfo> allSkill = PlayerManager.Instance.GongFaControl.allSkill.ToList();
  97. for (var i = 0; i < allSkill.Count; i++)
  98. {
  99. //金
  100. if (allSkill[i].skillConfig.attribute == 1)
  101. {
  102. if (skills[0] == null || skills[0].skillConfig.level > allSkill[i].skillConfig.level)
  103. {
  104. skills[0] = allSkill[i];
  105. }
  106. }
  107. //木
  108. if (allSkill[i].skillConfig.attribute == 2)
  109. {
  110. if (skills[1] == null || skills[1].skillConfig.level > allSkill[i].skillConfig.level)
  111. {
  112. skills[1] = allSkill[i];
  113. }
  114. }
  115. //水
  116. if (allSkill[i].skillConfig.attribute == 4)
  117. {
  118. if (skills[2] == null || skills[2].skillConfig.level > allSkill[i].skillConfig.level)
  119. {
  120. skills[2] = allSkill[i];
  121. }
  122. }
  123. //火
  124. if (allSkill[i].skillConfig.attribute == 8)
  125. {
  126. if (skills[3] == null || skills[3].skillConfig.level > allSkill[i].skillConfig.level)
  127. {
  128. skills[3] = allSkill[i];
  129. }
  130. }
  131. //土
  132. if (allSkill[i].skillConfig.attribute == 16)
  133. {
  134. if (skills[4] == null || skills[4].skillConfig.level > allSkill[i].skillConfig.level)
  135. {
  136. skills[4] = allSkill[i];
  137. }
  138. }
  139. }
  140. for (var i = 0; i < allKongSkill.Count; i++)
  141. {
  142. allKongSkill[i].InitWidget(allKongSkill[i].index, this);
  143. }
  144. for (var i = 0; i < indexList.Count - 1; i++)
  145. {
  146. if (skills[i] == null)
  147. continue;
  148. if (!IsMainGongFaChange(skills[i].skillConfig))
  149. continue;
  150. if (!IsPassiveGongFaChange(skills[i].skillConfig))
  151. continue;
  152. allKongSkill[indexList[i][0]].SetSKill(skills[i]);
  153. allUseSkill[indexList[i][0]] = skills[i];
  154. }
  155. isAlter = true;
  156. UpdateSkillWidget();
  157. ChangeFuZhuYingXiang();
  158. BaoChun();
  159. RedDotManager.Instance.TarGetRedDotUpDate(14);
  160. });
  161. Btn_ChangeOk.onClick.AddListener(() =>
  162. {
  163. ChangeInfoType(1);
  164. if (isAlter)
  165. {
  166. PlayerManager.Instance.GongFaControl.SaveUseSkill(allUseSkill);
  167. PlayerManager.Instance.GongFaControl.SetTaoismSkillIndex(currenRoadSkilId);
  168. PlayerManager.Instance.myHero.heroData.TaoismSkillId = currenRoadSkilId;
  169. AccountFileInfo.Instance.SavePlayerData();
  170. }
  171. isAlter = false;
  172. });
  173. Btn_Info.onClick.AddListener(async () =>
  174. {
  175. if (currentSelectedSkill != null)
  176. {
  177. GongFaUpgradePanel gongFaUpgradePanel = await GongFaUpgradePanel.Open(currentSelectedSkill);
  178. await gongFaUpgradePanel.UIClosed();
  179. Sort(type1, type2);
  180. }
  181. });
  182. Btn_ChangeRoad.onClick.AddListener(() =>
  183. {
  184. SkillRoadSelecPanel.OpenPanel(currenRoadSkilId, (skillId) =>
  185. {
  186. if (skillId != currenRoadSkilId && skillId != 0)
  187. {
  188. currenRoadSkilId = skillId;
  189. isAlter = true;
  190. UpdateRoad();
  191. }
  192. });
  193. });
  194. Btn_Setting.onClick.AddListener(() =>
  195. {
  196. ChangeInfoType(2);
  197. if (PlayerGuideManager.Instance.GuideIsCanDo(4, 4))
  198. {
  199. PlayerGuideManager.Instance.NextGuide();
  200. }
  201. });
  202. Btn_Jin.onClick.AddListener(() =>
  203. {
  204. if (type1 == 5)
  205. {
  206. return;
  207. }
  208. if (type2 == 1)
  209. {
  210. type2 = 0;
  211. }
  212. else
  213. {
  214. type2 = 1;
  215. }
  216. Sort(type1, type2);
  217. });
  218. Btn_Mu.onClick.AddListener(() =>
  219. {
  220. if (type1 == 5)
  221. {
  222. return;
  223. }
  224. if (type2 == 4)
  225. {
  226. type2 = 0;
  227. }
  228. else
  229. {
  230. type2 = 4;
  231. }
  232. Sort(type1, type2);
  233. });
  234. Btn_Shui.onClick.AddListener(() =>
  235. {
  236. if (type1 == 5)
  237. {
  238. return;
  239. }
  240. if (type2 == 2)
  241. {
  242. type2 = 0;
  243. }
  244. else
  245. {
  246. type2 = 2;
  247. }
  248. Sort(type1, type2);
  249. });
  250. Btn_Huo.onClick.AddListener(() =>
  251. {
  252. if (type1 == 5)
  253. {
  254. return;
  255. }
  256. if (type2 == 8)
  257. {
  258. type2 = 0;
  259. }
  260. else
  261. {
  262. type2 = 8;
  263. }
  264. Sort(type1, type2);
  265. });
  266. Btn_Tu.onClick.AddListener(() =>
  267. {
  268. if (type1 == 5)
  269. {
  270. return;
  271. }
  272. if (type2 == 16)
  273. {
  274. type2 = 0;
  275. }
  276. else
  277. {
  278. type2 = 16;
  279. }
  280. Sort(type1, type2);
  281. });
  282. Btn_All.onClick.AddListener(() =>
  283. {
  284. type1 = 0;
  285. Sort(type1, type2);
  286. });
  287. Btn_ZhuDong.onClick.AddListener(() =>
  288. {
  289. type1 = 1;
  290. Sort(type1, type2);
  291. });
  292. Btn_FuZu.onClick.AddListener(() =>
  293. {
  294. type1 = 2;
  295. Sort(type1, type2);
  296. });
  297. Btn_BeiDong.onClick.AddListener(() =>
  298. {
  299. type1 = 5;
  300. Sort(type1, type2);
  301. });
  302. guanbi.onClick.AddListener(() =>
  303. {
  304. if (PlayerGuideManager.Instance.GuideIsCanDo(4, 10))
  305. {
  306. PlayerGuideManager.Instance.NextGuide();
  307. }
  308. if (infoType == 2)
  309. {
  310. ChangeInfoType(1);
  311. currenRoadSkilId = PlayerManager.Instance.myHero.TaoismSkillId;
  312. allUseSkill = PlayerManager.Instance.GongFaControl.allUseSkill.ToArray();
  313. for (var i = 0; i < allKongSkill.Count; i++)
  314. {
  315. allKongSkill[i].InitWidget(allKongSkill[i].index, this);
  316. allKongSkill[i].SetSKill(allUseSkill[allKongSkill[i].index]);
  317. }
  318. UpdateSkillWidget();
  319. UpdateRoad();
  320. }
  321. else
  322. {
  323. // UIManager.Instance.HideUIUIPanel(this);
  324. }
  325. AudioManager.Instance.PlayAudio("ui_fanhui.wav");
  326. });
  327. Btn_RemoveGongFa.onClick.AddListener(() =>
  328. {
  329. // PlayerManager.Instance.GongFaControl.RemoveSkillInfo(dianjiSkillKongWidget.index);
  330. allUseSkill[dianjiSkillKongWidget.index] = null;
  331. dianjiSkillKongWidget.Cleared();
  332. isAlter = true;
  333. UpdateSkillWidget();
  334. CloseSelect();
  335. BaoChun();
  336. showSkillInfo.Sort(Sort);
  337. Content.Init(this, showSkillInfo.Count);
  338. AudioManager.Instance.PlayAudio("ui_xiazhenggongfa.wav");
  339. RedDotManager.Instance.TarGetRedDotUpDate(14);
  340. });
  341. Sv.onValueChanged.AddListener((s) =>
  342. {
  343. if (currentSelectedSkill == null)
  344. {
  345. return;
  346. }
  347. Btn_Info.transform.SetAsLastSibling();
  348. });
  349. }
  350. private void UpdateSaixuanBtnState()
  351. {
  352. Btn_Jin.transform.IsGray((type2 != 1 && type2 != 0) || type1 == 2);
  353. Btn_Mu.transform.IsGray((type2 != 4 && type2 != 0) || type1 == 2);
  354. Btn_Shui.transform.IsGray((type2 != 2 && type2 != 0) || type1 == 2);
  355. Btn_Huo.transform.IsGray((type2 != 8 && type2 != 0) || type1 == 2);
  356. Btn_Tu.transform.IsGray((type2 != 16 && type2 != 0) || type1 == 2);
  357. }
  358. private bool isDraging = false;
  359. //拖动得技能
  360. private SkillKongWidget nowSkillKongWidget;
  361. //进入的技能
  362. private SkillKongWidget nowInSkillKongWidget;
  363. //拖动中技能
  364. private SkillKongWidget nowSkillKongWidget1;
  365. private async void SkillBeginDragHandle(PointerEventData pointerEventData, ItemWidgetBasic itemWidgetBasic)
  366. {
  367. LogTool.Log("开始拖动");
  368. if (infoType == 1)
  369. {
  370. return;
  371. }
  372. if (dianjiSkillKongWidget != null)
  373. {
  374. return;
  375. }
  376. SkillKongWidget skillKongWidget1 = itemWidgetBasic as SkillKongWidget;
  377. if (skillKongWidget1.SkillInfo == null)
  378. return;
  379. isDraging = true;
  380. //记录当前选中的格子
  381. nowSkillKongWidget = skillKongWidget1;
  382. nowSkillKongWidget.Translucency();
  383. dianjiSkillKongWidget = skillKongWidget1;
  384. SelectSkill(nowSkillKongWidget.SkillInfo, false, false);
  385. nowSkillKongWidget1 = await UIManager.Instance.CreateGComponentForObject<SkillKongWidget>(
  386. SkillKongWidget1game.gameObject,
  387. null, transform.GetComponent<RectTransform>(), uiData: new object[] { false, false },
  388. isInstance: false);
  389. nowSkillKongWidget1.own.SetActive(true);
  390. nowSkillKongWidget1.InitWidget(nowSkillKongWidget.index, this);
  391. nowSkillKongWidget1.SetSKill(skillKongWidget1.SkillInfo);
  392. }
  393. private void SkillDragHandle(PointerEventData pointerEventData, ItemWidgetBasic itemWidgetBasic)
  394. {
  395. LogTool.Log("拖动中");
  396. if (nowSkillKongWidget1 == null)
  397. return;
  398. Vector2 localPos;
  399. RectTransformUtility.ScreenPointToLocalPointInRectangle(
  400. transform.GetComponent<RectTransform>(),
  401. pointerEventData.position,
  402. pointerEventData.pressEventCamera,
  403. out localPos);
  404. nowSkillKongWidget1.transform.localPosition = localPos;
  405. }
  406. private void SkillEndDragHandle(PointerEventData pointerEventData, ItemWidgetBasic itemWidgetBasic)
  407. {
  408. LogTool.Log("结束拖动");
  409. isDraging = false;
  410. nowSkillKongWidget?.Opaque();
  411. if (nowInSkillKongWidget == null)
  412. {
  413. CloseSelect();
  414. }
  415. nowInSkillKongWidget?.OnPointerClick();
  416. nowSkillKongWidget = null;
  417. if (nowInSkillKongWidget != null)
  418. {
  419. nowInSkillKongWidget.transform.localScale = Vector3.one;
  420. }
  421. nowInSkillKongWidget = null;
  422. if (nowSkillKongWidget1 == null)
  423. return;
  424. nowSkillKongWidget1.own.SetActive(false);
  425. nowSkillKongWidget1 = null;
  426. }
  427. private void SkillPointEnterHandle(ItemWidgetBasic itemWidgetBasic)
  428. {
  429. LogTool.Log("进入");
  430. if (isDraging)
  431. {
  432. nowInSkillKongWidget = itemWidgetBasic as SkillKongWidget;
  433. nowInSkillKongWidget.transform.localScale = Vector3.one * 1.1f;
  434. return;
  435. }
  436. }
  437. private void SkillPointExitHandle(ItemWidgetBasic itemWidgetBasic)
  438. {
  439. LogTool.Log("离开");
  440. if (isDraging)
  441. {
  442. if (nowInSkillKongWidget != null)
  443. nowInSkillKongWidget.transform.localScale = Vector3.one;
  444. nowInSkillKongWidget = null;
  445. return;
  446. }
  447. }
  448. private void UpdateRoad()
  449. {
  450. if (currenRoadSkilId != 0)
  451. {
  452. SkillConfig skillConfig = ConfigComponent.Instance.Get<SkillConfig>(currenRoadSkilId);
  453. Text_RoadName.text = LanguageManager.Instance.Text(skillConfig.name);
  454. }
  455. else
  456. {
  457. Text_RoadName.text = "未选择";
  458. }
  459. //
  460. }
  461. private void BaoChun()
  462. {
  463. // ChangeInfoType(1);
  464. // if (isAlter)
  465. {
  466. PlayerManager.Instance.GongFaControl.SaveUseSkill(allUseSkill);
  467. PlayerManager.Instance.GongFaControl.SetTaoismSkillIndex(currenRoadSkilId);
  468. PlayerManager.Instance.myHero.heroData.TaoismSkillId = currenRoadSkilId;
  469. AccountFileInfo.Instance.SavePlayerData();
  470. }
  471. isAlter = false;
  472. }
  473. private void ChangeInfoType(int type)
  474. {
  475. if (type == 1)
  476. {
  477. GongFaSettingRoot.SetActive(false);
  478. infoType = 1;
  479. Btn_Setting.gameObject.SetActive(true);
  480. CloseSelect();
  481. AppBarPanel.OpenPanel(this);
  482. // Text_FuZhuGongFaCount.transform.parent.gameObject.SetActive(false);
  483. }
  484. else if (type == 2)
  485. {
  486. GongFaSettingRoot.SetActive(true);
  487. infoType = 2;
  488. allUseSkill = PlayerManager.Instance.GongFaControl.allUseSkill.ToArray();
  489. Btn_Setting.gameObject.SetActive(false);
  490. AppBarPanel.ClosePanel();
  491. // Text_FuZhuGongFaCount.transform.parent.gameObject.SetActive(true);
  492. }
  493. }
  494. List<SkillInfo> showSkillInfo = new List<SkillInfo>();
  495. List<List<int>> indexList = new List<List<int>>()
  496. {
  497. new List<int>() { 9, 8, 7 }, //金
  498. new List<int>() { 1, 0, 9 }, //木
  499. new List<int>() { 7, 6, 5 }, //水
  500. new List<int>() { 5, 4, 3 }, //火
  501. new List<int>() { 7, 6, 5 }, //土
  502. new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, //辅助
  503. };
  504. private void Sort(int type1, int type2)
  505. {
  506. //先排序类型在排属性
  507. if (type1 == 0)
  508. {
  509. BtnRoot.ClickWidget(Btn_All.GetComponent<UIToggleWidgetBasic>());
  510. }
  511. else if (type1 == 1)
  512. {
  513. BtnRoot.ClickWidget(Btn_ZhuDong.GetComponent<UIToggleWidgetBasic>());
  514. }
  515. else if (type1 == 2)
  516. {
  517. BtnRoot.ClickWidget(Btn_FuZu.GetComponent<UIToggleWidgetBasic>());
  518. type2 = 0;
  519. }
  520. else if (type1 == 5)
  521. {
  522. BtnRoot.ClickWidget(Btn_BeiDong.GetComponent<UIToggleWidgetBasic>());
  523. }
  524. // if (type2 == 0)
  525. // {
  526. // Icon_Select.gameObject.SetActive(false);
  527. // }
  528. // else if (type2 == 1)
  529. // {
  530. // Icon_Select.transform.position = Btn_Jin.transform.position;
  531. // Icon_Select.gameObject.SetActive(true);
  532. // }
  533. // else if (type2 == 2)
  534. // {
  535. // Icon_Select.transform.position = Btn_Mu.transform.position;
  536. // Icon_Select.gameObject.SetActive(true);
  537. // }
  538. // else if (type2 == 4)
  539. // {
  540. // Icon_Select.transform.position = Btn_Shui.transform.position;
  541. // Icon_Select.gameObject.SetActive(true);
  542. // }
  543. // else if (type2 == 8)
  544. // {
  545. // Icon_Select.transform.position = Btn_Huo.transform.position;
  546. // Icon_Select.gameObject.SetActive(true);
  547. // }
  548. // else if (type2 == 16)
  549. // {
  550. // Icon_Select.transform.position = Btn_Tu.transform.position;
  551. // Icon_Select.gameObject.SetActive(true);
  552. // }
  553. UpdateSaixuanBtnState();
  554. //0代表全部
  555. if (type1 == 0)
  556. {
  557. showSkillInfo = PlayerManager.Instance.GongFaControl.allSkill.ToList();
  558. }
  559. else
  560. {
  561. showSkillInfo = PlayerManager.Instance.GongFaControl.allSkill
  562. .Where(s => s.skillConfig.SkillType == type1).ToList();
  563. }
  564. if (type2 == 0)
  565. {
  566. }
  567. else
  568. {
  569. showSkillInfo = showSkillInfo.Where(s => s.skillConfig.attribute == type2).ToList();
  570. }
  571. CloseSelect();
  572. showSkillInfo.Sort(Sort);
  573. int startIndex = 0;
  574. for (int i = 0; i < showSkillInfo.Count; i++)
  575. {
  576. if (showSkillInfo[i] == currentOnclickskillWidget)
  577. {
  578. startIndex = i;
  579. }
  580. }
  581. Content.Init(this, showSkillInfo.Count,startIndex);
  582. }
  583. private int Sort(SkillInfo type1, SkillInfo type2)
  584. {
  585. if (allUseSkill.Contains(type1) && !allUseSkill.Contains(type2))
  586. {
  587. return -1;
  588. }
  589. if (!allUseSkill.Contains(type1) && allUseSkill.Contains(type2))
  590. {
  591. return 1;
  592. }
  593. return type1.skillConfig.SkillType != type2.skillConfig.SkillType
  594. ? type1.skillConfig.SkillType.CompareTo(type2.skillConfig.SkillType)
  595. : type1.SkillData.star != type2.SkillData.star
  596. ? type2.SkillData.star.CompareTo(type1.SkillData.star)
  597. : type1.skillConfig.ID.CompareTo(type2.skillConfig.ID);
  598. return 0;
  599. }
  600. public override async CTask Open()
  601. {
  602. await base.Open();
  603. foreach (var skillKongWidget in allKongSkill)
  604. {
  605. UIManager.Instance.DormancyGComponent(skillKongWidget);
  606. }
  607. allKongSkill.Clear();
  608. Sort(type1, type2);
  609. for (int i = 0; i < 5; i++)
  610. {
  611. double hd = i * 72 * Math.PI / 180f;
  612. double a = Math.Cos(hd);
  613. double b = -Math.Sin(hd);
  614. double c = Math.Sin(hd);
  615. double d = a;
  616. double x = a * 0 + b * 116;
  617. double y = c * 0 + d * 116;
  618. int index = i;
  619. WuXingGongFaWidget widget =
  620. await UIManager.Instance.CreateGComponent<WuXingGongFaWidget>(null, root: WuXingGongFaRoot,
  621. poolName: "132");
  622. widget.transform.anchoredPosition = new Vector2((float)x, (float)y);
  623. widget.ShowWidget(index);
  624. // widget.transform.localScale = new Vector3(1, 1.8f, 1.8f);
  625. _wuXingGongFaWidgets.Add(widget);
  626. }
  627. for (int i = 0; i < 10; i++)
  628. {
  629. int index = i;
  630. double hd = (36 * i) * Math.PI / 180f;
  631. double a = Math.Cos(hd);
  632. double b = -Math.Sin(hd);
  633. double c = Math.Sin(hd);
  634. double d = a;
  635. double x = a * 0 + b * 190;
  636. double y = c * 0 + d * 190;
  637. Vector2 pos = new Vector2((float)x, (float)y);
  638. SkillKongWidget skillKongWidget = await UIManager.Instance.CreateGComponentForObject<SkillKongWidget>(
  639. kongdongs.gameObject,
  640. null, SkillKongWeiRoot, uiData: new object[] { true, true },
  641. isInstance: true);
  642. skillKongWidget.InitWidget(index, this);
  643. skillKongWidget.SetSKill(allUseSkill[index]);
  644. skillKongWidget.transform.anchoredPosition = pos;
  645. skillKongWidget.OnClick = OnClickSkillKongWidget;
  646. skillKongWidget.onDragStart = SkillBeginDragHandle;
  647. skillKongWidget.onDrag = SkillDragHandle;
  648. skillKongWidget.onDragEnd = SkillEndDragHandle;
  649. skillKongWidget.onPointerEnter = SkillPointEnterHandle;
  650. skillKongWidget.onPointerExit = SkillPointExitHandle;
  651. allKongSkill.Add(skillKongWidget);
  652. }
  653. ChangeFuZhuYingXiang();
  654. }
  655. private SkillKongWidget dianjiSkillKongWidget;
  656. private async void OnClickSkillKongWidget(ItemWidgetBasic obj)
  657. {
  658. if (PlayerGuideManager.Instance.GuideIsCanDo(4, 7))
  659. {
  660. PlayerGuideManager.Instance.NextGuide();
  661. }
  662. if (PlayerGuideManager.Instance.GuideIsCanDo(4, 9))
  663. {
  664. PlayerGuideManager.Instance.NextGuide();
  665. }
  666. SkillKongWidget skillKongWidget = obj as SkillKongWidget;
  667. if (infoType == 1)
  668. {
  669. if (skillKongWidget.SkillInfo == null)
  670. return;
  671. GongFaUpgradePanel gongFaUpgradePanel = await GongFaUpgradePanel.Open(skillKongWidget.SkillInfo);
  672. await gongFaUpgradePanel.UIClosed();
  673. Sort(type1, type2);
  674. return;
  675. }
  676. Btn_Info.GetComponent<RectTransform>().sizeDelta = new Vector2(72, 30);
  677. Btn_Info.transform.SetParent(transform);
  678. Btn_Info.gameObject.SetActive(false);
  679. currentSelectedSkill = skillKongWidget.SkillInfo;
  680. // SkillKongWidget skillKongWidget = obj as SkillKongWidget;
  681. if (skillKongWidget.SkillInfo == null && dianjiSkillKongWidget == null && selectSkillConfig == null)
  682. {
  683. return;
  684. }
  685. //直接上功法
  686. if (skillKongWidget.SkillInfo == null && dianjiSkillKongWidget == null && selectSkillConfig != null)
  687. {
  688. if (!IsCurrentPosUse(selectSkillConfig, skillKongWidget))
  689. {
  690. CloseSelect();
  691. return;
  692. }
  693. if (selectSkillConfig.skillConfig.SkillType == 1)
  694. {
  695. if (!IsMainGongFaChange(selectSkillConfig.skillConfig))
  696. {
  697. TipMessagePanel.OpenTipMessagePanel("主动功法已经上满");
  698. CloseSelect();
  699. return;
  700. }
  701. }
  702. if (selectSkillConfig.skillConfig.SkillType == 2)
  703. {
  704. if (!IsPassiveGongFaChange(selectSkillConfig.skillConfig))
  705. {
  706. TipMessagePanel.OpenTipMessagePanel("被动功法已经上满");
  707. CloseSelect();
  708. return;
  709. }
  710. }
  711. isAlter = true;
  712. skillKongWidget.SetSKill(selectSkillConfig);
  713. allUseSkill[skillKongWidget.index] = selectSkillConfig;
  714. if (selectSkillConfig.skillConfig.SkillType == 1)
  715. {
  716. AudioManager.Instance.PlayAudio("ui_xiazhenggongfa.wav");
  717. }
  718. else if (selectSkillConfig.skillConfig.SkillType == 2)
  719. {
  720. AudioManager.Instance.PlayAudio("ui_fzgf_yx.wav");
  721. }
  722. CloseSelect();
  723. BaoChun();
  724. RedDotManager.Instance.TarGetRedDotUpDate(14);
  725. showSkillInfo.Sort(Sort);
  726. Content.Init(this, showSkillInfo.Count);
  727. }
  728. //替换功法
  729. else if (skillKongWidget.SkillInfo != null && dianjiSkillKongWidget == null && selectSkillConfig != null)
  730. {
  731. if (!IsPassiveGongFaChange(selectSkillConfig.skillConfig) &&
  732. allUseSkill[skillKongWidget.SkillInfo.index].skillConfig.SkillType != 2)
  733. {
  734. TipMessagePanel.OpenTipMessagePanel("被动功法已经上满");
  735. CloseSelect();
  736. return;
  737. }
  738. if (!IsMainGongFaChange(selectSkillConfig.skillConfig) &&
  739. allUseSkill[skillKongWidget.SkillInfo.index].skillConfig.SkillType != 1)
  740. {
  741. TipMessagePanel.OpenTipMessagePanel("主动功法已经上满");
  742. CloseSelect();
  743. return;
  744. }
  745. if (!IsCurrentPosUse(selectSkillConfig, skillKongWidget))
  746. {
  747. CloseSelect();
  748. return;
  749. }
  750. isAlter = true;
  751. allUseSkill[skillKongWidget.SkillInfo.index] = null;
  752. skillKongWidget.SetSKill(selectSkillConfig);
  753. allUseSkill[skillKongWidget.index] = selectSkillConfig;
  754. skillKongWidget.SetSKill(selectSkillConfig);
  755. if (selectSkillConfig.skillConfig.SkillType == 1)
  756. {
  757. AudioManager.Instance.PlayAudio("ui_xiazhenggongfa.wav");
  758. }
  759. else if (selectSkillConfig.skillConfig.SkillType == 2)
  760. {
  761. AudioManager.Instance.PlayAudio("ui_fzgf_yx.wav");
  762. }
  763. CloseSelect();
  764. BaoChun();
  765. showSkillInfo.Sort(Sort);
  766. Content.Init(this, showSkillInfo.Count);
  767. }
  768. else
  769. {
  770. if (dianjiSkillKongWidget != null && dianjiSkillKongWidget == skillKongWidget)
  771. {
  772. CloseSelect();
  773. return;
  774. }
  775. //交换功法
  776. if (dianjiSkillKongWidget == null)
  777. {
  778. dianjiSkillKongWidget = skillKongWidget;
  779. Btn_RemoveGongFa.transform.position = dianjiSkillKongWidget.RemovePos.position;
  780. Btn_RemoveGongFa.gameObject.SetActive(true);
  781. Btn_Info.GetComponent<RectTransform>().sizeDelta = new Vector2(72, 30);
  782. Btn_Info.transform.position = dianjiSkillKongWidget.InfoPos.position;
  783. Btn_Info.gameObject.SetActive(true);
  784. SelectSkill(skillKongWidget.SkillInfo, false, false);
  785. // if (skillKongWidget.SkillInfo.skillConfig.SkillType == 1)
  786. // {
  787. // AudioManager.Instance.PlayAudio("ui_xiazhenggongfa.wav");
  788. // }
  789. // else if (skillKongWidget.SkillInfo.skillConfig.SkillType == 2)
  790. // {
  791. // AudioManager.Instance.PlayAudio("ui_fzgf_yx.wav");
  792. // }
  793. }
  794. else
  795. {
  796. isAlter = true;
  797. if (!IsCurrentPosUse(selectSkillConfig, skillKongWidget))
  798. {
  799. CloseSelect();
  800. return;
  801. }
  802. if (skillKongWidget.SkillInfo != null)
  803. {
  804. dianjiSkillKongWidget.SetSKill(skillKongWidget.SkillInfo);
  805. allUseSkill[dianjiSkillKongWidget.index] = dianjiSkillKongWidget.SkillInfo;
  806. }
  807. else
  808. {
  809. allUseSkill[dianjiSkillKongWidget.SkillInfo.index] = null;
  810. dianjiSkillKongWidget.Cleared();
  811. }
  812. skillKongWidget.SetSKill(selectSkillConfig);
  813. allUseSkill[skillKongWidget.index] = selectSkillConfig;
  814. if (selectSkillConfig.skillConfig.SkillType == 1)
  815. {
  816. AudioManager.Instance.PlayAudio("ui_xiazhenggongfa.wav");
  817. }
  818. else if (selectSkillConfig.skillConfig.SkillType == 2)
  819. {
  820. AudioManager.Instance.PlayAudio("ui_fzgf_yx.wav");
  821. }
  822. CloseSelect();
  823. BaoChun();
  824. }
  825. }
  826. UpdateSkillWidget();
  827. }
  828. private bool IsCurrentPosUse(SkillInfo skillConfig, SkillKongWidget skillKongWidget)
  829. {
  830. return true;
  831. if (PlayerManager.Instance.myHero.level > 60)
  832. {
  833. return true;
  834. }
  835. int index = 0;
  836. //金
  837. if (skillConfig.skillConfig.attribute == 1)
  838. {
  839. index = 0;
  840. }
  841. //木
  842. if (skillConfig.skillConfig.attribute == 2)
  843. {
  844. index = 1;
  845. }
  846. //水
  847. if (skillConfig.skillConfig.attribute == 4)
  848. {
  849. index = 2;
  850. }
  851. //火
  852. if (skillConfig.skillConfig.attribute == 8)
  853. {
  854. index = 3;
  855. }
  856. //土
  857. if (skillConfig.skillConfig.attribute == 16)
  858. {
  859. index = 4;
  860. }
  861. //辅助
  862. if (skillConfig.skillConfig.attribute == 0)
  863. {
  864. index = 5;
  865. }
  866. return indexList[index].Contains(skillKongWidget.index);
  867. }
  868. public void SelectSkill(SkillInfo skillConfig, bool max, bool isClick)
  869. {
  870. for (int i = 0; i < allKongSkill.Count; i++)
  871. {
  872. allKongSkill[i].SelectState(false);
  873. allKongSkill[i].fx_ui_gf_fangzhi_loop.gameObject.SetActive(false);
  874. }
  875. int index = 5;
  876. // if (PlayerManager.Instance.myHero.level <= 60)
  877. {
  878. //金
  879. if (skillConfig.skillConfig.attribute == 1)
  880. {
  881. index = 0;
  882. }
  883. //木
  884. if (skillConfig.skillConfig.attribute == 2)
  885. {
  886. index = 1;
  887. }
  888. //水
  889. if (skillConfig.skillConfig.attribute == 4)
  890. {
  891. index = 2;
  892. }
  893. //火
  894. if (skillConfig.skillConfig.attribute == 8)
  895. {
  896. index = 3;
  897. }
  898. //土
  899. if (skillConfig.skillConfig.attribute == 16)
  900. {
  901. index = 4;
  902. }
  903. }
  904. if (!max)
  905. {
  906. for (var i = 0; i < allKongSkill.Count; i++)
  907. {
  908. allKongSkill[i].SelectState(true);
  909. }
  910. foreach (var i in indexList[index])
  911. {
  912. allKongSkill[i].fx_ui_gf_fangzhi_loop.gameObject.SetActive(true);
  913. }
  914. // if (isClick)
  915. // {
  916. // int index = 0;
  917. //
  918. // //金
  919. // if (skillConfig.skillConfig.attribute == 1)
  920. // {
  921. // index = 0;
  922. // }
  923. //
  924. // //木
  925. // if (skillConfig.skillConfig.attribute == 2)
  926. // {
  927. // index = 1;
  928. // }
  929. //
  930. // //水
  931. // if (skillConfig.skillConfig.attribute == 4)
  932. // {
  933. // index = 2;
  934. // }
  935. //
  936. // //火
  937. // if (skillConfig.skillConfig.attribute == 8)
  938. // {
  939. // index = 3;
  940. // }
  941. //
  942. // //土
  943. // if (skillConfig.skillConfig.attribute == 16)
  944. // {
  945. // index = 4;
  946. // }
  947. //
  948. // bool isSuccess = false;
  949. //
  950. // //先上对应位置
  951. // foreach (var i in indexList[index])
  952. // {
  953. // if (allKongSkill[i].SkillInfo == null)
  954. // {
  955. // allKongSkill[i].SetSKill(skillConfig);
  956. // allUseSkill[i] = skillConfig;
  957. // isSuccess = true;
  958. // break;
  959. // }
  960. // }
  961. //
  962. // //对应位置已经上了 ,就随便找给位置上
  963. // if (!isSuccess)
  964. // {
  965. // for (var i = 0; i < allKongSkill.Count; i++)
  966. // {
  967. // if (allKongSkill[i].SkillInfo == null)
  968. // {
  969. // allKongSkill[i].SetSKill(skillConfig);
  970. // allUseSkill[i] = skillConfig;
  971. // break;
  972. // }
  973. // }
  974. // }
  975. //
  976. // if (isSuccess)
  977. // {
  978. // BaoChun();
  979. // ChangeFuZhuYingXiang();
  980. // UpdateSkillWidget();
  981. // showSkillInfo.Sort(Sort);
  982. // Content.Init(this, showSkillInfo.Count);
  983. // }
  984. // else
  985. // {
  986. // for (int i = 0; i < allKongSkill.Count; i++)
  987. // {
  988. // allKongSkill[i].SelectState(true);
  989. // }
  990. // }
  991. // }
  992. // else
  993. {
  994. selectSkillConfig = skillConfig;
  995. _isSelectSkill = true;
  996. // for (int i = 0; i < allKongSkill.Count; i++)
  997. // {
  998. // allKongSkill[i].SelectState(true);
  999. // }
  1000. }
  1001. }
  1002. else
  1003. {
  1004. selectSkillConfig = skillConfig;
  1005. _isSelectSkill = true;
  1006. for (int i = 0; i < allKongSkill.Count; i++)
  1007. {
  1008. if (allKongSkill[i].SkillInfo != null)
  1009. {
  1010. if (selectSkillConfig.skillConfig.SkillType == allKongSkill[i].SkillInfo.skillConfig.SkillType)
  1011. {
  1012. allKongSkill[i].SelectState(true);
  1013. if (indexList[index].Contains(allKongSkill[i].index))
  1014. {
  1015. allKongSkill[i].fx_ui_gf_fangzhi_loop.gameObject.SetActive(true);
  1016. }
  1017. }
  1018. }
  1019. }
  1020. }
  1021. }
  1022. List<int> yingxiang = new List<int>();
  1023. private void CloseSelect()
  1024. {
  1025. _isSelectSkill = false;
  1026. selectSkillConfig = null;
  1027. dianjiSkillKongWidget = null;
  1028. Btn_RemoveGongFa.gameObject.SetActive(false);
  1029. Btn_Info.transform.SetParent(transform);
  1030. Btn_Info.gameObject.SetActive(false);
  1031. currentSelectedSkill = null;
  1032. for (int i = 0; i < allKongSkill.Count; i++)
  1033. {
  1034. allKongSkill[i].SelectState(false);
  1035. allKongSkill[i].fx_ui_gf_fangzhi_loop.gameObject.SetActive(false);
  1036. }
  1037. ChangeFuZhuYingXiang();
  1038. }
  1039. private void ChangeFuZhuYingXiang()
  1040. {
  1041. yingxiang.Clear();
  1042. float addcd = 0;
  1043. for (int i = 0; i < allKongSkill.Count; i++)
  1044. {
  1045. allKongSkill[i].fx_ui_gf_fz_loop.gameObject.SetActive(false);
  1046. allKongSkill[i].fx_ui_gf_fz_xian_loop.gameObject.SetActive(false);
  1047. }
  1048. for (int i = 0; i < allKongSkill.Count; i++)
  1049. {
  1050. // allKongSkill[i].fx_ui_gf_fz_loop.gameObject.SetActive(false);
  1051. if (allKongSkill[i].SkillInfo != null)
  1052. {
  1053. addcd += allKongSkill[i].SkillInfo.skillConfig.addcd;
  1054. }
  1055. if (allKongSkill[i].SkillInfo != null && allKongSkill[i].SkillInfo.skillConfig.SkillType == 2 &&
  1056. allKongSkill[i].SkillInfo.skillConfig.PromoteLanPara_1 != null)
  1057. {
  1058. allKongSkill[i].fx_ui_gf_fz_loop.gameObject.SetActive(true);
  1059. allKongSkill[i].fx_ui_gf_fz_loop.Play();
  1060. foreach (var f in allKongSkill[i].SkillInfo.skillConfig.PromoteLanPara_1)
  1061. {
  1062. if (f != 0)
  1063. {
  1064. var nubs = GetNumbers(i, f);
  1065. foreach (var nub in nubs)
  1066. {
  1067. // if (!yingxiang.Contains(nub))
  1068. // {
  1069. // yingxiang.Add(nub);
  1070. // }
  1071. allKongSkill[nub].fx_ui_gf_fz_loop.gameObject.SetActive(true);
  1072. allKongSkill[nub].fx_ui_gf_fz_loop.Play();
  1073. if (allKongSkill[nub].SkillInfo != null)
  1074. {
  1075. //左边
  1076. if (f == -1)
  1077. {
  1078. // 计算从A指向B的向量
  1079. Vector2 direction = allKongSkill[nub].transform.position -
  1080. allKongSkill[i].transform.position;
  1081. float angleRad = Mathf.Atan2(direction.y, direction.x);
  1082. float angleDeg = angleRad * Mathf.Rad2Deg;
  1083. allKongSkill[nub].fx_ui_gf_fz_xian_loop.transform.rotation =
  1084. Quaternion.Euler(0, 0, angleDeg + 20);
  1085. allKongSkill[nub].fx_ui_gf_fz_xian_loop.gameObject.SetActive(true);
  1086. // LogTool.Error($"角度:{angleDeg}");
  1087. }
  1088. else
  1089. {
  1090. // 计算从A指向B的向量
  1091. Vector2 direction = allKongSkill[i].transform.position -
  1092. allKongSkill[nub].transform.position;
  1093. float angleRad = Mathf.Atan2(direction.y, direction.x);
  1094. float angleDeg = angleRad * Mathf.Rad2Deg;
  1095. allKongSkill[i].fx_ui_gf_fz_xian_loop.transform.rotation =
  1096. Quaternion.Euler(0, 0, angleDeg + 20);
  1097. allKongSkill[i].fx_ui_gf_fz_xian_loop.gameObject.SetActive(true);
  1098. }
  1099. }
  1100. }
  1101. }
  1102. }
  1103. }
  1104. }
  1105. // foreach (var i in yingxiang)
  1106. // {
  1107. // allKongSkill[i].fx_ui_gf_fz_loop.gameObject.SetActive(true);
  1108. // allKongSkill[i].fx_ui_gf_fz_loop.Play();
  1109. // }
  1110. Text_Cd.text = LanguageManager.Instance.Text(10208,
  1111. ((PlayerManager.Instance.myHero.powerUpConfig.MaxActiveGongfaNum *
  1112. PlayerManager.Instance.gameConstantConfig.BasicCDperSkill / 1000) + addcd));
  1113. }
  1114. public List<int> GetNumbers(int start, float offset)
  1115. {
  1116. List<int> indexs = new List<int>();
  1117. for (int i = 0; i < Math.Abs(offset); i++)
  1118. {
  1119. if (offset >= 0)
  1120. {
  1121. indexs.Add(SafeMod(start + i + 1));
  1122. }
  1123. else
  1124. {
  1125. indexs.Add(SafeMod(start - i - 1));
  1126. }
  1127. }
  1128. // 确保结果在0-9范围内(循环数组)
  1129. int SafeMod(int n) => (n % 10 + 10) % 10;
  1130. return indexs;
  1131. }
  1132. public override void Hide()
  1133. {
  1134. base.Hide();
  1135. CombatDrive.Instance.CombatController.isUpdate = true;
  1136. }
  1137. public List<SkillWidget> _skillWidgets = new List<SkillWidget>();
  1138. public async CTask<IScorllListWidget> GetIScorllListWidget(int index, RectTransform root)
  1139. {
  1140. if (index < 0 || index >= showSkillInfo.Count)
  1141. return null;
  1142. SkillInfo skillInfo = showSkillInfo[index];
  1143. SkillWidget skillWidget = await UIManager.Instance.CreateGComponent<SkillWidget>(null, ContentRoot);
  1144. skillWidget.InitSkillWidget(skillInfo);
  1145. skillWidget.OnClick = OnClick;
  1146. if (allUseSkill.Contains(skillWidget.skillConfigId))
  1147. {
  1148. skillWidget.Icon_Marsk.SetActive(true);
  1149. }
  1150. else
  1151. {
  1152. skillWidget.Icon_Marsk.SetActive(false);
  1153. }
  1154. _skillWidgets.Add(skillWidget);
  1155. return skillWidget;
  1156. }
  1157. private void UpdateSkillWidget()
  1158. {
  1159. foreach (var skillWidget in _skillWidgets)
  1160. {
  1161. if (allUseSkill.Contains(skillWidget.skillConfigId))
  1162. {
  1163. skillWidget.Icon_Marsk.SetActive(true);
  1164. }
  1165. else
  1166. {
  1167. skillWidget.Icon_Marsk.SetActive(false);
  1168. }
  1169. }
  1170. Text_GongFaCount.text = LanguageManager.Instance.Text(10210, GetMainGongFaCount(),
  1171. PlayerManager.Instance.myHero.powerUpConfig.MaxActiveGongfaNum);
  1172. Text_FuZhuGongFaCount.text = LanguageManager.Instance.Text(10209, GetPassiveGongFaCount(),
  1173. PlayerManager.Instance.myHero.powerUpConfig.MaxPassiveGongfaNum);
  1174. }
  1175. private async void OnClick(ItemWidgetBasic obj)
  1176. {
  1177. SkillWidget skillWidget = obj as SkillWidget;
  1178. if (infoType == 1)
  1179. {
  1180. currentOnclickskillWidget = skillWidget.skillConfigId;
  1181. GongFaUpgradePanel gongFaUpgradePanel = await GongFaUpgradePanel.Open(skillWidget.skillConfigId);
  1182. await gongFaUpgradePanel.UIClosed();
  1183. Sort(type1, type2);
  1184. }
  1185. else if (infoType == 2)
  1186. {
  1187. CloseSelect();
  1188. Btn_Info.GetComponent<RectTransform>().sizeDelta = new Vector2(98, 36);
  1189. Btn_Info.transform.SetParent(ContentRoot);
  1190. Btn_Info.transform.position = skillWidget.InfoPos.position;
  1191. Btn_Info.gameObject.SetActive(true);
  1192. currentSelectedSkill = skillWidget.skillConfigId;
  1193. if (allUseSkill.Contains(skillWidget.skillConfigId))
  1194. {
  1195. return;
  1196. }
  1197. Btn_RemoveGongFa.gameObject.SetActive(false);
  1198. if (!IsMainGongFaChange(skillWidget.skillConfigId.skillConfig) ||
  1199. !IsPassiveGongFaChange(skillWidget.skillConfigId.skillConfig))
  1200. {
  1201. SelectSkill(skillWidget.skillConfigId, true, true);
  1202. }
  1203. else
  1204. {
  1205. SelectSkill(skillWidget.skillConfigId, false, true);
  1206. }
  1207. }
  1208. if (PlayerGuideManager.Instance.GuideIsCanDo(4, 5))
  1209. {
  1210. PlayerGuideManager.Instance.NextGuide();
  1211. }
  1212. if (PlayerGuideManager.Instance.GuideIsCanDo(4, 8))
  1213. {
  1214. PlayerGuideManager.Instance.NextGuide();
  1215. }
  1216. }
  1217. /// <summary>
  1218. /// 获得主功法数量
  1219. /// </summary>
  1220. /// <returns></returns>
  1221. private int GetMainGongFaCount()
  1222. {
  1223. int count = 0;
  1224. for (var i = 0; i < allUseSkill.Length; i++)
  1225. {
  1226. if (allUseSkill[i] != null && allUseSkill[i].skillConfig.SkillType == 1)
  1227. {
  1228. count++;
  1229. }
  1230. }
  1231. return count;
  1232. }
  1233. /// <summary>
  1234. /// 获得被动功法数量
  1235. /// </summary>
  1236. /// <returns></returns>
  1237. private int GetPassiveGongFaCount()
  1238. {
  1239. int count = 0;
  1240. for (var i = 0; i < allUseSkill.Length; i++)
  1241. {
  1242. if (allUseSkill[i] != null && allUseSkill[i].skillConfig.SkillType == 2)
  1243. {
  1244. count++;
  1245. }
  1246. }
  1247. return count;
  1248. }
  1249. private bool IsMainGongFaChange(SkillConfig s)
  1250. {
  1251. if (GetMainGongFaCount() < PlayerManager.Instance.myHero.powerUpConfig.MaxActiveGongfaNum ||
  1252. s.SkillType != 1)
  1253. {
  1254. return true;
  1255. }
  1256. else
  1257. {
  1258. return false;
  1259. }
  1260. }
  1261. private bool IsPassiveGongFaChange(SkillConfig s)
  1262. {
  1263. if (GetPassiveGongFaCount() < PlayerManager.Instance.myHero.powerUpConfig.MaxPassiveGongfaNum ||
  1264. s.SkillType != 2)
  1265. {
  1266. return true;
  1267. }
  1268. else
  1269. {
  1270. return false;
  1271. }
  1272. }
  1273. public void HindIScorllListWidget(IScorllListWidget widget)
  1274. {
  1275. UIManager.Instance.DormancyGComponent(widget as SkillWidget);
  1276. _skillWidgets.Remove(widget as SkillWidget);
  1277. }
  1278. public async override CTask Close()
  1279. {
  1280. foreach (var skillWidget in _skillWidgets)
  1281. {
  1282. UIManager.Instance.DormancyGComponent(skillWidget);
  1283. }
  1284. _skillWidgets.Clear();
  1285. foreach (var skillKongWidget in allKongSkill)
  1286. {
  1287. UIManager.Instance.DormancyGComponent(skillKongWidget);
  1288. }
  1289. allKongSkill.Clear();
  1290. foreach (var wuXingGongFaWidget in _wuXingGongFaWidgets)
  1291. {
  1292. UIManager.Instance.DormancyGComponent(wuXingGongFaWidget);
  1293. }
  1294. Icon_Select.gameObject.SetActive(false);
  1295. _wuXingGongFaWidgets.Clear();
  1296. CloseSelect();
  1297. currentOnclickskillWidget = null;
  1298. // ChangeInfoType(1);
  1299. await base.Close();
  1300. }
  1301. }
  1302. }