SHARE
TWEET

Untitled

a guest Mar 25th, 2019 72 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top