using UnityEngine; using System.Collections; using UnityEngine.UI; using System; using GCGame.Table; using System.Collections.Generic; using Games.Item; using Games.LogicObj; public class AutoUseMedicPanelCtrl : MonoBehaviour { public static AutoUseMedicPanelCtrl Instance; private ClientCustomData.AutoMedicInfoStruct autoMedicInfo; private void OnEnable() { Instance = this; LoadMySetting(); } private void OnDisable() { Instance = null; } public Text m_hpPercnetText; public Text m_mpPercnetText; public Toggle m_AutoUseBloodItemToggle; public Toggle m_AutoUseBlueItemToggle; public Slider m_HpSlider; public Slider m_MpSlider; public Image m_HpItemQuality; public Image m_HpItemIcon; public Image m_MpItemQuality; public Image m_MpItemIcon; public Material _GrayMaterial; public Text m_HpCountText; public Text m_MpCountText; Dictionary> m_AllCanAutoUseItem = new Dictionary>(); public float m_PercentValue = 0.5f; public void setHpPercentText(float value) { m_hpPercnetText.text = StrDictionary.GetClientDictionaryString("#{42510}", ((int)(value * 100))); //((int)(value * 100)).ToString() + "%"; autoMedicInfo.hpPercent = m_HpSlider.value; } public void setMpPercentText(float value) { m_mpPercnetText.text = StrDictionary.GetClientDictionaryString("#{42511}", ((int)(value * 100))); //((int)(value * 100)).ToString() + "%"; autoMedicInfo.mpPercent = m_MpSlider.value; } public void OnSettingBtnClick(int SortId) { UIManager.ShowUI(UIInfo.PopAutoMedicItemPanel, delegate (bool bSucess, object param) { if (bSucess) { PopAutoMedicItemPanel.Instance.ShowItemByType(SortId); } }); } //设置上次保存的设置 public void LoadMySetting() { autoMedicInfo = GameManager.gameManager.PlayerDataPool.ClientCustomDateManager.PlayerCustomData.autoMedicInfo; m_HpSlider.value = autoMedicInfo.hpPercent; m_MpSlider.value = autoMedicInfo.mpPercent; var backPack = GameManager.gameManager.PlayerDataPool.BackPack; List allAutoHpItemList = new List(); // 第一次打开,默认的全部勾选 var autoUseItemTab = TableManager.GetAutoUseItem().Values; foreach (var item in autoUseItemTab) { if (item.SubClassID == 4) { allAutoHpItemList.Add(item.Id); //这边加载完之后要排序 } } allAutoHpItemList.Sort(SortItemIdListByLevel); var isSetAutoHpItem = false; if (autoMedicInfo.autoHpIdList.Count > 0) { for(int index = 0; index < autoMedicInfo.autoHpIdList.Count; index++) { if(backPack.GetItemCountByDataId(autoMedicInfo.autoHpIdList[index]) > 0) { isSetAutoHpItem = true; SetShowItemInfo(autoMedicInfo.autoHpIdList[index], 4); break; } } } if(!isSetAutoHpItem) SetShowItemInfo(-1, 4); List allAutoMpItemList = new List(); foreach (var item in autoUseItemTab) { if (item.SubClassID == 4) { allAutoMpItemList.Add(item.Id); //这边加载完之后要排序 } } allAutoMpItemList.Sort(SortItemIdListByLevel); bool isSetMpItem = false; if ( autoMedicInfo.autoMpIdList.Count > 0) { for (int index = 0; index < autoMedicInfo.autoMpIdList.Count; index++) { if (backPack.GetItemCountByDataId(autoMedicInfo.autoMpIdList[index]) > 0) { isSetMpItem = true; SetShowItemInfo(autoMedicInfo.autoMpIdList[index], 5); break; } } } if(!isSetMpItem) SetShowItemInfo(-1, 5); m_AutoUseBloodItemToggle.isOn = autoMedicInfo.isAutoHpOn == 1; m_AutoUseBlueItemToggle.isOn = autoMedicInfo.isAutoMpOn == 1; } public void setMyHPToggleValue(bool value) { m_AutoUseBloodItemToggle.isOn = value; autoMedicInfo.isAutoHpOn = value ? 1 : 0; } public void setMyMPToggleValue(bool value) { m_AutoUseBlueItemToggle.isOn = value; autoMedicInfo.isAutoMpOn = value ? 1 : 0; } public void closeMyWindow() { //保存配置信息 SaveMyPlayerAutoMedicData(); //关闭 UIManager.CloseUI(UIInfo.AutoUseMedicPanel); } public void SaveMyPlayerAutoMedicData() { GameManager.gameManager.PlayerDataPool.ClientCustomDateManager.SaveDataToServer(); } //这边要提前读配置了,不然就是空 public void SetShowItemInfo(int m_ItemId, int type) { Tab_CommonItem commonItem = TableManager.GetCommonItemByID(m_ItemId, 0); if (commonItem == null) { switch (type) { case 4: m_HpItemQuality.gameObject.SetActive(false); m_HpItemIcon.gameObject.SetActive(false); m_HpCountText.gameObject.SetActive(false); break; default: m_MpItemIcon.gameObject.SetActive(false); m_MpItemQuality.gameObject.SetActive(false); m_MpCountText.gameObject.SetActive(false); break; } return; } Tab_AutoUseItem AutoItem = TableManager.GetAutoUseItemByID(m_ItemId, 0); if (AutoItem == null) { return; } var backPack = GameManager.gameManager.PlayerDataPool.BackPack; var m_ItemCount = backPack.GetItemCountByDataId(m_ItemId); switch (AutoItem.SubClassID) { //4为设置HP case (int)MedicSubClass.HP_DY: m_HpItemQuality.gameObject.SetActive(true); m_HpItemIcon.gameObject.SetActive(true); LoadAssetBundle.Instance.SetImageSprite(m_HpItemIcon, AutoItem.Icon, delegate (bool isSucess, GameObject obj) { m_HpItemIcon.material = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level >= AutoItem.NeedLevel ? m_HpItemIcon.defaultMaterial : _GrayMaterial; }); LoadAssetBundle.Instance.SetImageSprite(m_HpItemQuality, GCGame.Utils.GetItemQualityFrame(commonItem.Quality)); m_HpCountText.gameObject.SetActive(true); if (m_ItemCount != 0) { m_HpCountText.text = m_ItemCount.ToString(); } else { m_HpCountText.text = "0"; } break; case (int)MedicSubClass.MP_DY: m_MpItemIcon.gameObject.SetActive(true); m_MpItemQuality.gameObject.SetActive(true); LoadAssetBundle.Instance.SetImageSprite(m_MpItemIcon, AutoItem.Icon, delegate (bool isSucess, GameObject obj) { m_MpItemIcon.material = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level >= AutoItem.NeedLevel ? m_MpItemIcon.defaultMaterial : _GrayMaterial; }); LoadAssetBundle.Instance.SetImageSprite(m_MpItemQuality, GCGame.Utils.GetItemQualityFrame(commonItem.Quality)); m_MpCountText.gameObject.SetActive(true); if (m_ItemCount != 0) { m_MpCountText.text = m_ItemCount.ToString(); } else { m_MpCountText.text = "0"; } break; } } public int SortItemIdListByLevel(int itemA, int itemB) { var autoUseItemTabA = TableManager.GetAutoUseItemByID(itemA, 0); var autoUseItemTabB = TableManager.GetAutoUseItemByID(itemA, 0); var backPack = GameManager.gameManager.PlayerDataPool.BackPack; if (autoUseItemTabA == null || autoUseItemTabB == null) return 0; if (backPack.GetItemCountByDataId(itemA) > 0 && backPack.GetItemCountByDataId(itemB) > 0) { return autoUseItemTabA.NeedLevel > autoUseItemTabB.NeedLevel ? 1 : -1; } else if (backPack.GetItemCountByDataId(itemA) <= 0 && backPack.GetItemCountByDataId(itemB) > 0) { return 1; } else if (backPack.GetItemCountByDataId(itemA) > 0 && backPack.GetItemCountByDataId(itemB) > 0) { return -1; } else { return 0; } } }