//帮会修炼的界面 using Games.LogicObj; using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using System.Collections; using GCGame; using Module.Log; using Games.GlobeDefine; using System.Collections.Generic; using System; using GCGame.Table; using Games.Events; public class GuildXiulianWnd : MonoBehaviour { public class AttrInfo { public int attrID; public Tab_GuildAttrPractice attrTab; public int attrLevel; //-1 表示未开启 public int attrExp; public AttrInfo() { Clear(); } private void Clear() { attrID = -1; attrTab = null; attrLevel = -1; attrExp = 0; } } public Toggle m_ToggleCloneBtn; public UIContainerSelect m_AttrContainer; public Button OneKeyStudyBtn; public GameObject Disable_OneKeyStudyBtn; public Text attrName; public Text levelMax; public Text CurInfo; public Text nextInfo; public Text studyNeed; public Text costMoney; public Image costMoneyIcon; public Text haveCost; public Image haveCostIcon; public Text CostContribute; public Text haveContribute; public Toggle AutoPay; public Image ContributeIconHas; public Image ContributeIconCost; private AttrInfo m_currSelectAttr = null; void Awake() { Games.Events.EventDispatcher.Instance.Add(Games.Events.EventId.AttrStudyInfo, FreshNewInfo); Games.Events.EventDispatcher.Instance.Add(Games.Events.EventId.BuildAttrInfo, AttrInfoSet); Hashtable add2 = new Hashtable(); add2["name"] = "AttrStudyInfo"; Games.Events.MessageEventCallBack call2 = UpdateGuildContribute; add2["callFun"] = call2; Games.Events.EventDispatcher.Instance.AddMessageEvent(Games.Events.EventId.UpdateGuildInfo, add2); Hashtable calbackMoveparam3 = new Hashtable(); calbackMoveparam3["name"] = "GuildXLSetWuFresh"; MessageEventCallBack fun3 = PayFresh; calbackMoveparam3.Add("callFun", fun3); EventDispatcher.Instance.AddMessageEvent(Games.Events.EventId.FRESHSAMEUSETIP, calbackMoveparam3); ContributeIconHas.gameObject.SetActive(false); ContributeIconCost.gameObject.SetActive(false); } void OnDestroy() { Games.Events.EventDispatcher.Instance.Remove(Games.Events.EventId.AttrStudyInfo, FreshNewInfo); Games.Events.EventDispatcher.Instance.Remove(Games.Events.EventId.BuildAttrInfo, AttrInfoSet); Games.Events.EventDispatcher.Instance.RemoveMessage(Games.Events.EventId.UpdateGuildInfo, "AttrStudyInfo"); Games.Events.EventDispatcher.Instance.RemoveMessage(Games.Events.EventId.FRESHSAMEUSETIP, "GuildXLSetWuFresh"); } public void UpdateGuildContribute(Hashtable addtable, Hashtable sendtable) { haveContribute.text = GameManager.gameManager.PlayerDataPool.GuildInfo.GuildContribute.ToString(); } public void PayFresh(Hashtable addparam, Hashtable sendparam) { Click_AttrItem(m_currSelectAttr); } public void AttrInfoSet(object obj) { m_AttrContainer.RefreshItems(); Click_AttrItem(m_currSelectAttr); } public void OnEnable() { if (GameManager.gameManager.PlayerDataPool.GuildInfo.m_AttrInfos.Count <= 0 && GameManager.gameManager.PlayerDataPool.GuildInfo.m_AttrTypes.Count <= 0) { var table = TableManager.GetGuildAttrPractice().Values; foreach (var attrInfo in table) { AttrInfo attr = new AttrInfo(); attr.attrID = attrInfo.Id; attr.attrTab = attrInfo; GameManager.gameManager.PlayerDataPool.GuildInfo.m_AttrInfos[attr.attrID] = attr; GameManager.gameManager.PlayerDataPool.GuildInfo.m_AttrTypes[attrInfo.TypeId] = attrInfo.TypeName; } } if(m_ToggleCloneBtn!=null && m_ToggleCloneBtn.transform.parent.childCount<=1) { CloneToggleBtn(); } } public void FreshNewInfo(object obj) { m_AttrContainer.RefreshItems(); Click_AttrItem(m_currSelectAttr); } public void CloneToggleBtn() { if (m_ToggleCloneBtn == null) return; int index = 0; Toggle FirstShow = null; foreach (var kv in GameManager.gameManager.PlayerDataPool.GuildInfo.m_AttrTypes) { GameObject toggleBtn = UnityEngine.Object.Instantiate(m_ToggleCloneBtn.gameObject) as GameObject; if(toggleBtn != null) { toggleBtn.SetActive(true); toggleBtn.transform.SetParent(m_ToggleCloneBtn.transform.parent); toggleBtn.transform.localScale = Vector3.one; toggleBtn.transform.localPosition = Vector3.zero; Text[] titlenames = toggleBtn.GetComponentsInChildren<Text>(); for(int i = 0;i < titlenames.Length; i++) { titlenames[i].text = kv.Value; } Toggle toggle = toggleBtn.GetComponent<Toggle>(); if(toggle!=null) { toggle.group = m_ToggleCloneBtn.group; int Type = kv.Key; toggle.onValueChanged.AddListener(delegate (bool isOn) { Click_ToggleBtn(isOn, Type); }); } if (index == 0) { FirstShow = toggle; } index++; } } if (FirstShow != null) FirstShow.isOn = true; } public void Click_ToggleBtn(bool isOn, int typeID) { if (isOn == false) return; ShowAttrUpdate(typeID); } public void ShowAttrUpdate(int typeID) { List<AttrInfo> shows = new List<AttrInfo>(); foreach(var attr in GameManager.gameManager.PlayerDataPool.GuildInfo.m_AttrInfos) { if (attr.Value.attrTab != null && attr.Value.attrTab.TypeId == typeID) shows.Add(attr.Value); } if (shows.Count <= 0) return; List<AttrInfo> sels = new List<AttrInfo>(); sels.Add(shows[0]); m_AttrContainer.InitSelectContent(shows, sels, Click_AttrItem); } public void Click_AttrItem(object objAttr) { AttrInfo attr = objAttr as AttrInfo; if (attr == null) return; m_currSelectAttr = attr; if (m_currSelectAttr.attrTab == null) return; attrName.text = string.Format("{0}Lv.{1}", m_currSelectAttr.attrTab.Describe, m_currSelectAttr.attrLevel); levelMax.text = string.Format("Lv.{0}", m_currSelectAttr.attrTab.getLevelCount()); OneKeyStudyBtn.gameObject.SetActive(true); Disable_OneKeyStudyBtn.SetActive(false); if(m_currSelectAttr.attrLevel==-1) { attrName.text = m_currSelectAttr.attrTab.Describe; CurInfo.text = GCGame.Table.StrDictionary.GetClientDictionaryString("#{24982}", m_currSelectAttr.attrTab.GuildCollegeLevel); nextInfo.text = GCGame.Table.StrDictionary.GetClientDictionaryString("#{24982}", m_currSelectAttr.attrTab.GuildCollegeLevel); studyNeed.text = GCGame.Table.StrDictionary.GetClientDictionaryString("#{24982}", m_currSelectAttr.attrTab.GuildCollegeLevel); OneKeyStudyBtn.gameObject.SetActive(false); Disable_OneKeyStudyBtn.SetActive(true); } else if (m_currSelectAttr.attrLevel >= m_currSelectAttr.attrTab.getLevelCount()) { //CurInfo.text = GCGame.Table.StrDictionary.GetClientDictionaryString("#{25096}"); CurInfo.text = GCGame.Table.StrDictionary.GetClientDictionaryString("#{25097}", m_currSelectAttr.attrTab.Describe, m_currSelectAttr.attrTab.GetLevelbyIndex(m_currSelectAttr.attrLevel - 1)); nextInfo.text = GCGame.Table.StrDictionary.GetClientDictionaryString("#{25096}"); studyNeed.text = GCGame.Table.StrDictionary.GetClientDictionaryString("#{25096}"); OneKeyStudyBtn.gameObject.SetActive(false); Disable_OneKeyStudyBtn.SetActive(true); } else { if(m_currSelectAttr.attrLevel < 0) { OneKeyStudyBtn.gameObject.SetActive(false); Disable_OneKeyStudyBtn.SetActive(true); } if(m_currSelectAttr.attrLevel == 0) { CurInfo.text = GCGame.Table.StrDictionary.GetClientDictionaryString("#{25097}", m_currSelectAttr.attrTab.Describe, 0); nextInfo.text = GCGame.Table.StrDictionary.GetClientDictionaryString("#{25097}", m_currSelectAttr.attrTab.Describe, m_currSelectAttr.attrTab.GetLevelbyIndex(m_currSelectAttr.attrLevel)); studyNeed.text = GCGame.Table.StrDictionary.GetClientDictionaryString("#{25098}", 0); } else { CurInfo.text = GCGame.Table.StrDictionary.GetClientDictionaryString("#{25097}", m_currSelectAttr.attrTab.Describe, m_currSelectAttr.attrTab.GetLevelbyIndex(m_currSelectAttr.attrLevel - 1)); nextInfo.text = GCGame.Table.StrDictionary.GetClientDictionaryString("#{25097}", m_currSelectAttr.attrTab.Describe, m_currSelectAttr.attrTab.GetLevelbyIndex(m_currSelectAttr.attrLevel)); studyNeed.text = GCGame.Table.StrDictionary.GetClientDictionaryString("#{25098}", m_currSelectAttr.attrTab.GetNeedLevelbyIndex(m_currSelectAttr.attrLevel)); } } haveCost.text = GameManager.gameManager.PlayerDataPool.Money.GetMoneyByType((MONEYTYPE)m_currSelectAttr.attrTab.MoneyType).ToString(); costMoney.text = m_currSelectAttr.attrLevel == -1 ? "0" : m_currSelectAttr.attrTab.MoneyNum.ToString(); LoadAssetBundle.Instance.SetImageSprite(costMoneyIcon, UICurrencyItem.GetCurrencySprite((MONEYTYPE)m_currSelectAttr.attrTab.MoneyType)); LoadAssetBundle.Instance.SetImageSprite(haveCostIcon, UICurrencyItem.GetCurrencySprite((MONEYTYPE)m_currSelectAttr.attrTab.MoneyType)); CostContribute.text = m_currSelectAttr.attrLevel == -1 ? "0" : m_currSelectAttr.attrTab.ContributeNum.ToString(); haveContribute.text = GameManager.gameManager.PlayerDataPool.GuildInfo.GuildContribute.ToString(); LoadAssetBundle.Instance.SetImageSprite(ContributeIconHas, UICurrencyItem.GetScoreSprite(SCORE_TYPE.GUILD_SCORE),delegate(bool isSucess, GameObject obj) { if(obj) { ContributeIconHas.gameObject.SetActive(true); } }); LoadAssetBundle.Instance.SetImageSprite(ContributeIconCost, UICurrencyItem.GetScoreSprite(SCORE_TYPE.GUILD_SCORE), delegate (bool isSucess, GameObject obj) { if (obj) { ContributeIconCost.gameObject.SetActive(true); } }); } public bool CheckLevelMax() { if (m_currSelectAttr == null || m_currSelectAttr.attrTab == null) return false; if (m_currSelectAttr.attrLevel>=0 && m_currSelectAttr.attrLevel >= m_currSelectAttr.attrTab.getLevelCount()) return true; return false; } public bool CheckLevelNeed() { if (m_currSelectAttr==null || m_currSelectAttr.attrTab == null) return false; if (m_currSelectAttr.attrLevel > m_currSelectAttr.attrTab.getLevelCount()) return false; int needLevel = 0; if(m_currSelectAttr.attrLevel > 0) needLevel = m_currSelectAttr.attrTab.GetNeedLevelbyIndex(m_currSelectAttr.attrLevel); if (Singleton<ObjManager>.Instance.MainPlayer != null && Singleton<ObjManager>.Instance.MainPlayer.BaseAttr.Level >= needLevel) return true; return false; } //一键修炼 public void OneKeyStudy() { if (GameManager.gameManager.m_RunningScene == 658) { GUIData.AddNotifyData(GCGame.Table.StrDictionary.GetClientDictionaryString("#{79512}")); return; } if (m_currSelectAttr==null || m_currSelectAttr.attrTab == null) return; if(m_currSelectAttr.attrLevel < 0) { GUIData.AddNotifyData(GCGame.Table.StrDictionary.GetClientDictionaryString("#{24982}",m_currSelectAttr.attrTab.GuildCollegeLevel)); return; } if (CheckLevelMax()) { GUIData.AddNotifyData(GCGame.Table.StrDictionary.GetClientDictionaryString("#{25125}")); return; } int nPracticeMax1 = 99999999; int nPracticeMax2 = 99999999; int nPracticeCount = 0; if (m_currSelectAttr.attrTab.ContributeNum > GameManager.gameManager.PlayerDataPool.GuildInfo.GuildContribute) { // 帮贡不足,不可修炼 GUIData.AddNotifyData(GCGame.Table.StrDictionary.GetClientDictionaryString("#{25087}")); return; } nPracticeMax1 = GameManager.gameManager.PlayerDataPool.GuildInfo.GuildContribute / m_currSelectAttr.attrTab.ContributeNum; if (m_currSelectAttr.attrTab.MoneyNum > 0) { long haveCoin = GameManager.gameManager.PlayerDataPool.Money.GetMoneyByType(MONEYTYPE.MONEYTYPE_COIN); long haveCoinBind = GameManager.gameManager.PlayerDataPool.Money.GetMoneyByType(MONEYTYPE.MONEYTYPE_COIN_BIND); if (AutoPay.isOn) haveCoinBind = haveCoin + haveCoinBind; nPracticeMax2 = (int)((haveCoinBind) / (long)m_currSelectAttr.attrTab.MoneyNum); if (nPracticeMax2 <= 0) { // 钱不足,不可修炼 GUIData.AddNotifyData(GCGame.Table.StrDictionary.GetClientDictionaryString("#{25086}")); return; } } nPracticeCount = Mathf.Min(nPracticeMax1, nPracticeMax2); int nOneKeyCount = m_currSelectAttr.attrTab.GetExpbyIndex(m_currSelectAttr.attrLevel) - m_currSelectAttr.attrExp; if (nPracticeCount > nOneKeyCount) { nPracticeCount = nOneKeyCount; } if (nPracticeCount > 0) { MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{25045}", nPracticeCount* m_currSelectAttr.attrTab.ContributeNum,nPracticeCount* m_currSelectAttr.attrTab.MoneyNum), null, delegate () { Xiulian((int)CG_REQ_GUILD_PRACTICE.OPTION_TYPE.PRACTICE_ONEKEY); }, null); } } private void Xiulian(int type) { CG_REQ_GUILD_PRACTICE send = (CG_REQ_GUILD_PRACTICE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_GUILD_PRACTICE); send.SetOptiontype(type); send.AddPracticeid(m_currSelectAttr.attrID); send.IsAllowWithSilver = (AutoPay.isOn ? 1 : 0); send.SendPacket(); } //修炼一次 public void StudyOneTimes() { if (GameManager.gameManager.m_RunningScene == 658) { GUIData.AddNotifyData(GCGame.Table.StrDictionary.GetClientDictionaryString("#{79512}")); return; } if (m_currSelectAttr == null) return; if(m_currSelectAttr.attrLevel==-1) { GUIData.AddNotifyData(GCGame.Table.StrDictionary.GetClientDictionaryString("#{24982}", m_currSelectAttr.attrTab.GuildCollegeLevel)); return; } if(CheckLevelNeed()==false) { GUIData.AddNotifyData(GCGame.Table.StrDictionary.GetClientDictionaryString("#{25134}")); return; } if (CheckLevelMax()) { GUIData.AddNotifyData(GCGame.Table.StrDictionary.GetClientDictionaryString("#{25125}")); return; } if (m_currSelectAttr.attrTab == null) return; if (m_currSelectAttr.attrTab.ContributeNum > GameManager.gameManager.PlayerDataPool.GuildInfo.GuildContribute) { // 帮贡不足,不可修炼 GUIData.AddNotifyData(GCGame.Table.StrDictionary.GetClientDictionaryString("#{25087}")); return; } long haveCoin = GameManager.gameManager.PlayerDataPool.Money.GetMoneyByType(MONEYTYPE.MONEYTYPE_COIN); long haveBindCoin = GameManager.gameManager.PlayerDataPool.Money.GetMoneyByType(MONEYTYPE.MONEYTYPE_COIN_BIND); bool isEnough = (haveBindCoin >= m_currSelectAttr.attrTab.MoneyNum); if(isEnough == false && AutoPay.isOn) { isEnough = (haveCoin + haveBindCoin > m_currSelectAttr.attrTab.MoneyNum); } if(isEnough==false) { GUIData.AddNotifyData(GCGame.Table.StrDictionary.GetClientDictionaryString("#{25086}")); return; } Xiulian((int)CG_REQ_GUILD_PRACTICE.OPTION_TYPE.PRACTICE_ONCE); } }