Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.33 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. using UnityEngine;
  7. using JOWEngine;
  8. using Utils;
  9. using msg;
  10. namespace JOWGame
  11. {
  12. [UILogicHandler(UIDef.UI_GENERAL_PARTNER)]
  13. class GeneralPartnerUI : UILogicBase
  14. {
  15. GameButton btnClose, btnRule;
  16.  
  17. GameTile tabTile;
  18. List<GameIndicateCheckBox> tabButtons = new List<GameIndicateCheckBox>();
  19. List<GameLabel> lbTabMarks = new List<GameLabel>();
  20.  
  21. GameScrollView scrollView;
  22. GameUIComponent compFront, compMiddle, compBack;
  23. GameScrollView scrollViewProperty;
  24. GameTile frontTile, middleTile, backTile;
  25. GameLabel lbhasNoFrontProperty, lbhasNoMiddleProperty, lbhasNoBackProperty;
  26.  
  27. GameTile generalPartnerTile;
  28. List<GeneralPartnerItem> generalPartnerItemList = new List<GeneralPartnerItem>();
  29. List<DGeneralPartner> generalPartnerInfoList = new List<DGeneralPartner>();
  30. List<DGeneralPartner> curIndexGeneralPartnerInfoList = new List<DGeneralPartner>();
  31.  
  32. Map<string, int> frontPropertyMap = new Map<string, int>();
  33. Map<string, int> middlePropertyMap = new Map<string, int>();
  34. Map<string, int> backPropertyMap = new Map<string, int>();
  35.  
  36. string[] tabNameArray = LocaleMod.GetStrArray("GeneralPartnerUI_tabNameArray");
  37. public static string[] teamNameArray = LocaleMod.GetStrArray("GeneralPartnerUI_teamNameArray");
  38.  
  39. public static List<int> preSignStateList = new List<int>();
  40. int MAX_TAB_COUNT = 4;
  41.  
  42. protected override void OnInit()
  43. {
  44. base.OnInit();
  45.  
  46. btnClose = Make<GameButton>("back");
  47. btnClose.AddClickCallBack(onClickClose);
  48.  
  49. btnRule = Make<GameButton>("bangzhu");
  50. btnRule.AddClickCallBack(onClickRule);
  51.  
  52. tabTile = Make<GameTile>("biaoqianye:UIGrid");
  53. tabTile.EnsureSize<GameIndicateCheckBox>(MAX_TAB_COUNT);
  54.  
  55. if (tabNameArray.Length > 0)
  56. MAX_TAB_COUNT = tabNameArray.Length;
  57.  
  58. for (int i = 0; i < MAX_TAB_COUNT; i++)
  59. {
  60. GameIndicateCheckBox btn = tabTile.GetChild<GameIndicateCheckBox>(i);
  61. btn.Parameter = i + 1;
  62. btn.AddClickCallBack(onTabBtnClick);
  63. tabButtons.Add(btn);
  64.  
  65. GameLabel lbTabmark = Make<GameLabel>("Checkmark:Label", btn.gameObject);
  66. lbTabMarks.Add(lbTabmark);
  67. }
  68.  
  69. for (int i = 0; i < tabButtons.Count; i++)
  70. {
  71. tabButtons[i].Text = tabNameArray[i];
  72. lbTabMarks[i].Text = tabNameArray[i];
  73. }
  74.  
  75. scrollViewProperty = Make<GameScrollView>("jihuoshuxing:Scroll View");
  76. frontTile = Make<GameTile>("qianpaishuxing :UIGrid");
  77. middleTile = Make<GameTile>("zhongpaishuxing:UIGrid");
  78. backTile = Make<GameTile>("houpaishuxing:UIGrid");
  79.  
  80. lbhasNoFrontProperty = Make<GameLabel>("qianpaishuxing :qianpai:shuzhi-1");
  81. lbhasNoMiddleProperty = Make<GameLabel>("zhongpaishuxing:qianpai:shuzhi-1");
  82. lbhasNoBackProperty = Make<GameLabel>("houpaishuxing:qianpai:shuzhi-1");
  83.  
  84. string str = LocaleMod.GetString("GeneralPartnerUI_activeTips");
  85. lbhasNoFrontProperty.Text = lbhasNoMiddleProperty.Text = lbhasNoBackProperty.Text = str;
  86.  
  87. generalPartnerTile = Make<GameTile>("jihuoshuxing:Scroll View:UIGrid");
  88.  
  89. scrollView = Make<GameScrollView>("huobanshuxing:Scroll View");
  90. compFront = Make<GameUIComponent>("qianpaishuxing ", scrollView.gameObject);
  91. compMiddle = Make<GameUIComponent>("zhongpaishuxing", scrollView.gameObject);
  92. compBack = Make<GameUIComponent>("houpaishuxing", scrollView.gameObject);
  93. }
  94.  
  95. int curIndex = 0;
  96. bool clickTabByShow = false;
  97. public override void OnShow(object param)
  98. {
  99. base.OnShow(param);
  100.  
  101. MsgHandler.Reg(MsgDef.SCGetGeneralPartnerInfo, onGetGeneralPartnerInfoMsg);
  102. MsgHandler.Reg(MsgDef.SCGeneralPartnerOperate, onGetGeneralPartnerOperateMsg);
  103. MsgHandler.Reg(MsgDef.SCHumanInfoChange, onHumanInfoChange);
  104.  
  105. //curIndex = 0;
  106. clickTabByShow = true;
  107.  
  108. int type = 1;
  109. bool useParam = false;
  110. if (param != null && param.GetType() == typeof(int))
  111. {
  112. type = (int)param;
  113. useParam = true;
  114. }
  115.  
  116. if (useParam == true)
  117. {
  118. onTabBtnClick(tabButtons[type - 1].gameObject);
  119. }
  120. else if (preSignStateList.Count > 0)
  121. {
  122. int index = 0;
  123. for (int i = 0; i < preSignStateList.Count; i++)
  124. {
  125. if (preSignStateList[i] == 1)
  126. {
  127. index = i;
  128. break;
  129. }
  130. }
  131. onTabBtnClick(tabButtons[index].gameObject);
  132. preSignStateList.Clear();
  133. }
  134. else
  135. {
  136. if (curIndex > 0 && curIndex <= tabButtons.Count)
  137. onTabBtnClick(tabButtons[curIndex - 1].gameObject);
  138. else
  139. onTabBtnClick(tabButtons[0].gameObject);
  140. }
  141. }
  142.  
  143. private void onClickClose(GameObject obj)
  144. {
  145. CloseFrame();
  146. }
  147.  
  148. private void onClickRule(GameObject obj)
  149. {
  150. Functions.ui.ShowUI(UIDef.UI_GENERAL_RULE, 32);
  151. }
  152.  
  153. private void onTabBtnClick(GameObject obj)
  154. {
  155. int ind = (int)obj.ToGameUIComponent<GameIndicateCheckBox>().Parameter;
  156.  
  157. if (curIndex != ind || clickTabByShow == true)
  158. {
  159. for (int i = 0; i < tabButtons.Count; i++)
  160. tabButtons[i].Checked = (ind == i + 1 ? true : false);
  161.  
  162. CSGetGeneralPartnerInfo msg = new CSGetGeneralPartnerInfo();
  163. msg.type = ind;
  164. Functions.net.Send.SafeInvoke(msg);
  165.  
  166. curIndex = ind;
  167.  
  168. scrollViewProperty.ScrllToTop();
  169. clickTabByShow = false;
  170. }
  171. }
  172.  
  173. private int getState(DGeneralPartner info)
  174. {
  175. ConfGeneralPartner confGeneralPartner;
  176. ConfGeneralPartner.GetConfig(info.sn, out confGeneralPartner);
  177. int level = confGeneralPartner.level;
  178. if (level == 0)
  179. {
  180. if (info.starLevel <= 0)
  181. {
  182. return 1;
  183. }
  184. else
  185. {
  186. return 2;
  187. }
  188. }
  189. else
  190. {
  191. if (info.canLevelUp == false)
  192. {
  193. if (confGeneralPartner.isMaxLevel <= 0)
  194. return 3;
  195. else
  196. return 5;
  197. }
  198. else
  199. return 4;
  200. }
  201. }
  202.  
  203. public int compareGeneralPartnerList(DGeneralPartner x, DGeneralPartner y)
  204. {
  205. int stateX = getState(x);
  206. int stateY = getState(y);
  207.  
  208. if (stateX != stateY)
  209. {
  210. if (stateX == 2)
  211. return -1;
  212. else if (stateY == 2)
  213. return 1;
  214. else if (stateX == 4)
  215. return -1;
  216. else if (stateY == 4)
  217. return 1;
  218. else if (stateX == 1)
  219. return -1;
  220. else if (stateY == 1)
  221. return 1;
  222. else if (stateX == 3)
  223. return -1;
  224. else if (stateY == 3)
  225. return 1;
  226. }
  227. else
  228. {
  229. if (x.sn < y.sn)
  230. return -1;
  231. else if (x.sn > y.sn)
  232. return 1;
  233. else
  234. return 0;
  235. }
  236.  
  237. return 0;
  238. }
  239.  
  240. private void onGetGeneralPartnerInfoMsg(object obj)
  241. {
  242. SCGetGeneralPartnerInfo msg = obj as SCGetGeneralPartnerInfo;
  243.  
  244. msg.generalParteners.Sort(compareGeneralPartnerList);
  245.  
  246. generalPartnerInfoList.Clear();
  247. curIndexGeneralPartnerInfoList.Clear();
  248. generalPartnerItemList.Clear();
  249.  
  250. generalPartnerInfoList.AddRange(msg.generalParteners);
  251. for (int i = 0; i < msg.generalParteners.Count; i++)
  252. {
  253. ConfGeneralPartner conf;
  254. if (ConfGeneralPartner.GetConfig(msg.generalParteners[i].sn, out conf))
  255. {
  256. ConfCharacterGeneral confCharacter;
  257. if (ConfCharacterGeneral.GetConfig(conf.generalSn, out confCharacter))
  258. {
  259. if (checkTalentAndTabIndex(confCharacter.talent, msg.type))
  260. curIndexGeneralPartnerInfoList.Add(msg.generalParteners[i]);
  261. }
  262. }
  263. }
  264.  
  265. generalPartnerTile.EnsureSize<GeneralPartnerItem>(curIndexGeneralPartnerInfoList.Count);
  266. for (int i = 0; i < curIndexGeneralPartnerInfoList.Count; i++)
  267. {
  268. GeneralPartnerItem item = generalPartnerTile.GetChild<GeneralPartnerItem>(i);
  269. item.PBGeneralPartnerInfo = curIndexGeneralPartnerInfoList[i];
  270. generalPartnerItemList.Add(item);
  271. }
  272.  
  273. updateTabAndPropertyInfoUI(msg);
  274. }
  275.  
  276. bool checkTalentAndTabIndex(int talent, int type)
  277. {
  278. if (type == 1 || type == 2)
  279. {
  280. if (talent == type)
  281. return true;
  282. return false;
  283. }
  284. else if (type == 3)
  285. {
  286. if (talent == 3 || talent == 4)
  287. return true;
  288. return false;
  289. }
  290. else if (type == 4)
  291. {
  292. if (talent == 5 || talent == 6)
  293. return true;
  294. return false;
  295. }
  296.  
  297. return false;
  298. }
  299.  
  300. private void updatepropertyMap()
  301. {
  302. frontPropertyMap.Clear();
  303. middlePropertyMap.Clear();
  304. backPropertyMap.Clear();
  305.  
  306. for (int i = 0; i < generalPartnerInfoList.Count; i++)
  307. {
  308. GeneralPartnerItem item = new GeneralPartnerItem();
  309. item.PBGeneralPartnerInfo = generalPartnerInfoList[i];
  310. if (item.confGeneralPartner.value <= 0)
  311. continue;
  312.  
  313. if (item.confCharacterGeneral.profession == 1)
  314. {
  315. if (frontPropertyMap.ContainsKey(item.confGeneralPartner.property))
  316. frontPropertyMap[item.confGeneralPartner.property] += item.confGeneralPartner.value;
  317. else
  318. frontPropertyMap[item.confGeneralPartner.property] = item.confGeneralPartner.value;
  319. }
  320. else if (item.confCharacterGeneral.profession == 2)
  321. {
  322. if (middlePropertyMap.ContainsKey(item.confGeneralPartner.property))
  323. middlePropertyMap[item.confGeneralPartner.property] += item.confGeneralPartner.value;
  324. else
  325. middlePropertyMap[item.confGeneralPartner.property] = item.confGeneralPartner.value;
  326. }
  327. else if (item.confCharacterGeneral.profession == 3)
  328. {
  329. if (backPropertyMap.ContainsKey(item.confGeneralPartner.property))
  330. backPropertyMap[item.confGeneralPartner.property] += item.confGeneralPartner.value;
  331. else
  332. backPropertyMap[item.confGeneralPartner.property] = item.confGeneralPartner.value;
  333. }
  334. }
  335. }
  336.  
  337. private void updateTabAndPropertyInfoUI(SCGetGeneralPartnerInfo info)
  338. {
  339. for (int i = 0; i < tabButtons.Count; i++)
  340. {
  341. lbTabMarks[i].Text = tabButtons[i].Text = tabNameArray[i] + "(" + info.activeNumList[i * 2] + "/" + info.activeNumList[i * 2 + 1] + ")";
  342. tabButtons[i].ShowSign(info.signStateList[i] > 0);
  343. }
  344.  
  345. updatePropertyInfoUI();
  346. }
  347.  
  348. private void updatePropertyInfoUI()
  349. {
  350. updatepropertyMap();
  351.  
  352. frontTile.Clear();
  353. middleTile.Clear();
  354. backTile.Clear();
  355.  
  356. frontTile.EnsureSize<PropertyItem>(frontPropertyMap.Count);
  357. middleTile.EnsureSize<PropertyItem>(middlePropertyMap.Count);
  358. backTile.EnsureSize<PropertyItem>(backPropertyMap.Count);
  359.  
  360. int itemIndex = 0;
  361. foreach (string key in frontPropertyMap.Keys)
  362. {
  363. int value = frontPropertyMap[key];
  364. PropertyItem item = frontTile.GetChild<PropertyItem>(itemIndex);
  365. item.setProperty(key, value);
  366. itemIndex++;
  367. }
  368.  
  369. if (frontPropertyMap.Count == 0)
  370. {
  371. lbhasNoFrontProperty.Visible = true;
  372. setAnchor(compMiddle, lbhasNoFrontProperty);
  373. }
  374. else
  375. {
  376. lbhasNoFrontProperty.Visible = false;
  377. setAnchor(compMiddle, frontTile.GetChild<PropertyItem>(frontPropertyMap.Count - 1));
  378. }
  379.  
  380. itemIndex = 0;
  381. foreach (string key in middlePropertyMap.Keys)
  382. {
  383. int value = middlePropertyMap[key];
  384. PropertyItem item = middleTile.GetChild<PropertyItem>(itemIndex);
  385. item.setProperty(key, value);
  386. itemIndex++;
  387. }
  388.  
  389. if (middlePropertyMap.Count == 0)
  390. {
  391. lbhasNoMiddleProperty.Visible = true;
  392. setAnchor(compBack, lbhasNoMiddleProperty);
  393. }
  394. else
  395. {
  396. lbhasNoMiddleProperty.Visible = false;
  397. setAnchor(compBack, middleTile.GetChild<PropertyItem>(middlePropertyMap.Count - 1));
  398. }
  399.  
  400. itemIndex = 0;
  401. foreach (string key in backPropertyMap.Keys)
  402. {
  403. int value = backPropertyMap[key];
  404. PropertyItem item = backTile.GetChild<PropertyItem>(itemIndex);
  405. item.setProperty(key, value);
  406. itemIndex++;
  407. }
  408.  
  409. lbhasNoBackProperty.Visible = backPropertyMap.Count == 0 ? true : false;
  410. }
  411.  
  412.  
  413. private void setAnchor(GameUIComponent setComp, GameUIComponent settedComp)
  414. {
  415. setComp.Widget.topAnchor.target = settedComp.gameObject.transform;
  416. setComp.Widget.bottomAnchor.target = settedComp.gameObject.transform;
  417. setComp.Widget.ResetAnchors();
  418. setComp.Widget.UpdateAnchors();
  419. }
  420.  
  421. private void onGetGeneralPartnerOperateMsg(object obj)
  422. {
  423. SCGeneralPartnerOperate msg = obj as SCGeneralPartnerOperate;
  424.  
  425. ConfGeneralPartner conf;
  426. ConfGeneralPartner.GetConfig(msg.generalPartner.sn, out conf);
  427.  
  428. string operateGeneralSn = "";
  429. for (int i = 0; i < curIndexGeneralPartnerInfoList.Count; i++)
  430. {
  431. if (generalPartnerItemList[i].confGeneralPartner.generalSn == conf.generalSn)
  432. {
  433. curIndexGeneralPartnerInfoList[i] = msg.generalPartner;
  434. generalPartnerItemList[i].PBGeneralPartnerInfo = msg.generalPartner;
  435. generalPartnerItemList[i].showUpgradeEffect();
  436. operateGeneralSn = conf.generalSn;
  437. }
  438. else
  439. {
  440. generalPartnerItemList[i].PBGeneralPartnerInfo = curIndexGeneralPartnerInfoList[i];
  441. }
  442. }
  443.  
  444. for (int i = 0; i < generalPartnerInfoList.Count; i++)
  445. {
  446. ConfGeneralPartner.GetConfig(generalPartnerInfoList[i].sn, out conf);
  447. if (conf.generalSn == operateGeneralSn)
  448. {
  449. generalPartnerInfoList[i] = msg.generalPartner;
  450. break;
  451. }
  452. }
  453.  
  454. updateTabSignState();
  455. updatePropertyInfoUI();
  456.  
  457. if (msg.isSuccess == true)
  458. {
  459. if (msg.type == 1)
  460. ChatMod.ShowMessage(LocaleMod.GetString("GeneralPartnerUI_activeSuccess"));
  461. else
  462. ChatMod.ShowMessage(LocaleMod.GetString("GeneralPartnerUI_upgradeSuccess"));
  463. }
  464. }
  465.  
  466. private void updateTabSignState()
  467. {
  468. List<int> signStateList = new List<int>();
  469. List<int> activeNumList = new List<int>();
  470. List<int> maxNumList = new List<int>();
  471.  
  472. for (int i = 0; i < MAX_TAB_COUNT; i++)
  473. {
  474. signStateList.Add(0);
  475. activeNumList.Add(0);
  476. maxNumList.Add(0);
  477. }
  478.  
  479. for (int i = 0; i < generalPartnerInfoList.Count; i++)
  480. {
  481. int infoState = getCanOperateAndActiveNum(generalPartnerInfoList[i]);
  482. int index = infoState / 100;
  483. int state = infoState % 100;
  484.  
  485. if (index == 0)
  486. continue;
  487.  
  488. if (state == 3)
  489. {
  490. signStateList[index - 1] = 1;
  491. activeNumList[index - 1]++;
  492. }
  493. else if (state == 1)
  494. {
  495. signStateList[index - 1] = 1;
  496. }
  497. else if (state == 2)
  498. {
  499. activeNumList[index - 1]++;
  500. }
  501.  
  502. maxNumList[index - 1]++;
  503. }
  504.  
  505. for (int i = 0; i < MAX_TAB_COUNT; i++)
  506. {
  507. tabButtons[i].ShowSign(signStateList[i] == 1);
  508. tabButtons[i].Text = lbTabMarks[i].Text = tabNameArray[i] + "(" + activeNumList[i] + "/" + maxNumList[i] + ")";
  509. }
  510. }
  511.  
  512. int getCanOperateAndActiveNum(DGeneralPartner info)
  513. {
  514. ConfCharacterGeneral confCharacterGeneral;
  515. ConfGeneralPartner confGeneralPartner;
  516.  
  517. int state = 0;
  518.  
  519. ConfGeneralPartner.GetConfig(info.sn, out confGeneralPartner);
  520. ConfCharacterGeneral.GetConfig(confGeneralPartner.generalSn, out confCharacterGeneral);
  521.  
  522. int index = getTabIndexByTalent(confCharacterGeneral.talent);
  523.  
  524. int level = confGeneralPartner.level;
  525. if (level == 0)
  526. {
  527. if (info.starLevel <= 0)
  528. {
  529. state = 1;
  530. }
  531. else
  532. {
  533. state = 2;
  534. }
  535. }
  536. else
  537. {
  538. if (info.canLevelUp == false)
  539. {
  540. if (confGeneralPartner.isMaxLevel <= 0)
  541. state = 3;
  542. else
  543. state = 5;
  544. }
  545. else
  546. state = 4;
  547. }
  548.  
  549. if (state == 2 || state == 4)
  550. {
  551. if (confGeneralPartner.cost <= PlayerInfo.Instance.HeroInfo.coin)
  552. {
  553. if (state == 2)
  554. return 1 + index * 100;//未激活,但是可操作
  555. else
  556. return 3 + index * 100;//已激活并且可操作
  557. }
  558. }
  559.  
  560. if (state != 1 && state != 2)
  561. return 2 + index * 100;//已激活,不可操作
  562.  
  563. return 0 + index * 100;//未激活且不可操作
  564. }
  565.  
  566. int getTabIndexByTalent(int talent)
  567. {
  568. if (talent == 1 || talent == 2)
  569. return talent;
  570. else if (talent == 3 || talent == 4)
  571. return 3;
  572. else if (talent == 5 || talent == 6)
  573. return 4;
  574.  
  575. return 0;
  576. }
  577.  
  578. private void onHumanInfoChange(object obj)
  579. {
  580. SCHumanInfoChange msg = obj as SCHumanInfoChange;
  581. for (int i = 0; i < generalPartnerItemList.Count; i++)
  582. {
  583. generalPartnerItemList[i].updateMoneyNumState();
  584. }
  585.  
  586. updateTabSignState();
  587. }
  588.  
  589. public override void OnHide()
  590. {
  591. base.OnHide();
  592.  
  593. MsgHandler.UnReg(MsgDef.SCGetGeneralPartnerInfo, onGetGeneralPartnerInfoMsg);
  594. MsgHandler.UnReg(MsgDef.SCGeneralPartnerOperate, onGetGeneralPartnerOperateMsg);
  595. MsgHandler.UnReg(MsgDef.SCHumanInfoChange, onHumanInfoChange);
  596. }
  597. }
  598.  
  599. class PropertyItem : GameLabel
  600. {
  601. GameLabel lbPropertyName, lbPropertyNum;
  602.  
  603. protected override void OnInit()
  604. {
  605. base.OnInit();
  606. lbPropertyName = Make<GameLabel>("shuxing:zuo1");
  607. lbPropertyNum = Make<GameLabel>("shuxing:zuo1:shuzhi");
  608. }
  609.  
  610. public override void OnShow(object param)
  611. {
  612. base.OnShow(param);
  613. }
  614.  
  615. public void setProperty(string property, int value)
  616. {
  617. ConfAttr attrconf = ConfAttr.Get(property);
  618. lbPropertyName.Text = attrconf.displayname + ":";
  619. lbPropertyNum.Text = "+" + GameConst.GetFormatAttValue(value, attrconf);
  620. }
  621. }
  622.  
  623. class GeneralPartnerItem : GameUIComponent
  624. {
  625. GameUIComponent compHead;
  626. GameImage imgHead, imgBorder;
  627. GameTile starTile;
  628.  
  629. GameLabel lbActiveState, lbUpgradeCondition;
  630. GameLabel lbLeftProperty, lbRightProperty;
  631. GameImage imgArrow;
  632.  
  633. GameImage imgMoney;
  634. GameLabel lbMoneyNum;
  635. GameButton btnUpgrade;
  636.  
  637. GameUIComponent compSign;
  638. public GameUIEffect upgradeEffect;
  639.  
  640. public DGeneralPartner info;
  641. public ConfCharacterGeneral confCharacterGeneral;
  642. public ConfGeneralPartner confGeneralPartner;
  643.  
  644. public int state = 0;
  645.  
  646. public void updateConfAndState()
  647. {
  648. ConfGeneralPartner.GetConfig(info.sn, out confGeneralPartner);
  649. ConfCharacterGeneral.GetConfig(confGeneralPartner.generalSn, out confCharacterGeneral);
  650. int level = confGeneralPartner.level;
  651. if (level == 0)
  652. {
  653. if (info.starLevel <= 0)
  654. {
  655. state = 1;
  656. }
  657. else
  658. {
  659. state = 2;
  660. }
  661. }
  662. else
  663. {
  664. if (info.canLevelUp == false)
  665. {
  666. if (confGeneralPartner.isMaxLevel <= 0)
  667. state = 3;
  668. else
  669. state = 5;
  670. }
  671. else
  672. state = 4;
  673. }
  674. }
  675.  
  676. public DGeneralPartner PBGeneralPartnerInfo
  677. {
  678. set
  679. {
  680. info = value;
  681. updateConfAndState();
  682. if (compHead != null)
  683. updateView();
  684. }
  685. get { return info; }
  686. }
  687.  
  688. protected override void OnInit()
  689. {
  690. base.OnInit();
  691.  
  692. compHead = Make<GameUIComponent>("Herohead");
  693. compHead.AddClickCallBack(onClickHead);
  694.  
  695. imgHead = Make<GameImage>("itemtubiao");
  696. imgBorder = Make<GameImage>("outside");
  697. starTile = Make<GameTile>("Stars");
  698.  
  699. lbActiveState = Make<GameLabel>("jihuotiaojian");
  700. lbUpgradeCondition = Make<GameLabel>("dengjiweijihuo");
  701.  
  702. lbLeftProperty = Make<GameLabel>("shuxing");
  703. lbRightProperty = Make<GameLabel>("shuxing2");
  704. imgArrow = Make<GameImage>("shengji:jiantou");
  705.  
  706. imgMoney = Make<GameImage>("tongbiimage");
  707. lbMoneyNum = Make<GameLabel>("chushoutongbinum");
  708. btnUpgrade = Make<GameButton>("button-jihuo");
  709. btnUpgrade.AddClickCallBack(onClickUpgrade);
  710.  
  711. compSign = Make<GameUIComponent>("numkuang");
  712. upgradeEffect = Make<GameUIEffect>("jihuotexiaoguadian");
  713. }
  714.  
  715. public override void OnShow(object param)
  716. {
  717. base.OnShow(param);
  718. upgradeEffect.Visible = false;
  719. }
  720.  
  721. public void showUpgradeEffect()
  722. {
  723. upgradeEffect.PrefabName = "ui_zbsj_01.prefab";
  724. upgradeEffect.SetScale(1, 3080);
  725. upgradeEffect.Visible = false;
  726. upgradeEffect.Visible = true;
  727. }
  728.  
  729. private void onClickHead(GameObject obj)
  730. {
  731. IconPressEvent evt = TipUILogic.tipEvt;
  732. evt.posObjSource = obj;
  733. evt.tipType = IconTipType.TIP_CONFGENERAL;
  734. evt.param = confCharacterGeneral;
  735. evt.sourceID = "";
  736. Events.tip.OnIconPressEvent.SafeInvoke(evt);
  737. }
  738.  
  739. private void onClickUpgrade(GameObject obj)
  740. {
  741. if (state == 1 || state == 3 || state == 5)
  742. {
  743. ChatMod.ShowMessage(lbUpgradeCondition.Text);
  744. return;
  745. }
  746.  
  747. if (PlayerInfo.Instance.HeroInfo.coin < confGeneralPartner.cost)
  748. {
  749. ChatMod.showMoneyTree(UIDef.UI_GENERAL_PARTNER);
  750. return;
  751. }
  752.  
  753. CSGeneralPartnerOperate msg = new CSGeneralPartnerOperate();
  754. if (state == 2)
  755. {
  756. msg.type = 1;
  757. }
  758. else
  759. {
  760. msg.type = 2;
  761. }
  762. msg.sn = info.sn;
  763. Functions.net.Send.SafeInvoke(msg);
  764. }
  765.  
  766. private ConfGeneralPartner getNextlevelConf(ConfGeneralPartner lastConf)
  767. {
  768. for (int i = 0; i < ConfGeneralPartner.array.Count; i++)
  769. {
  770. if (ConfGeneralPartner.array[i].generalSn == lastConf.generalSn && ConfGeneralPartner.array[i].level == lastConf.level + 1)
  771. {
  772. return ConfGeneralPartner.array[i];
  773. }
  774. }
  775. return null;
  776. }
  777.  
  778. private void updateView()
  779. {
  780. imgHead.Sprite = confCharacterGeneral.modelSn;
  781. imgHead.SetGray(state == 1);
  782.  
  783. GeneralInfo generalInfo = PlayerInfo.Instance.GetGeneralByModelSn(confCharacterGeneral.modelSn);
  784. int advanceLevel = 0;
  785. if (generalInfo != null)
  786. advanceLevel = generalInfo.AdvanceLevel;
  787. imgBorder.Sprite = GameConst.GetGenearlBorderName(advanceLevel);
  788. GeneralInfo.MakeGeneralStartUI(starTile, info.starLevel);
  789.  
  790. if (state != 5)
  791. {
  792. if (state == 1)
  793. {
  794. lbActiveState.Text = LocaleMod.GetString("GeneralPartnerUI_notActive");
  795. lbUpgradeCondition.Text = confCharacterGeneral.name + " " + LocaleMod.GetString("GeneralPartnerUI_activeCondition");
  796.  
  797. lbLeftProperty.Visible = true;
  798. imgArrow.Visible = false;
  799. lbRightProperty.Visible = false;
  800.  
  801. ConfGeneralPartner conf = getNextlevelConf(confGeneralPartner);
  802. if (conf != null)
  803. {
  804. ConfAttr attrconf = ConfAttr.Get(conf.property);
  805. lbLeftProperty.Text = GeneralPartnerUI.teamNameArray[confCharacterGeneral.profession - 1] +" "+ attrconf.displayname + "+" + GameConst.GetFormatAttValue(conf.value, attrconf);
  806. }
  807.  
  808. btnUpgrade.Text = LocaleMod.GetString("GeneralPartnerUI_active");
  809. btnUpgrade.SetGray(true);
  810.  
  811. compSign.Visible = false;
  812.  
  813. updateMoneyNumState();
  814. }
  815. else if (state == 2)
  816. {
  817. lbActiveState.Text = LocaleMod.GetString("GeneralPartnerUI_canActive");
  818. lbUpgradeCondition.Text = confCharacterGeneral.name + " " + LocaleMod.GetString("GeneralPartnerUI_activeCondition");
  819.  
  820. lbLeftProperty.Visible = true;
  821. imgArrow.Visible = false;
  822. lbRightProperty.Visible = false;
  823.  
  824. ConfGeneralPartner conf = getNextlevelConf(confGeneralPartner);
  825. if (conf != null)
  826. {
  827. ConfAttr attrconf = ConfAttr.Get(conf.property);
  828. lbLeftProperty.Text = GeneralPartnerUI.teamNameArray[confCharacterGeneral.profession - 1] + " " + attrconf.displayname + "+" + GameConst.GetFormatAttValue(conf.value, attrconf);
  829. }
  830.  
  831. btnUpgrade.Text = LocaleMod.GetString("GeneralPartnerUI_active");
  832. btnUpgrade.SetGray(false);
  833.  
  834. compSign.Visible = false;
  835.  
  836. updateMoneyNumState();
  837. }
  838. else
  839. {
  840. lbActiveState.Text = LocaleMod.GetString("GeneralPartnerUI_generalPartnerLevel", confGeneralPartner.level);
  841. int upgradeLevel = confGeneralPartner.level + 1;
  842. lbUpgradeCondition.Text = confCharacterGeneral.name + upgradeLevel + LocaleMod.GetString("GeneralPartnerUI_upgradeCondition");
  843.  
  844. lbLeftProperty.Visible = true;
  845. imgArrow.Visible = true;
  846. lbRightProperty.Visible = true;
  847.  
  848. ConfAttr attrconf1 = ConfAttr.Get(confGeneralPartner.property);
  849. lbLeftProperty.Text = GeneralPartnerUI.teamNameArray[confCharacterGeneral.profession - 1] +" " + attrconf1.displayname + "+" + GameConst.GetFormatAttValue(confGeneralPartner.value, attrconf1);
  850. ConfGeneralPartner conf = getNextlevelConf(confGeneralPartner);
  851. if (conf != null)
  852. {
  853. lbRightProperty.Text = "+" + GameConst.GetFormatAttValue(conf.value, attrconf1);
  854. }
  855.  
  856. btnUpgrade.Text = LocaleMod.GetString("GeneralPartnerUI_upgrade");
  857. btnUpgrade.SetGray(!info.canLevelUp);
  858.  
  859. compSign.Visible = false;
  860.  
  861. updateMoneyNumState();
  862. }
  863. }
  864. else
  865. {
  866. lbActiveState.Text = LocaleMod.GetString("GeneralPartnerUI_generalPartnerLevel", confGeneralPartner.level);
  867. lbUpgradeCondition.Text = LocaleMod.GetString("GeneralPartnerUI_hasUpgradeMax");
  868.  
  869. lbLeftProperty.Visible = true;
  870. imgArrow.Visible = false;
  871. lbRightProperty.Visible = false;
  872. ConfAttr attrconf = ConfAttr.Get(confGeneralPartner.property);
  873. lbLeftProperty.Text = GeneralPartnerUI.teamNameArray[confCharacterGeneral.profession - 1] + " " + attrconf.displayname + "+" + GameConst.GetFormatAttValue(confGeneralPartner.value, attrconf);
  874.  
  875. btnUpgrade.Text = LocaleMod.GetString("GeneralPartnerUI_haBeenMaxLevel");
  876. btnUpgrade.SetGray(true);
  877.  
  878. compSign.Visible = false;
  879.  
  880. imgMoney.Visible = false;
  881. }
  882. }
  883.  
  884. public void updateMoneyNumState()
  885. {
  886. if (confGeneralPartner != null)
  887. {
  888. imgMoney.Visible = state != 5;
  889. if (PlayerInfo.Instance.HeroInfo.coin >= confGeneralPartner.cost)
  890. lbMoneyNum.Text = GameConst.color_green + confGeneralPartner.cost + "[-]";
  891. else
  892. lbMoneyNum.Text = GameConst.color_red + confGeneralPartner.cost + "[-]";
  893. }
  894. }
  895. }
  896. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement