SkillSelectPanel.cs 50 KB

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