using UnityEngine; using UnityEngine.UI; using System.Collections; using Games.Item; using System.Collections.Generic; using GCGame.Table; using Games.GlobeDefine; public class EquipEnhanceHecheng : UIControllerBase { private void Awake() { radius = (modelPoint.position - centerPoint.position).y; } void OnEnable () { SetInstance(this); HechengInit(); } void OnDisable() { _HechengItemContainer.gameObject.SetActive(false); SetInstance(null); _DefaultSelectItem = -1; } public EquipEnhanceRoot _EquipEnhanceRoot; public void UpdateItem() { //HechengPageInner(_TagPage.GetShowingPage(), _SelectItem); if (_TabCombine != null) { OnHechengItemSelect(_TabCombine); foreach (var subMenu in _HechengItemContainer.SubBtns) { //if (subMenu.Key.IsSelected()) // continue; int canCombineTotal = 0; if (_OnlyShowEnough) { foreach (var combineItem in subMenu.Value) { var combineNum = ((EquipHechengItem)combineItem).GetItemCanCombineCnt(); canCombineTotal += combineNum; if (combineNum > 0) { combineItem.ShowMenu(); } else { combineItem.gameObject.SetActive(false); } } if (canCombineTotal > 0) { subMenu.Key.gameObject.SetActive(true); ((EquipHechengItem)subMenu.Key).SetCombineTip(canCombineTotal); } else { subMenu.Key.gameObject.SetActive(false); ((EquipHechengItem)subMenu.Key).SetCombineTip(0); } } else { foreach (var combineItem in subMenu.Value) { var combineNum = ((EquipHechengItem)combineItem).GetItemCanCombineCnt(); canCombineTotal += combineNum; } ((EquipHechengItem)subMenu.Key).SetCombineTip(canCombineTotal); } } } var targetCnt = GameManager.gameManager.PlayerDataPool.BackPack.GetItemCountByDataId(_TargetDataID); if (targetCnt > _TargetDataCnt) { string name = TableManager.GetCommonItemByID(_TargetDataID, 0).Name; GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{5332}", name, (targetCnt - _TargetDataCnt))); } } public static void SetDefaultSelected(int dataID) { _DefaultSelectItem = dataID; } #region private Dictionary> _ItemCombineDict; private static int _DefaultSelectItem = -1; public void InitCombineTable() { if (_ItemCombineDict != null) return; _ItemCombineDict = new Dictionary>(); var tabCombineItem = TableManager.GetItemCombine().Values; foreach (var tabCombineTab in tabCombineItem) { if (tabCombineTab.Profession >= 0 && tabCombineTab.Profession != GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession) continue; if (!_ItemCombineDict.ContainsKey(tabCombineTab.Class)) { _ItemCombineDict.Add(tabCombineTab.Class, new List()); } _ItemCombineDict[tabCombineTab.Class].Add(tabCombineTab); } foreach (var hechengClass in _ItemCombineDict) { //hechengClass.Value.Reverse(); _HechengItemContainer.PushMenu(hechengClass.Key, hechengClass.Value.ToArray()); } } public void HechengInit() { _EquipEnhanceRoot._EquipContainer.gameObject.SetActive(false); _EquipEnhanceRoot._EquipContainer._IsMultiSelect = false; _HechengItemContainer.gameObject.SetActive(true); _BtnHecheng.gameObject.SetActive(false); _DisableBtn.SetActive(true); //_TagPage.ShowPage(0); _OnlyShoEnoughToggle.isOn = false; _OnlyShowEnough = false; OnHechengPage(0); } public void OnHechengPage(int page) { HechengPageInner(page, _DefaultSelectItem); } private void HechengPageInner(int page, int itemdate = -1) { if (itemdate > 0) { SetOnlyShowEnought(false); } InitCombineTable(); object showMenu1 = null; object showMenu2 = null; int canCombineTotal = 0; foreach (var subMenu in _HechengItemContainer.SubBtns) { canCombineTotal = 0; if (_OnlyShowEnough) { subMenu.Key.gameObject.SetActive(false); subMenu.Key.UnSelected(); foreach (var combineItem in subMenu.Value) { var combineNum = ((EquipHechengItem)combineItem).GetItemCanCombineCnt(); canCombineTotal += combineNum; if(combineNum > 0) { //combineItem.ShowMenu(); combineItem.gameObject.SetActive(false); combineItem.UnSelected(); } else { combineItem.gameObject.SetActive(false); combineItem.UnSelected(); } } if (canCombineTotal > 0) { subMenu.Key.gameObject.SetActive(true); ((EquipHechengItem)subMenu.Key).SetCombineTip(canCombineTotal); } else { subMenu.Key.gameObject.SetActive(false); ((EquipHechengItem)subMenu.Key).SetCombineTip(0); } } else { subMenu.Key.gameObject.SetActive(true); ((EquipHechengItem)subMenu.Key).SetCombineTip(0); subMenu.Key.UnSelected(); foreach (var combineItem in subMenu.Value) { if (((EquipHechengItem)combineItem).GetItemDataID() == itemdate) { showMenu1 = subMenu.Key.MenuObj; showMenu2 = combineItem.MenuObj; } var combineNum = ((EquipHechengItem)combineItem).GetItemCanCombineCnt(); canCombineTotal += combineNum; combineItem.gameObject.SetActive(false); combineItem.UnSelected(); } ((EquipHechengItem)subMenu.Key).SetCombineTip(canCombineTotal); } } OnHechengItemSelect(null); _HechengItemContainer.ClearSelect(1); _HechengItemContainer.ClearSelect(2); _HechengItemContainer.ShowMenu(showMenu1, showMenu2); //_HechengItemContainer.ShowDefaultFirst(); } #endregion #region public UISubScollMenu _HechengItemContainer; public CommonItemMaterialSlot[] _HechengMaterial; public CommonItemPlotBase _HechengResult; public UINumBoardInput _NumInput; public Toggle _OnlyShoEnoughToggle; //public Text _BindCnt; //public Text _NoBindCnt; //public Toggle _UseBindFirst; public Button _BtnHecheng; // 合成按钮 public GameObject _DisableBtn; // 失活的合成按钮 public Transform centerPoint; // 中心点 public Transform modelPoint; // 用于获得新位置的代替物 public float intervalAngle; // 间隔角度 private float radius; // 半径 private GameItem _SelectItem; private int _TargetDataID; private int _TargetDataCnt; private Tab_ItemCombine _TabCombine; private bool _OnlyShowEnough; public bool OnlyShowEnough { get { return _OnlyShowEnough; } } public void OnHechengItemSelect(object itemObj) { bool hasChangeCombineItem = true; if (_TabCombine == itemObj) { hasChangeCombineItem = false; } _TabCombine = itemObj as Tab_ItemCombine; if (_TabCombine == null) { for (int i = 0; i < _HechengMaterial.Length; ++i) { _HechengMaterial[i].gameObject.SetActive(false); } _HechengResult.ShowItem(null); //_BindCnt.gameObject.SetActive(false); //_NoBindCnt.gameObject.SetActive(false); _NumInput.gameObject.SetActive(false); _BtnHecheng.gameObject.SetActive(false); _DisableBtn.SetActive(true); return; } _BtnHecheng.gameObject.SetActive(true); _DisableBtn.SetActive(false); _TargetDataID = _TabCombine.ItemID; _TargetDataCnt = GameManager.gameManager.PlayerDataPool.BackPack.GetItemCountByDataId(_TargetDataID); int combineCnt = 999; int num = 0; for (int i = 0; i < _HechengMaterial.Length; ++i) { if (_TabCombine.GetSrcItemIDbyIndex(i) > 0) { ++num; var materialCnt = GameManager.gameManager.PlayerDataPool.BackPack.GetItemCountByDataId(_TabCombine.GetSrcItemIDbyIndex(i)); int canCombineCnt = materialCnt / _TabCombine.GetNeedNumbyIndex(i); combineCnt = Mathf.Min(combineCnt, canCombineCnt); _HechengMaterial[i].gameObject.SetActive(true); _HechengMaterial[i].InitMaterial(_TabCombine.GetSrcItemIDbyIndex(i), _TabCombine.GetNeedNumbyIndex(i)); } else { _HechengMaterial[i].gameObject.SetActive(false); } } UpdateMaterialsPos(num); GameItem targetItem = new GameItem(); targetItem.DataID = _TabCombine.ItemID; targetItem.StackCount = 1; _HechengResult.ShowItem(targetItem); //int itemCnt = GameManager.gameManager.PlayerDataPool.BackPack.GetItemCountByDataId(_SelectItem.DataID); //int itemBindCnt = GameManager.gameManager.PlayerDataPool.BackPack.GetBindItemCountByDataId(_SelectItem.DataID); //if (itemBindCnt > 0) //{ // _BindCnt.gameObject.SetActive(true); // _BindCnt.text = itemBindCnt.ToString(); // _NoBindCnt.gameObject.SetActive(true); // _NoBindCnt.text = (itemCnt - itemBindCnt).ToString(); // //if (itemBindCnt != itemCnt) // //{ // // _UseBindFirst.gameObject.SetActive(true); // // _UseBindFirst.isOn = true; // //} // //else // //{ // // _UseBindFirst.gameObject.SetActive(false); // //} //} //else //{ // _BindCnt.gameObject.SetActive(false); // _NoBindCnt.gameObject.SetActive(false); // _UseBindFirst.gameObject.SetActive(false); //} _NumInput.gameObject.SetActive(true); if (hasChangeCombineItem) { _NumInput.Init(1, 1, Mathf.Max(combineCnt, 1)); } else { if (_NumInput.Value > combineCnt) { _NumInput.Init(1, 1, Mathf.Max(combineCnt, 1)); } } if (combineCnt < 1) { _BtnHecheng.gameObject.SetActive(false); _DisableBtn.SetActive(true); } else { _BtnHecheng.gameObject.SetActive(true); _DisableBtn.SetActive(false); } } // 更具合成材料数目调整素材显示位置 private void UpdateMaterialsPos(int num) { if(num <= 0) { return; } // 初始化位置 modelPoint.position = centerPoint.position + Vector3.up * radius; // 起始位置 float startAngle = -(intervalAngle * (num - 1)) / 2.0f - intervalAngle; modelPoint.RotateAround(centerPoint.position, Vector3.forward, startAngle); for (int i = 0; i < num; ++i) { modelPoint.RotateAround(centerPoint.position, Vector3.forward, intervalAngle); _HechengMaterial[i].transform.position = modelPoint.position; } } public void OnHeChengClick() { Tab_CommonItem tabItem = TableManager.GetCommonItemByID(_TabCombine.ItemID, 0); if (tabItem.ClassID == (int)ItemClass.STRENGTHEN && tabItem.SubClassID == (int)StrengthenSubClass.KAIKONG) { Tab_CommonItem targetItem = TableManager.GetCommonItemByID(_TabCombine.ItemID, 0); Tab_CommonItem srcItem = TableManager.GetCommonItemByID(_TabCombine.GetSrcItemIDbyIndex(0), 0); string tips = StrDictionary.GetClientDictionaryString("#{5371}", _NumInput.Value * _TabCombine.GetNeedNumbyIndex(0), srcItem.Name, _NumInput.Value, targetItem.Name); MessageBoxLogic.OpenOKCancelBox(tips, "", OnHeChengClickOk, null, GlobeVar.INVALID_ID, MessageBoxLogic.PASSWORD.INVALID, 3); } else { OnHeChengClickOk(); } } public void OnHeChengClickOk() { if (_NumInput.Value == 0) return; CG_QIANKUNDAI_COMBINE packet = (CG_QIANKUNDAI_COMBINE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_QIANKUNDAI_COMBINE); packet.Dataid = _TabCombine.ItemID; packet.Desproductcount = _NumInput.Value; packet.SendPacket(); } public void OnOnlyShowEnough(bool isOnlyShow) { if (isOnlyShow) _DefaultSelectItem = -1; _OnlyShowEnough = isOnlyShow; OnHechengPage(0); } public void SetOnlyShowEnought(bool isOnlyShow) { _OnlyShowEnough = isOnlyShow; _OnlyShoEnoughToggle.isOn = isOnlyShow; } #endregion /// /// 当合成界面不显示时的合成界面红点结果 /// /// public static void RetTipsUpdate() { // 强化界面显示时,不进行判断,因为界面内已有其他判断。 if(EquipEnhanceHecheng.Instance() != null && EquipEnhanceHecheng.Instance().gameObject.activeInHierarchy == true) { return; } // 存储所有可合成的物体 List itemsCanComebine = new List(); var tabCombineItem = TableManager.GetItemCombine().Values; foreach (var tabCombineTab in tabCombineItem) { itemsCanComebine.Add(tabCombineTab); } // 检测素有合成物体的素材是否足够 for(int i = 0; i < itemsCanComebine.Count; ++i) { for (int j = 0; j < itemsCanComebine[i].getNeedNumCount(); ++j) { if (itemsCanComebine[i].GetSrcItemIDbyIndex(i) > 0) { var materialCnt = GameManager.gameManager.PlayerDataPool.BackPack.GetItemCountByDataId(itemsCanComebine[i].GetSrcItemIDbyIndex(i)); if (materialCnt > itemsCanComebine[i].GetNeedNumbyIndex(i)) { // 发现一个满足即可 //return true; } } } } //return false; } }