Files
JJBB/Assets/Project/Script/GUI/Other/AutoUseMedicPanelCtrl.cs
2024-08-23 15:49:34 +08:00

263 lines
8.9 KiB
C#

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<int, List<Tab_AutoUseItem>> m_AllCanAutoUseItem = new Dictionary<int, List<Tab_AutoUseItem>>();
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<int> allAutoHpItemList = new List<int>();
// 第一次打开,默认的全部勾选
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<int> allAutoMpItemList = new List<int>();
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 = "<color=#FF2828FF>0</color>";
}
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 = "<color=#FF2828FF>0</color>";
}
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;
}
}
}