263 lines
8.9 KiB
C#
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;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|