SkillSelectPanel.cs 50 KB

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