SkillSelectPanel.cs 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533
  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 == 4)
  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 == 2)
  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. RedDotManager.Instance.TarGetRedDotUpDate(17);
  341. });
  342. Sv.onValueChanged.AddListener((s) =>
  343. {
  344. if (currentSelectedSkill == null)
  345. {
  346. return;
  347. }
  348. Btn_Info.transform.SetAsLastSibling();
  349. });
  350. }
  351. private void UpdateSaixuanBtnState()
  352. {
  353. Btn_Jin.transform.IsGray((type2 != 1 && type2 != 0) || type1 == 2);
  354. Btn_Mu.transform.IsGray((type2 != 4 && type2 != 0) || type1 == 2);
  355. Btn_Shui.transform.IsGray((type2 != 2 && type2 != 0) || type1 == 2);
  356. Btn_Huo.transform.IsGray((type2 != 8 && type2 != 0) || type1 == 2);
  357. Btn_Tu.transform.IsGray((type2 != 16 && type2 != 0) || type1 == 2);
  358. }
  359. private bool isDraging = false;
  360. //拖动得技能
  361. private SkillKongWidget nowSkillKongWidget;
  362. //进入的技能
  363. private SkillKongWidget nowInSkillKongWidget;
  364. //拖动中技能
  365. private SkillKongWidget nowSkillKongWidget1;
  366. private async void SkillBeginDragHandle(PointerEventData pointerEventData, ItemWidgetBasic itemWidgetBasic)
  367. {
  368. LogTool.Log("开始拖动");
  369. if (infoType == 1)
  370. {
  371. return;
  372. }
  373. if (dianjiSkillKongWidget != null)
  374. {
  375. return;
  376. }
  377. SkillKongWidget skillKongWidget1 = itemWidgetBasic as SkillKongWidget;
  378. if (skillKongWidget1.SkillInfo == null)
  379. return;
  380. isDraging = true;
  381. //记录当前选中的格子
  382. nowSkillKongWidget = skillKongWidget1;
  383. nowSkillKongWidget.Translucency();
  384. dianjiSkillKongWidget = skillKongWidget1;
  385. SelectSkill(nowSkillKongWidget.SkillInfo, false, false);
  386. nowSkillKongWidget1 = await UIManager.Instance.CreateGComponentForObject<SkillKongWidget>(
  387. SkillKongWidget1game.gameObject,
  388. null, transform.GetComponent<RectTransform>(), uiData: new object[] { false, false },
  389. isInstance: false);
  390. nowSkillKongWidget1.own.SetActive(true);
  391. nowSkillKongWidget1.InitWidget(nowSkillKongWidget.index, this);
  392. nowSkillKongWidget1.SetSKill(skillKongWidget1.SkillInfo);
  393. }
  394. private void SkillDragHandle(PointerEventData pointerEventData, ItemWidgetBasic itemWidgetBasic)
  395. {
  396. LogTool.Log("拖动中");
  397. if (nowSkillKongWidget1 == null)
  398. return;
  399. Vector2 localPos;
  400. RectTransformUtility.ScreenPointToLocalPointInRectangle(
  401. transform.GetComponent<RectTransform>(),
  402. pointerEventData.position,
  403. pointerEventData.pressEventCamera,
  404. out localPos);
  405. nowSkillKongWidget1.transform.localPosition = localPos;
  406. }
  407. private void SkillEndDragHandle(PointerEventData pointerEventData, ItemWidgetBasic itemWidgetBasic)
  408. {
  409. LogTool.Log("结束拖动");
  410. isDraging = false;
  411. nowSkillKongWidget?.Opaque();
  412. if (nowInSkillKongWidget == null)
  413. {
  414. CloseSelect();
  415. }
  416. nowInSkillKongWidget?.OnPointerClick();
  417. nowSkillKongWidget = null;
  418. if (nowInSkillKongWidget != null)
  419. {
  420. nowInSkillKongWidget.transform.localScale = Vector3.one;
  421. }
  422. nowInSkillKongWidget = null;
  423. if (nowSkillKongWidget1 == null)
  424. return;
  425. nowSkillKongWidget1.own.SetActive(false);
  426. nowSkillKongWidget1 = null;
  427. }
  428. private void SkillPointEnterHandle(ItemWidgetBasic itemWidgetBasic)
  429. {
  430. LogTool.Log("进入");
  431. if (isDraging)
  432. {
  433. nowInSkillKongWidget = itemWidgetBasic as SkillKongWidget;
  434. nowInSkillKongWidget.transform.localScale = Vector3.one * 1.1f;
  435. return;
  436. }
  437. }
  438. private void SkillPointExitHandle(ItemWidgetBasic itemWidgetBasic)
  439. {
  440. LogTool.Log("离开");
  441. if (isDraging)
  442. {
  443. if (nowInSkillKongWidget != null)
  444. nowInSkillKongWidget.transform.localScale = Vector3.one;
  445. nowInSkillKongWidget = null;
  446. return;
  447. }
  448. }
  449. private void UpdateRoad()
  450. {
  451. if (currenRoadSkilId != 0)
  452. {
  453. SkillConfig skillConfig = ConfigComponent.Instance.Get<SkillConfig>(currenRoadSkilId);
  454. Text_RoadName.text = LanguageManager.Instance.Text(skillConfig.name);
  455. }
  456. else
  457. {
  458. Text_RoadName.text = "未选择";
  459. }
  460. //
  461. }
  462. private void BaoChun()
  463. {
  464. // ChangeInfoType(1);
  465. // if (isAlter)
  466. {
  467. PlayerManager.Instance.GongFaControl.SaveUseSkill(allUseSkill);
  468. PlayerManager.Instance.GongFaControl.SetTaoismSkillIndex(currenRoadSkilId);
  469. PlayerManager.Instance.myHero.heroData.TaoismSkillId = currenRoadSkilId;
  470. AccountFileInfo.Instance.SavePlayerData();
  471. }
  472. isAlter = false;
  473. }
  474. private void ChangeInfoType(int type)
  475. {
  476. if (type == 1)
  477. {
  478. GongFaSettingRoot.SetActive(false);
  479. infoType = 1;
  480. Btn_Setting.gameObject.SetActive(true);
  481. CloseSelect();
  482. AppBarPanel.OpenPanel(this);
  483. // Text_FuZhuGongFaCount.transform.parent.gameObject.SetActive(false);
  484. }
  485. else if (type == 2)
  486. {
  487. GongFaSettingRoot.SetActive(true);
  488. infoType = 2;
  489. allUseSkill = PlayerManager.Instance.GongFaControl.allUseSkill.ToArray();
  490. Btn_Setting.gameObject.SetActive(false);
  491. AppBarPanel.ClosePanel();
  492. // Text_FuZhuGongFaCount.transform.parent.gameObject.SetActive(true);
  493. }
  494. }
  495. List<SkillInfo> showSkillInfo = new List<SkillInfo>();
  496. List<List<int>> indexList = new List<List<int>>()
  497. {
  498. new List<int>() { 9, 8, 7 }, //金
  499. new List<int>() { 1, 2, 3 }, //木
  500. new List<int>() { 1, 0, 9 }, //水
  501. new List<int>() { 5, 4, 3 }, //火
  502. new List<int>() { 7, 6, 5 }, //土
  503. new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, //辅助
  504. };
  505. private void Sort(int type1, int type2)
  506. {
  507. //先排序类型在排属性
  508. if (type1 == 0)
  509. {
  510. BtnRoot.ClickWidget(Btn_All.GetComponent<UIToggleWidgetBasic>());
  511. }
  512. else if (type1 == 1)
  513. {
  514. BtnRoot.ClickWidget(Btn_ZhuDong.GetComponent<UIToggleWidgetBasic>());
  515. }
  516. else if (type1 == 2)
  517. {
  518. BtnRoot.ClickWidget(Btn_FuZu.GetComponent<UIToggleWidgetBasic>());
  519. type2 = 0;
  520. }
  521. else if (type1 == 5)
  522. {
  523. BtnRoot.ClickWidget(Btn_BeiDong.GetComponent<UIToggleWidgetBasic>());
  524. }
  525. // if (type2 == 0)
  526. // {
  527. // Icon_Select.gameObject.SetActive(false);
  528. // }
  529. // else if (type2 == 1)
  530. // {
  531. // Icon_Select.transform.position = Btn_Jin.transform.position;
  532. // Icon_Select.gameObject.SetActive(true);
  533. // }
  534. // else if (type2 == 2)
  535. // {
  536. // Icon_Select.transform.position = Btn_Mu.transform.position;
  537. // Icon_Select.gameObject.SetActive(true);
  538. // }
  539. // else if (type2 == 4)
  540. // {
  541. // Icon_Select.transform.position = Btn_Shui.transform.position;
  542. // Icon_Select.gameObject.SetActive(true);
  543. // }
  544. // else if (type2 == 8)
  545. // {
  546. // Icon_Select.transform.position = Btn_Huo.transform.position;
  547. // Icon_Select.gameObject.SetActive(true);
  548. // }
  549. // else if (type2 == 16)
  550. // {
  551. // Icon_Select.transform.position = Btn_Tu.transform.position;
  552. // Icon_Select.gameObject.SetActive(true);
  553. // }
  554. UpdateSaixuanBtnState();
  555. //0代表全部
  556. if (type1 == 0)
  557. {
  558. showSkillInfo = PlayerManager.Instance.GongFaControl.allSkill.ToList();
  559. }
  560. else
  561. {
  562. showSkillInfo = PlayerManager.Instance.GongFaControl.allSkill
  563. .Where(s => s.skillConfig.SkillType == type1).ToList();
  564. }
  565. if (type2 == 0)
  566. {
  567. }
  568. else
  569. {
  570. showSkillInfo = showSkillInfo.Where(s => s.skillConfig.attribute == type2).ToList();
  571. }
  572. CloseSelect();
  573. showSkillInfo.Sort(Sort);
  574. int startIndex = 0;
  575. for (int i = 0; i < showSkillInfo.Count; i++)
  576. {
  577. if (showSkillInfo[i] == currentOnclickskillWidget)
  578. {
  579. startIndex = i;
  580. }
  581. }
  582. Content.Init(this, showSkillInfo.Count,startIndex);
  583. }
  584. private int Sort(SkillInfo type1, SkillInfo type2)
  585. {
  586. if (allUseSkill.Contains(type1) && !allUseSkill.Contains(type2))
  587. {
  588. return -1;
  589. }
  590. if (!allUseSkill.Contains(type1) && allUseSkill.Contains(type2))
  591. {
  592. return 1;
  593. }
  594. return type1.skillConfig.SkillType != type2.skillConfig.SkillType
  595. ? type1.skillConfig.SkillType.CompareTo(type2.skillConfig.SkillType)
  596. : type1.SkillData.star != type2.SkillData.star
  597. ? type2.SkillData.star.CompareTo(type1.SkillData.star)
  598. : type1.skillConfig.ID.CompareTo(type2.skillConfig.ID);
  599. return 0;
  600. }
  601. public override async CTask Open()
  602. {
  603. await base.Open();
  604. foreach (var skillKongWidget in allKongSkill)
  605. {
  606. UIManager.Instance.DormancyGComponent(skillKongWidget);
  607. }
  608. allKongSkill.Clear();
  609. Sort(type1, type2);
  610. for (int i = 0; i < 5; i++)
  611. {
  612. double hd = i * 72 * Math.PI / 180f;
  613. double a = Math.Cos(hd);
  614. double b = -Math.Sin(hd);
  615. double c = Math.Sin(hd);
  616. double d = a;
  617. double x = a * 0 + b * 116;
  618. double y = c * 0 + d * 116;
  619. int index = i;
  620. WuXingGongFaWidget widget =
  621. await UIManager.Instance.CreateGComponent<WuXingGongFaWidget>(null, root: WuXingGongFaRoot,
  622. poolName: "132");
  623. widget.transform.anchoredPosition = new Vector2((float)x, (float)y);
  624. widget.ShowWidget(index);
  625. // widget.transform.localScale = new Vector3(1, 1.8f, 1.8f);
  626. _wuXingGongFaWidgets.Add(widget);
  627. }
  628. for (int i = 0; i < 10; i++)
  629. {
  630. int index = i;
  631. double hd = (36 * i) * Math.PI / 180f;
  632. double a = Math.Cos(hd);
  633. double b = -Math.Sin(hd);
  634. double c = Math.Sin(hd);
  635. double d = a;
  636. double x = a * 0 + b * 190;
  637. double y = c * 0 + d * 190;
  638. Vector2 pos = new Vector2((float)x, (float)y);
  639. SkillKongWidget skillKongWidget = await UIManager.Instance.CreateGComponentForObject<SkillKongWidget>(
  640. kongdongs.gameObject,
  641. null, SkillKongWeiRoot, uiData: new object[] { true, true },
  642. isInstance: true);
  643. skillKongWidget.InitWidget(index, this);
  644. skillKongWidget.SetSKill(allUseSkill[index]);
  645. skillKongWidget.transform.anchoredPosition = pos;
  646. skillKongWidget.OnClick = OnClickSkillKongWidget;
  647. skillKongWidget.onDragStart = SkillBeginDragHandle;
  648. skillKongWidget.onDrag = SkillDragHandle;
  649. skillKongWidget.onDragEnd = SkillEndDragHandle;
  650. skillKongWidget.onPointerEnter = SkillPointEnterHandle;
  651. skillKongWidget.onPointerExit = SkillPointExitHandle;
  652. allKongSkill.Add(skillKongWidget);
  653. }
  654. ChangeFuZhuYingXiang();
  655. }
  656. private SkillKongWidget dianjiSkillKongWidget;
  657. private async void OnClickSkillKongWidget(ItemWidgetBasic obj)
  658. {
  659. if (PlayerGuideManager.Instance.GuideIsCanDo(4, 7))
  660. {
  661. PlayerGuideManager.Instance.NextGuide();
  662. }
  663. if (PlayerGuideManager.Instance.GuideIsCanDo(4, 9))
  664. {
  665. PlayerGuideManager.Instance.NextGuide();
  666. }
  667. SkillKongWidget skillKongWidget = obj as SkillKongWidget;
  668. if (infoType == 1)
  669. {
  670. if (skillKongWidget.SkillInfo == null)
  671. return;
  672. GongFaUpgradePanel gongFaUpgradePanel = await GongFaUpgradePanel.Open(skillKongWidget.SkillInfo);
  673. await gongFaUpgradePanel.UIClosed();
  674. Sort(type1, type2);
  675. return;
  676. }
  677. Btn_Info.GetComponent<RectTransform>().sizeDelta = new Vector2(72, 30);
  678. Btn_Info.transform.SetParent(transform);
  679. Btn_Info.gameObject.SetActive(false);
  680. currentSelectedSkill = skillKongWidget.SkillInfo;
  681. // SkillKongWidget skillKongWidget = obj as SkillKongWidget;
  682. if (skillKongWidget.SkillInfo == null && dianjiSkillKongWidget == null && selectSkillConfig == null)
  683. {
  684. return;
  685. }
  686. //直接上功法
  687. if (skillKongWidget.SkillInfo == null && dianjiSkillKongWidget == null && selectSkillConfig != null)
  688. {
  689. if (!IsCurrentPosUse(selectSkillConfig, skillKongWidget))
  690. {
  691. CloseSelect();
  692. return;
  693. }
  694. if (selectSkillConfig.skillConfig.SkillType == 1)
  695. {
  696. if (!IsMainGongFaChange(selectSkillConfig.skillConfig))
  697. {
  698. TipMessagePanel.OpenTipMessagePanel("主动功法已经上满");
  699. CloseSelect();
  700. return;
  701. }
  702. }
  703. if (selectSkillConfig.skillConfig.SkillType == 2)
  704. {
  705. if (!IsPassiveGongFaChange(selectSkillConfig.skillConfig))
  706. {
  707. TipMessagePanel.OpenTipMessagePanel("被动功法已经上满");
  708. CloseSelect();
  709. return;
  710. }
  711. }
  712. isAlter = true;
  713. skillKongWidget.SetSKill(selectSkillConfig);
  714. allUseSkill[skillKongWidget.index] = selectSkillConfig;
  715. if (selectSkillConfig.skillConfig.SkillType == 1)
  716. {
  717. AudioManager.Instance.PlayAudio("ui_xiazhenggongfa.wav");
  718. }
  719. else if (selectSkillConfig.skillConfig.SkillType == 2)
  720. {
  721. AudioManager.Instance.PlayAudio("ui_fzgf_yx.wav");
  722. }
  723. CloseSelect();
  724. BaoChun();
  725. RedDotManager.Instance.TarGetRedDotUpDate(14);
  726. RedDotManager.Instance.TarGetRedDotUpDate(17);
  727. showSkillInfo.Sort(Sort);
  728. Content.Init(this, showSkillInfo.Count);
  729. }
  730. //替换功法
  731. else if (skillKongWidget.SkillInfo != null && dianjiSkillKongWidget == null && selectSkillConfig != null)
  732. {
  733. if (!IsPassiveGongFaChange(selectSkillConfig.skillConfig) &&
  734. allUseSkill[skillKongWidget.SkillInfo.index].skillConfig.SkillType != 2)
  735. {
  736. TipMessagePanel.OpenTipMessagePanel("被动功法已经上满");
  737. CloseSelect();
  738. return;
  739. }
  740. if (!IsMainGongFaChange(selectSkillConfig.skillConfig) &&
  741. allUseSkill[skillKongWidget.SkillInfo.index].skillConfig.SkillType != 1)
  742. {
  743. TipMessagePanel.OpenTipMessagePanel("主动功法已经上满");
  744. CloseSelect();
  745. return;
  746. }
  747. if (!IsCurrentPosUse(selectSkillConfig, skillKongWidget))
  748. {
  749. CloseSelect();
  750. return;
  751. }
  752. isAlter = true;
  753. allUseSkill[skillKongWidget.SkillInfo.index] = null;
  754. skillKongWidget.SetSKill(selectSkillConfig);
  755. allUseSkill[skillKongWidget.index] = selectSkillConfig;
  756. skillKongWidget.SetSKill(selectSkillConfig);
  757. if (selectSkillConfig.skillConfig.SkillType == 1)
  758. {
  759. AudioManager.Instance.PlayAudio("ui_xiazhenggongfa.wav");
  760. }
  761. else if (selectSkillConfig.skillConfig.SkillType == 2)
  762. {
  763. AudioManager.Instance.PlayAudio("ui_fzgf_yx.wav");
  764. }
  765. CloseSelect();
  766. BaoChun();
  767. showSkillInfo.Sort(Sort);
  768. Content.Init(this, showSkillInfo.Count);
  769. }
  770. else
  771. {
  772. if (dianjiSkillKongWidget != null && dianjiSkillKongWidget == skillKongWidget)
  773. {
  774. CloseSelect();
  775. return;
  776. }
  777. //交换功法
  778. if (dianjiSkillKongWidget == null)
  779. {
  780. dianjiSkillKongWidget = skillKongWidget;
  781. Btn_RemoveGongFa.transform.position = dianjiSkillKongWidget.RemovePos.position;
  782. Btn_RemoveGongFa.gameObject.SetActive(true);
  783. Btn_Info.GetComponent<RectTransform>().sizeDelta = new Vector2(72, 30);
  784. Btn_Info.transform.position = dianjiSkillKongWidget.InfoPos.position;
  785. Btn_Info.gameObject.SetActive(true);
  786. SelectSkill(skillKongWidget.SkillInfo, false, false);
  787. // if (skillKongWidget.SkillInfo.skillConfig.SkillType == 1)
  788. // {
  789. // AudioManager.Instance.PlayAudio("ui_xiazhenggongfa.wav");
  790. // }
  791. // else if (skillKongWidget.SkillInfo.skillConfig.SkillType == 2)
  792. // {
  793. // AudioManager.Instance.PlayAudio("ui_fzgf_yx.wav");
  794. // }
  795. }
  796. else
  797. {
  798. isAlter = true;
  799. if (!IsCurrentPosUse(selectSkillConfig, skillKongWidget))
  800. {
  801. CloseSelect();
  802. return;
  803. }
  804. if (skillKongWidget.SkillInfo != null)
  805. {
  806. dianjiSkillKongWidget.SetSKill(skillKongWidget.SkillInfo);
  807. allUseSkill[dianjiSkillKongWidget.index] = dianjiSkillKongWidget.SkillInfo;
  808. }
  809. else
  810. {
  811. allUseSkill[dianjiSkillKongWidget.SkillInfo.index] = null;
  812. dianjiSkillKongWidget.Cleared();
  813. }
  814. skillKongWidget.SetSKill(selectSkillConfig);
  815. allUseSkill[skillKongWidget.index] = selectSkillConfig;
  816. if (selectSkillConfig.skillConfig.SkillType == 1)
  817. {
  818. AudioManager.Instance.PlayAudio("ui_xiazhenggongfa.wav");
  819. }
  820. else if (selectSkillConfig.skillConfig.SkillType == 2)
  821. {
  822. AudioManager.Instance.PlayAudio("ui_fzgf_yx.wav");
  823. }
  824. CloseSelect();
  825. BaoChun();
  826. }
  827. }
  828. UpdateSkillWidget();
  829. }
  830. private bool IsCurrentPosUse(SkillInfo skillConfig, SkillKongWidget skillKongWidget)
  831. {
  832. return true;
  833. if (PlayerManager.Instance.myHero.level > 60)
  834. {
  835. return true;
  836. }
  837. int index = 0;
  838. //金
  839. if (skillConfig.skillConfig.attribute == 1)
  840. {
  841. index = 0;
  842. }
  843. //木
  844. if (skillConfig.skillConfig.attribute == 2)
  845. {
  846. index = 1;
  847. }
  848. //水
  849. if (skillConfig.skillConfig.attribute == 4)
  850. {
  851. index = 2;
  852. }
  853. //火
  854. if (skillConfig.skillConfig.attribute == 8)
  855. {
  856. index = 3;
  857. }
  858. //土
  859. if (skillConfig.skillConfig.attribute == 16)
  860. {
  861. index = 4;
  862. }
  863. //辅助
  864. if (skillConfig.skillConfig.attribute == 0)
  865. {
  866. index = 5;
  867. }
  868. return indexList[index].Contains(skillKongWidget.index);
  869. }
  870. public void SelectSkill(SkillInfo skillConfig, bool max, bool isClick)
  871. {
  872. for (int i = 0; i < allKongSkill.Count; i++)
  873. {
  874. allKongSkill[i].SelectState(false);
  875. allKongSkill[i].fx_ui_gf_fangzhi_loop.gameObject.SetActive(false);
  876. }
  877. int index = 5;
  878. // if (PlayerManager.Instance.myHero.level <= 60)
  879. {
  880. //金
  881. if (skillConfig.skillConfig.attribute == 1)
  882. {
  883. index = 0;
  884. }
  885. //木
  886. if (skillConfig.skillConfig.attribute == 4)
  887. {
  888. index = 1;
  889. }
  890. //水
  891. if (skillConfig.skillConfig.attribute == 2)
  892. {
  893. index = 2;
  894. }
  895. //火
  896. if (skillConfig.skillConfig.attribute == 8)
  897. {
  898. index = 3;
  899. }
  900. //土
  901. if (skillConfig.skillConfig.attribute == 16)
  902. {
  903. index = 4;
  904. }
  905. }
  906. if (!max)
  907. {
  908. for (var i = 0; i < allKongSkill.Count; i++)
  909. {
  910. allKongSkill[i].SelectState(true);
  911. }
  912. foreach (var i in indexList[index])
  913. {
  914. allKongSkill[i].fx_ui_gf_fangzhi_loop.gameObject.SetActive(true);
  915. }
  916. // if (isClick)
  917. // {
  918. // int index = 0;
  919. //
  920. // //金
  921. // if (skillConfig.skillConfig.attribute == 1)
  922. // {
  923. // index = 0;
  924. // }
  925. //
  926. // //木
  927. // if (skillConfig.skillConfig.attribute == 2)
  928. // {
  929. // index = 1;
  930. // }
  931. //
  932. // //水
  933. // if (skillConfig.skillConfig.attribute == 4)
  934. // {
  935. // index = 2;
  936. // }
  937. //
  938. // //火
  939. // if (skillConfig.skillConfig.attribute == 8)
  940. // {
  941. // index = 3;
  942. // }
  943. //
  944. // //土
  945. // if (skillConfig.skillConfig.attribute == 16)
  946. // {
  947. // index = 4;
  948. // }
  949. //
  950. // bool isSuccess = false;
  951. //
  952. // //先上对应位置
  953. // foreach (var i in indexList[index])
  954. // {
  955. // if (allKongSkill[i].SkillInfo == null)
  956. // {
  957. // allKongSkill[i].SetSKill(skillConfig);
  958. // allUseSkill[i] = skillConfig;
  959. // isSuccess = true;
  960. // break;
  961. // }
  962. // }
  963. //
  964. // //对应位置已经上了 ,就随便找给位置上
  965. // if (!isSuccess)
  966. // {
  967. // for (var i = 0; i < allKongSkill.Count; i++)
  968. // {
  969. // if (allKongSkill[i].SkillInfo == null)
  970. // {
  971. // allKongSkill[i].SetSKill(skillConfig);
  972. // allUseSkill[i] = skillConfig;
  973. // break;
  974. // }
  975. // }
  976. // }
  977. //
  978. // if (isSuccess)
  979. // {
  980. // BaoChun();
  981. // ChangeFuZhuYingXiang();
  982. // UpdateSkillWidget();
  983. // showSkillInfo.Sort(Sort);
  984. // Content.Init(this, showSkillInfo.Count);
  985. // }
  986. // else
  987. // {
  988. // for (int i = 0; i < allKongSkill.Count; i++)
  989. // {
  990. // allKongSkill[i].SelectState(true);
  991. // }
  992. // }
  993. // }
  994. // else
  995. {
  996. selectSkillConfig = skillConfig;
  997. _isSelectSkill = true;
  998. // for (int i = 0; i < allKongSkill.Count; i++)
  999. // {
  1000. // allKongSkill[i].SelectState(true);
  1001. // }
  1002. }
  1003. }
  1004. else
  1005. {
  1006. selectSkillConfig = skillConfig;
  1007. _isSelectSkill = true;
  1008. for (int i = 0; i < allKongSkill.Count; i++)
  1009. {
  1010. if (allKongSkill[i].SkillInfo != null)
  1011. {
  1012. if (selectSkillConfig.skillConfig.SkillType == allKongSkill[i].SkillInfo.skillConfig.SkillType)
  1013. {
  1014. allKongSkill[i].SelectState(true);
  1015. if (indexList[index].Contains(allKongSkill[i].index))
  1016. {
  1017. allKongSkill[i].fx_ui_gf_fangzhi_loop.gameObject.SetActive(true);
  1018. }
  1019. }
  1020. }
  1021. }
  1022. }
  1023. }
  1024. List<int> yingxiang = new List<int>();
  1025. private void CloseSelect()
  1026. {
  1027. _isSelectSkill = false;
  1028. selectSkillConfig = null;
  1029. dianjiSkillKongWidget = null;
  1030. Btn_RemoveGongFa.gameObject.SetActive(false);
  1031. Btn_Info.transform.SetParent(transform);
  1032. Btn_Info.gameObject.SetActive(false);
  1033. currentSelectedSkill = null;
  1034. for (int i = 0; i < allKongSkill.Count; i++)
  1035. {
  1036. allKongSkill[i].SelectState(false);
  1037. allKongSkill[i].fx_ui_gf_fangzhi_loop.gameObject.SetActive(false);
  1038. }
  1039. ChangeFuZhuYingXiang();
  1040. }
  1041. private void ChangeFuZhuYingXiang()
  1042. {
  1043. yingxiang.Clear();
  1044. float addcd = 0;
  1045. for (int i = 0; i < allKongSkill.Count; i++)
  1046. {
  1047. allKongSkill[i].fx_ui_gf_fz_loop.gameObject.SetActive(false);
  1048. allKongSkill[i].fx_ui_gf_fz_xian_loop.gameObject.SetActive(false);
  1049. }
  1050. for (int i = 0; i < allKongSkill.Count; i++)
  1051. {
  1052. // allKongSkill[i].fx_ui_gf_fz_loop.gameObject.SetActive(false);
  1053. if (allKongSkill[i].SkillInfo != null)
  1054. {
  1055. addcd += allKongSkill[i].SkillInfo.skillConfig.addcd;
  1056. }
  1057. if (allKongSkill[i].SkillInfo != null && allKongSkill[i].SkillInfo.skillConfig.SkillType == 2 &&
  1058. allKongSkill[i].SkillInfo.skillConfig.PromoteLanPara_1 != null)
  1059. {
  1060. allKongSkill[i].fx_ui_gf_fz_loop.gameObject.SetActive(true);
  1061. allKongSkill[i].fx_ui_gf_fz_loop.Play();
  1062. foreach (var f in allKongSkill[i].SkillInfo.skillConfig.PromoteLanPara_1)
  1063. {
  1064. if (f != 0)
  1065. {
  1066. var nubs = GetNumbers(i, f);
  1067. foreach (var nub in nubs)
  1068. {
  1069. // if (!yingxiang.Contains(nub))
  1070. // {
  1071. // yingxiang.Add(nub);
  1072. // }
  1073. allKongSkill[nub].fx_ui_gf_fz_loop.gameObject.SetActive(true);
  1074. allKongSkill[nub].fx_ui_gf_fz_loop.Play();
  1075. if (allKongSkill[nub].SkillInfo != null)
  1076. {
  1077. //左边
  1078. if (f == -1)
  1079. {
  1080. // 计算从A指向B的向量
  1081. Vector2 direction = allKongSkill[nub].transform.position -
  1082. allKongSkill[i].transform.position;
  1083. float angleRad = Mathf.Atan2(direction.y, direction.x);
  1084. float angleDeg = angleRad * Mathf.Rad2Deg;
  1085. allKongSkill[nub].fx_ui_gf_fz_xian_loop.transform.rotation =
  1086. Quaternion.Euler(0, 0, angleDeg + 20);
  1087. allKongSkill[nub].fx_ui_gf_fz_xian_loop.gameObject.SetActive(true);
  1088. // LogTool.Error($"角度:{angleDeg}");
  1089. }
  1090. else
  1091. {
  1092. // 计算从A指向B的向量
  1093. Vector2 direction = allKongSkill[i].transform.position -
  1094. allKongSkill[nub].transform.position;
  1095. float angleRad = Mathf.Atan2(direction.y, direction.x);
  1096. float angleDeg = angleRad * Mathf.Rad2Deg;
  1097. allKongSkill[i].fx_ui_gf_fz_xian_loop.transform.rotation =
  1098. Quaternion.Euler(0, 0, angleDeg + 20);
  1099. allKongSkill[i].fx_ui_gf_fz_xian_loop.gameObject.SetActive(true);
  1100. }
  1101. }
  1102. }
  1103. }
  1104. }
  1105. }
  1106. }
  1107. // foreach (var i in yingxiang)
  1108. // {
  1109. // allKongSkill[i].fx_ui_gf_fz_loop.gameObject.SetActive(true);
  1110. // allKongSkill[i].fx_ui_gf_fz_loop.Play();
  1111. // }
  1112. Text_Cd.text = LanguageManager.Instance.Text(10208,
  1113. ((PlayerManager.Instance.myHero.powerUpConfig.MaxActiveGongfaNum *
  1114. PlayerManager.Instance.gameConstantConfig.BasicCDperSkill / 1000) + addcd));
  1115. }
  1116. public List<int> GetNumbers(int start, float offset)
  1117. {
  1118. List<int> indexs = new List<int>();
  1119. for (int i = 0; i < Math.Abs(offset); i++)
  1120. {
  1121. if (offset >= 0)
  1122. {
  1123. indexs.Add(SafeMod(start + i + 1));
  1124. }
  1125. else
  1126. {
  1127. indexs.Add(SafeMod(start - i - 1));
  1128. }
  1129. }
  1130. // 确保结果在0-9范围内(循环数组)
  1131. int SafeMod(int n) => (n % 10 + 10) % 10;
  1132. return indexs;
  1133. }
  1134. public override void Hide()
  1135. {
  1136. base.Hide();
  1137. CombatDrive.Instance.CombatController.isUpdate = true;
  1138. }
  1139. public List<SkillWidget> _skillWidgets = new List<SkillWidget>();
  1140. public async CTask<IScorllListWidget> GetIScorllListWidget(int index, RectTransform root)
  1141. {
  1142. if (index < 0 || index >= showSkillInfo.Count)
  1143. return null;
  1144. SkillInfo skillInfo = showSkillInfo[index];
  1145. SkillWidget skillWidget = await UIManager.Instance.CreateGComponent<SkillWidget>(null, ContentRoot);
  1146. skillWidget.InitSkillWidget(skillInfo);
  1147. skillWidget.OnClick = OnClick;
  1148. if (allUseSkill.Contains(skillWidget.skillConfigId))
  1149. {
  1150. skillWidget.Icon_Marsk.SetActive(true);
  1151. }
  1152. else
  1153. {
  1154. skillWidget.Icon_Marsk.SetActive(false);
  1155. }
  1156. _skillWidgets.Add(skillWidget);
  1157. return skillWidget;
  1158. }
  1159. private void UpdateSkillWidget()
  1160. {
  1161. foreach (var skillWidget in _skillWidgets)
  1162. {
  1163. if (allUseSkill.Contains(skillWidget.skillConfigId))
  1164. {
  1165. skillWidget.Icon_Marsk.SetActive(true);
  1166. }
  1167. else
  1168. {
  1169. skillWidget.Icon_Marsk.SetActive(false);
  1170. }
  1171. }
  1172. Text_GongFaCount.text = LanguageManager.Instance.Text(10210, GetMainGongFaCount(),
  1173. PlayerManager.Instance.myHero.powerUpConfig.MaxActiveGongfaNum);
  1174. Text_FuZhuGongFaCount.text = LanguageManager.Instance.Text(10209, GetPassiveGongFaCount(),
  1175. PlayerManager.Instance.myHero.powerUpConfig.MaxPassiveGongfaNum);
  1176. }
  1177. private async void OnClick(ItemWidgetBasic obj)
  1178. {
  1179. SkillWidget skillWidget = obj as SkillWidget;
  1180. if (infoType == 1)
  1181. {
  1182. currentOnclickskillWidget = skillWidget.skillConfigId;
  1183. GongFaUpgradePanel gongFaUpgradePanel = await GongFaUpgradePanel.Open(skillWidget.skillConfigId);
  1184. await gongFaUpgradePanel.UIClosed();
  1185. Sort(type1, type2);
  1186. }
  1187. else if (infoType == 2)
  1188. {
  1189. CloseSelect();
  1190. Btn_Info.GetComponent<RectTransform>().sizeDelta = new Vector2(98, 36);
  1191. Btn_Info.transform.SetParent(ContentRoot);
  1192. Btn_Info.transform.position = skillWidget.InfoPos.position;
  1193. Btn_Info.gameObject.SetActive(true);
  1194. currentSelectedSkill = skillWidget.skillConfigId;
  1195. if (allUseSkill.Contains(skillWidget.skillConfigId))
  1196. {
  1197. return;
  1198. }
  1199. Btn_RemoveGongFa.gameObject.SetActive(false);
  1200. if (!IsMainGongFaChange(skillWidget.skillConfigId.skillConfig) ||
  1201. !IsPassiveGongFaChange(skillWidget.skillConfigId.skillConfig))
  1202. {
  1203. SelectSkill(skillWidget.skillConfigId, true, true);
  1204. }
  1205. else
  1206. {
  1207. SelectSkill(skillWidget.skillConfigId, false, true);
  1208. }
  1209. }
  1210. if (PlayerGuideManager.Instance.GuideIsCanDo(4, 5))
  1211. {
  1212. PlayerGuideManager.Instance.NextGuide();
  1213. }
  1214. if (PlayerGuideManager.Instance.GuideIsCanDo(4, 8))
  1215. {
  1216. PlayerGuideManager.Instance.NextGuide();
  1217. }
  1218. }
  1219. /// <summary>
  1220. /// 获得主功法数量
  1221. /// </summary>
  1222. /// <returns></returns>
  1223. private int GetMainGongFaCount()
  1224. {
  1225. int count = 0;
  1226. for (var i = 0; i < allUseSkill.Length; i++)
  1227. {
  1228. if (allUseSkill[i] != null && allUseSkill[i].skillConfig.SkillType == 1)
  1229. {
  1230. count++;
  1231. }
  1232. }
  1233. return count;
  1234. }
  1235. /// <summary>
  1236. /// 获得被动功法数量
  1237. /// </summary>
  1238. /// <returns></returns>
  1239. private int GetPassiveGongFaCount()
  1240. {
  1241. int count = 0;
  1242. for (var i = 0; i < allUseSkill.Length; i++)
  1243. {
  1244. if (allUseSkill[i] != null && allUseSkill[i].skillConfig.SkillType == 2)
  1245. {
  1246. count++;
  1247. }
  1248. }
  1249. return count;
  1250. }
  1251. private bool IsMainGongFaChange(SkillConfig s)
  1252. {
  1253. if (GetMainGongFaCount() < PlayerManager.Instance.myHero.powerUpConfig.MaxActiveGongfaNum ||
  1254. s.SkillType != 1)
  1255. {
  1256. return true;
  1257. }
  1258. else
  1259. {
  1260. return false;
  1261. }
  1262. }
  1263. private bool IsPassiveGongFaChange(SkillConfig s)
  1264. {
  1265. if (GetPassiveGongFaCount() < PlayerManager.Instance.myHero.powerUpConfig.MaxPassiveGongfaNum ||
  1266. s.SkillType != 2)
  1267. {
  1268. return true;
  1269. }
  1270. else
  1271. {
  1272. return false;
  1273. }
  1274. }
  1275. public void HindIScorllListWidget(IScorllListWidget widget)
  1276. {
  1277. UIManager.Instance.DormancyGComponent(widget as SkillWidget);
  1278. _skillWidgets.Remove(widget as SkillWidget);
  1279. }
  1280. public async override CTask Close()
  1281. {
  1282. foreach (var skillWidget in _skillWidgets)
  1283. {
  1284. UIManager.Instance.DormancyGComponent(skillWidget);
  1285. }
  1286. _skillWidgets.Clear();
  1287. foreach (var skillKongWidget in allKongSkill)
  1288. {
  1289. UIManager.Instance.DormancyGComponent(skillKongWidget);
  1290. }
  1291. allKongSkill.Clear();
  1292. foreach (var wuXingGongFaWidget in _wuXingGongFaWidgets)
  1293. {
  1294. UIManager.Instance.DormancyGComponent(wuXingGongFaWidget);
  1295. }
  1296. Icon_Select.gameObject.SetActive(false);
  1297. _wuXingGongFaWidgets.Clear();
  1298. CloseSelect();
  1299. currentOnclickskillWidget = null;
  1300. // ChangeInfoType(1);
  1301. await base.Close();
  1302. }
  1303. }
  1304. }