using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
using System.Linq;
|
using UnityEngine.EventSystems;
|
using Snxxz.UI;
|
using System.Text;
|
using System;
|
|
public class InlaidPanel : MonoBehaviour
|
{
|
[SerializeField] ScrollRect btnScrollRect;
|
[SerializeField] ItemCell presentItemCell;
|
[SerializeField] GameObject sltGemTip;
|
[SerializeField] ScrollerController m_Scroller;
|
[SerializeField] Button _sltGemCloseBtn;
|
[SerializeField] Button _strikeBtn;
|
[SerializeField] List<GemEquipPlate> m_GemEquipPlates;
|
[SerializeField] List<GemHoleData> m_GemHoles;
|
[SerializeField] RectTransform m_ContainerNoEquip;
|
[SerializeField, Header("选中偏移")] float m_SelectOffset = 50.0f;
|
private List<int> m_EquipSortList = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
|
private List<ItemModel> m_GemItems = new List<ItemModel>();
|
private bool m_Inlaying;
|
private int m_PresentInlayHole = 0;
|
private int m_CacheGotoShopId = 0;
|
private static StringBuilder _textBuilder = new StringBuilder();
|
|
GemModel m_Model;
|
GemModel model {
|
get {
|
return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<GemModel>());
|
}
|
}
|
|
ItemTipsModel _itemTipsModel;
|
ItemTipsModel itemTipsModel {
|
get {
|
return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
|
}
|
}
|
|
PackModel _playerPack;
|
PackModel playerPack {
|
get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PackModel>()); }
|
}
|
|
private void OnEnable()
|
{
|
PlayerStoneData.OnRefreshStoneData += OnUpdateGemEquip;
|
PlayerDatas.Instance.PlayerDataRefreshInfoEvent += RefreshPlayerInfoEvent;
|
model.updateEquipPlateEvent += OnSltBtnClick;
|
sltGemTip.gameObject.SetActive(false);
|
btnScrollRect.verticalNormalizedPosition = 1;
|
OnEnter();
|
HandleAchievement();
|
}
|
|
private void Awake()
|
{
|
for (int i = 0; i < m_GemHoles.Count; i++)
|
{
|
int _hole = i;
|
m_GemHoles[i].m_GemBtn.onClick.AddListener(() =>
|
{
|
OnHoleClick(_hole);
|
});
|
}
|
presentItemCell.cellBtn.onClick.AddListener(OnEquipClick);
|
m_Scroller.OnRefreshCell += OnRefreshItem;
|
_sltGemCloseBtn.onClick.AddListener(OnSltGemClose);
|
_strikeBtn.onClick.AddListener(OnStrikeBtn);
|
}
|
|
void OnEnter()
|
{
|
m_EquipSortList.Sort(Compare);
|
for (int i = 0; i < m_EquipSortList.Count; i++)
|
{
|
if (i < m_GemEquipPlates.Count)
|
{
|
m_GemEquipPlates[i].Refresh(m_EquipSortList[i]);
|
}
|
}
|
if (m_CacheGotoShopId != 0)
|
{
|
model.presentGemEquip = m_CacheGotoShopId;
|
m_CacheGotoShopId = 0;
|
}
|
else
|
{
|
model.presentGemEquip = CheckOpenSelect();
|
}
|
var _index = m_EquipSortList.FindIndex((x) =>
|
{
|
return x == model.presentGemEquip;
|
});
|
if (_index != -1)
|
{
|
var _position = (10 - _index) * 104 + (10 - _index - 1) * 4;
|
_position -= 444;
|
btnScrollRect.verticalNormalizedPosition = Mathf.Clamp01(_position / (1076.0f - 444));
|
btnScrollRect.verticalNormalizedPosition = Mathf.Clamp01(btnScrollRect.verticalNormalizedPosition + (m_SelectOffset / (1076.0f - 444)));//偏移
|
}
|
OnSltBtnClick(model.presentGemEquip);
|
}
|
|
int CheckOpenSelect()
|
{
|
for (int i = 0; i < m_EquipSortList.Count; i++)
|
{
|
if (model.GetRedpointState(m_EquipSortList[i]) == RedPointState.Simple)
|
{
|
return m_EquipSortList[i];
|
}
|
}
|
return m_EquipSortList[0];
|
}
|
|
void HandleAchievement()
|
{
|
if (AchievementGoto.achievementType != AchievementGoto.LifeGemLevel &&
|
AchievementGoto.achievementType != AchievementGoto.AtkGemLevel)
|
{
|
return;
|
}
|
int _type = AchievementGoto.achievementType == AchievementGoto.LifeGemLevel ? 1 : 2;
|
AchievementGoto.achievementType = 0;
|
var _cfg = SuccessConfig.Get(AchievementGoto.guideAchievementId);
|
int _level = 1;
|
_level = _cfg != null ? _cfg.Condition[0] : _level;
|
int _place, _hole = 0;
|
if (model.SatisfyCondition(_type, _level, out _place, out _hole))
|
{
|
OnSltBtnClick(_place);
|
if (_level != 1)
|
{
|
var _effect = AchievementGuideEffectPool.Require(2);
|
_effect.transform.SetParentEx(m_GemHoles[_hole].m_GemIcon.transform, Vector3.zero, Vector3.zero, Vector3.one);
|
}
|
}
|
else
|
{
|
SysNotifyMgr.Instance.ShowTip("Achievement_60");
|
}
|
}
|
|
private void RefreshPlayerInfoEvent(PlayerDataRefresh _refreshType)
|
{
|
if (_refreshType == PlayerDataRefresh.VIPLv)
|
{
|
for (int i = 0; i < m_GemEquipPlates.Count; i++)
|
{
|
m_GemEquipPlates[i].RefreshGem();
|
}
|
}
|
}
|
|
void RefreshEquipGem(int _equipPos)
|
{
|
model.UpdateHoleRedpoint(_equipPos);
|
ItemModel _itemModel = playerPack.GetItemByIndex(PackType.Equip, _equipPos);
|
if (_itemModel != null)
|
{
|
presentItemCell.gameObject.SetActive(true);
|
m_ContainerNoEquip.gameObject.SetActive(false);
|
ItemConfig _itemCfg = ItemConfig.Get(_itemModel.itemId);
|
presentItemCell.Init(_itemModel);
|
for (int i = 1; i < 5; i++)
|
{
|
UpdateHole(_itemModel, i);
|
}
|
}
|
else
|
{
|
presentItemCell.gameObject.SetActive(false);
|
m_ContainerNoEquip.gameObject.SetActive(true);
|
for (int i = 1; i < 5; i++)
|
{
|
RefreshEquipHole(false, i, null);
|
}
|
}
|
}
|
|
void UpdateHole(ItemModel _itemModel, int _index)
|
{
|
ItemConfig _itemCfg = ItemConfig.Get(_itemModel.itemId);
|
bool openHole = false;
|
if (_index < 4)
|
{
|
if (_itemCfg.LV >= model.gemOpenArray[_index - 1])
|
{
|
openHole = true;
|
}
|
}
|
else
|
{
|
if (PlayerDatas.Instance.baseData.VIPLv >= model.gemVipHoleLv && _itemCfg.LV >= model.gemOpenArray[0])
|
{
|
openHole = true;
|
}
|
}
|
RefreshEquipHole(openHole, _index, _itemModel);
|
}
|
|
void RefreshEquipHole(bool open, int _index, ItemModel _itemModel)
|
{
|
m_GemHoles[_index - 1].m_GemBtn.interactable = open;
|
m_GemHoles[_index - 1].m_LockImg.gameObject.SetActive(!open);
|
m_GemHoles[_index - 1].m_ContainerInlaied.gameObject.SetActive(false);
|
m_GemHoles[_index - 1].m_ContainerInlay.gameObject.SetActive(false);
|
m_GemHoles[_index - 1].m_ConditionTxt.gameObject.SetActive(!open);
|
if (!open)
|
{
|
m_GemHoles[_index - 1].m_GemEffect.Stop();
|
if (_index < 4)
|
{
|
m_GemHoles[_index - 1].m_ConditionTxt.text = Language.Get("L1075", model.gemOpenArray[_index - 1]);
|
}
|
else if (_index == 4)
|
{
|
m_GemHoles[_index - 1].m_ConditionTxt.text = Language.Get("GemHole04Unlock", model.gemVipHoleLv);
|
}
|
}
|
else
|
{
|
m_GemHoles[_index - 1].m_ContainerInlay.gameObject.SetActive(true);
|
FuncConfigConfig _funcCfg = null;
|
int _type = FuncConfigConfig.GetGemTypeByEquipPos(_itemModel.itemPlace, out _funcCfg);
|
if (_type != -1)
|
{
|
m_GemHoles[_index - 1].m_GemTypeTxt.text = _funcCfg.Numerical2;
|
}
|
uint[] stones = PlayerStoneData.Instance.GetStoneInfo(model.presentGemEquip);
|
byte[] stonesBind = PlayerStoneData.Instance.GetStoneBindInfo(model.presentGemEquip);
|
if (stones != null && stones.Length > 0)
|
{
|
if (_index > stones.Length)
|
{
|
return;
|
}
|
uint _gemId = stones[_index - 1];
|
if (_gemId != 0)
|
{
|
var _isBind = 0;
|
if (stonesBind != null)
|
{
|
_isBind = (_index - 1) < stonesBind.Length ? stonesBind[_index - 1] : 0;
|
}
|
m_GemHoles[_index - 1].m_GemEffect.Stop();
|
if (m_Inlaying && m_PresentInlayHole == _index)
|
{
|
PlayUIEffect(_index, true);
|
}
|
var _itemCfg = ItemConfig.Get((int)_gemId);
|
m_GemHoles[_index - 1].m_GemIcon.SetSprite(_itemCfg.IconKey);
|
m_GemHoles[_index - 1].DisplayGemProperty(_itemCfg.ID, _isBind);
|
m_GemHoles[_index - 1].m_ContainerInlaied.gameObject.SetActive(true);
|
m_GemHoles[_index - 1].m_ContainerInlay.gameObject.SetActive(false);
|
}
|
else
|
{
|
PlayUIEffect(_index, false);
|
}
|
}
|
else
|
{
|
PlayUIEffect(_index, false);
|
}
|
}
|
}
|
|
public static void ShowGemInfo(Text text, int id, bool _showItemName = true)
|
{
|
_textBuilder.Length = 0;
|
ItemConfig _itemCfg = ItemConfig.Get(id);
|
FuncConfigConfig _funcCfg = FuncConfigConfig.Get("GemAttr");
|
if (_itemCfg == null && _funcCfg == null)
|
{
|
text.text = string.Empty;
|
return;
|
}
|
if (_showItemName)
|
{
|
_textBuilder.Append(StringUtility.Contact("<size=20><color=#723f22>", _itemCfg.ItemName, "</color></size>", "\n"));
|
}
|
PlayerPropertyConfig _playerAttrCfg = null;
|
if (_itemCfg.Effect2 != 0)
|
{
|
_playerAttrCfg = PlayerPropertyConfig.Get(_itemCfg.Effect2);
|
_textBuilder.Append(string.Format(_funcCfg.Numerical1, _playerAttrCfg.Name,
|
UIHelper.ReplacePercentage(_itemCfg.EffectValueA2, _playerAttrCfg.ISPercentage, _playerAttrCfg.ISPercentage == 1 ? 2 : 1)));
|
_textBuilder.Append(_playerAttrCfg.ISPercentage == 1 ? "%" : string.Empty);
|
}
|
if (_itemCfg.Effect3 != 0)
|
{
|
_playerAttrCfg = PlayerPropertyConfig.Get(_itemCfg.Effect3);
|
_textBuilder.Append("\n");
|
_textBuilder.Append(string.Format(_funcCfg.Numerical1, _playerAttrCfg.Name,
|
UIHelper.ReplacePercentage(_itemCfg.EffectValueA3, _playerAttrCfg.ISPercentage, _playerAttrCfg.ISPercentage == 1 ? 2 : 1)));
|
_textBuilder.Append(_playerAttrCfg.ISPercentage == 1 ? "%" : string.Empty);
|
}
|
if (_itemCfg.Effect4 != 0)
|
{
|
_playerAttrCfg = PlayerPropertyConfig.Get(_itemCfg.Effect4);
|
_textBuilder.Append("\n");
|
_textBuilder.Append(string.Format(_funcCfg.Numerical1, _playerAttrCfg.Name,
|
UIHelper.ReplacePercentage(_itemCfg.EffectValueA4, _playerAttrCfg.ISPercentage, _playerAttrCfg.ISPercentage == 1 ? 2 : 1)));
|
_textBuilder.Append(_playerAttrCfg.ISPercentage == 1 ? "%" : string.Empty);
|
}
|
text.text = _textBuilder.ToString();
|
}
|
|
void OnHoleClick(int _hole)
|
{
|
if (model.presentGemEquip == 0)
|
{
|
return;
|
}
|
ItemModel _itemModel = playerPack.GetItemByIndex(PackType.Equip, model.presentGemEquip);
|
bool hasStone = false;
|
uint id = 0;
|
uint[] stones = PlayerStoneData.Instance.GetStoneInfo(model.presentGemEquip);
|
if (stones != null && stones.Length > 0)
|
{
|
id = stones[_hole];
|
hasStone = id != 0;
|
}
|
ShowGemSelectTip(hasStone, _hole + 1, id);
|
}
|
|
void ShowGemSelectTip(bool hasStone, int pos, uint id)
|
{
|
m_Inlaying = true;
|
model.presentGemHole = pos;
|
sltGemTip.gameObject.SetActive(true);
|
ItemModel _itemModel = playerPack.GetItemByIndex(PackType.Equip, model.presentGemEquip);
|
m_Scroller.Refresh();
|
_strikeBtn.gameObject.SetActive(hasStone);
|
int _type = FuncConfigConfig.GetGemTypeByEquipPos(_itemModel.itemPlace);
|
if (_type == -1)
|
{
|
return;
|
}
|
SinglePack singlePack = playerPack.GetSinglePack(PackType.Item);
|
var items = singlePack.GetItemsByType(GemModel.GEM_ITEMTABLE_TYPE);
|
GetGemByEffectType(items, _type);
|
if (hasStone && !model.IsHightestLevelGem((int)id))
|
{
|
CellInfo _cellInfo = CellInfo.Default;
|
_cellInfo.infoInt1 = (int)id;
|
m_Scroller.AddCell(ScrollerDataType.Header, 0, OnGemItemClick, _cellInfo);
|
}
|
if (hasStone && model.IsHightestLevelGem((int)id))
|
{
|
CellInfo _cellInfo = CellInfo.Default;
|
_cellInfo.infoInt1 = (int)id;
|
var binds = PlayerStoneData.Instance.GetStoneBindInfo(model.presentGemEquip);
|
if (binds != null && pos - 1 < binds.Length)
|
{
|
_cellInfo.infoInt2 = binds[pos - 1];
|
}
|
m_Scroller.AddCell(ScrollerDataType.Extra1, 0, _cellInfo);
|
}
|
for (int i = 0; i < m_GemItems.Count; i++)
|
{
|
ItemModel _item = m_GemItems[i];
|
CellInfo _cellInfo = CellInfo.Default;
|
_cellInfo.infoInt1 = _item.itemId;
|
_cellInfo.infoInt2 = _item.itemPlace;
|
_cellInfo.SetInfo(_item.isBind);
|
_cellInfo.infoStr1 = _item.count.ToString();
|
m_Scroller.AddCell(ScrollerDataType.Normal, i, OnGemItemClick, _cellInfo);
|
}
|
if (!hasStone)
|
{
|
CellInfo _cellInfo = CellInfo.Default;
|
ItemConfig _itemCfg = ItemConfig.GetGemDataByLevelAndType(1, _type);
|
_cellInfo.infoInt1 = _itemCfg.ID;
|
m_Scroller.AddCell(ScrollerDataType.Tail, 0, OnGemItemClick, _cellInfo);
|
}
|
m_Scroller.Restart();
|
}
|
|
void OnGemItemClick(CellView cell)
|
{
|
switch (cell.type)
|
{
|
case ScrollerDataType.Header:
|
OnLevelUpGemBtn();
|
break;
|
case ScrollerDataType.Normal:
|
OnInlayGem(cell.info);
|
break;
|
case ScrollerDataType.Tail:
|
m_CacheGotoShopId = model.presentGemEquip;
|
WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.StoreFunc3);
|
break;
|
}
|
}
|
|
void OnRefreshItem(ScrollerDataType type, CellView cell)
|
{
|
switch (type)
|
{
|
case ScrollerDataType.Header:
|
{
|
if (!cell.info.HasValue)
|
{
|
return;
|
}
|
GemLevelUpCell _levelUpCell = cell as GemLevelUpCell;
|
ItemConfig _itemCfg = ItemConfig.Get(cell.info.Value.infoInt1);
|
ItemConfig _nextCfg = ItemConfig.GetGemDataByLevelAndType(_itemCfg.EffectValueB1, _itemCfg.EffectValueA1);
|
if (_nextCfg != null && _itemCfg.Type == _nextCfg.Type && _itemCfg.EffectValueA1 == _nextCfg.EffectValueA1)
|
{
|
_levelUpCell.itemBG.SetItemBackGround(_nextCfg.ItemColor);
|
_levelUpCell.itemIcon.SetSprite(_nextCfg.IconKey);
|
}
|
_levelUpCell.nameText.text = string.Empty;
|
PlayerPropertyConfig _propertyCfg = null;
|
for (int i = _itemCfg.EffectValueB1 + 1; i <= 9; i++)
|
{
|
_nextCfg = ItemConfig.GetGemDataByLevelAndType(i, _itemCfg.EffectValueA1);
|
if (_nextCfg == null)
|
{
|
continue;
|
}
|
if (_itemCfg.Effect2 == 0 && _nextCfg.Effect2 != 0)
|
{
|
_propertyCfg = PlayerPropertyConfig.Get(_nextCfg.Effect2);
|
break;
|
}
|
else if (_itemCfg.Effect3 == 0 && _nextCfg.Effect3 != 0)
|
{
|
_propertyCfg = PlayerPropertyConfig.Get(_nextCfg.Effect3);
|
break;
|
}
|
else if (_itemCfg.Effect4 == 0 && _nextCfg.Effect4 != 0)
|
{
|
_propertyCfg = PlayerPropertyConfig.Get(_nextCfg.Effect4);
|
break;
|
}
|
}
|
if (_propertyCfg != null)
|
{
|
_levelUpCell.nameText.text = Language.Get("GemNewAttr", _nextCfg.EffectValueB1, _propertyCfg.Name);
|
}
|
else
|
{
|
_levelUpCell.nameText.text = Language.Get("GemPropertyUpper");
|
}
|
_levelUpCell.redpoint.redpointId = GemModel.GEM_REDPOINT * GemModel.REDPOINT_INTERVAL + 20 + model.presentGemHole;
|
}
|
break;
|
case ScrollerDataType.Normal:
|
{
|
if (cell.info.HasValue)
|
{
|
GemEquipCell _gemEquipCell = cell as GemEquipCell;
|
ItemConfig cfg = ItemConfig.Get(cell.info.Value.infoInt1);
|
if (cfg != null)
|
{
|
_gemEquipCell.itemBG.SetItemBackGround(cfg.ItemColor);
|
_gemEquipCell.itemIcon.SetSprite(cfg.IconKey);
|
if (cell.info.HasValue)
|
{
|
ShowGemInfo(_gemEquipCell.property, cell.info.Value.infoInt1, false);
|
}
|
_gemEquipCell.count.text = cell.info.Value.infoStr1;
|
_gemEquipCell.bind.gameObject.SetActive(cell.info.Value.infoInt3 == 1);
|
_gemEquipCell.redpoint.gameObject.SetActive(IsBestGem(cfg.ID, m_GemItems)
|
&& model.GetHoleRedpoint(model.presentGemHole - 1)
|
&& model.CheckEquipHole(model.presentGemEquip, model.presentGemHole - 1, cfg.ID));
|
}
|
}
|
}
|
break;
|
case ScrollerDataType.Tail:
|
{
|
if (cell.info.HasValue)
|
{
|
var _gemShopCell = cell as GemShopCell;
|
ItemConfig cfg = ItemConfig.Get(cell.info.Value.infoInt1);
|
if (cfg != null)
|
{
|
_gemShopCell.itemBG.SetItemBackGround(cfg.ItemColor);
|
_gemShopCell.itemIcon.SetSprite(cfg.IconKey);
|
FuncConfigConfig func = FuncConfigConfig.Get(string.Format("GemType{0}", cfg.EffectValueA1));
|
if (func != null)
|
{
|
_gemShopCell.nameText.text = func.Numerical2;
|
}
|
}
|
}
|
}
|
break;
|
case ScrollerDataType.Extra1:
|
{
|
if (cell.info.HasValue)
|
{
|
var _gemFlauntCell = cell as GemFlauntCell;
|
_gemFlauntCell.Display(cell.info.Value.infoInt1, cell.info.Value.infoInt2 == 1);
|
}
|
}
|
break;
|
}
|
}
|
|
void OnSltBtnClick(int _pos)
|
{
|
if (m_Inlaying)
|
{
|
return;
|
}
|
GemEquipPlate _equipPlate = null;
|
if (model.presentGemEquip > 0)
|
{
|
_equipPlate = GetEquipPlateByPos(model.presentGemEquip);
|
_equipPlate.SetSelect(false);
|
}
|
model.presentGemEquip = _pos;
|
_equipPlate = GetEquipPlateByPos(_pos);
|
_equipPlate.SetSelect(true);
|
RefreshEquipGem(model.presentGemEquip);
|
}
|
|
void OnSltGemClose()
|
{
|
if (sltGemTip.activeSelf)
|
{
|
sltGemTip.SetActive(false);
|
}
|
m_Inlaying = false;
|
model.presentGemHole = 0;
|
}
|
|
void OnLevelUpGemBtn()
|
{
|
ItemModel _itemModel = playerPack.GetItemByIndex(PackType.Equip, model.presentGemEquip);
|
if (_itemModel == null)
|
{
|
return;
|
}
|
uint[] stones = PlayerStoneData.Instance.GetStoneInfo(model.presentGemEquip);
|
if (stones == null)
|
{
|
return;
|
}
|
uint id = stones[model.presentGemHole - 1];
|
ItemConfig _itemCfg = ItemConfig.Get((int)id);
|
ItemConfig _nextCfg = ItemConfig.GetGemDataByLevelAndType(_itemCfg.EffectValueB1 + 1, _itemCfg.EffectValueA1);
|
if (_nextCfg == null)
|
{
|
SysNotifyMgr.Instance.ShowTip("GemFullLevelError");
|
return;
|
}
|
int _hole = model.presentGemHole;
|
OnSltGemClose();
|
model.presentGemHole = _hole;
|
GemLevelUpWin.equipHole = Mathf.Max(0, _hole - 1);
|
GemLevelUpWin.equipPlace = model.presentGemEquip;
|
GemLevelUpWin.packType = PackType.Equip;
|
WindowCenter.Instance.Open<GemLevelUpWin>();
|
}
|
|
void OnInlayGem(CellInfo? info)
|
{
|
ItemModel _itemModel = playerPack.GetItemByIndex(PackType.Equip, model.presentGemEquip);
|
if (_itemModel == null)
|
{
|
return;
|
}
|
if (model.presentGemHole != 0)
|
{
|
m_PresentInlayHole = model.presentGemHole;
|
CA304_tagCMEquipEnchase _pak = new CA304_tagCMEquipEnchase();
|
_pak.HoleIndex = model.presentGemHole == 4 ? (byte)10 : (byte)(model.presentGemHole - 1);
|
_pak.StoneIndex = (byte)info.Value.infoInt2;
|
_pak.EquipIndex = (byte)model.presentGemEquip;
|
GameNetSystem.Instance.SendInfo(_pak);
|
}
|
}
|
|
void OnUpdateGemEquip()
|
{
|
ItemModel _itemModel = playerPack.GetItemByIndex(PackType.Equip, model.presentGemEquip);
|
var _equipPlate = GetEquipPlateByPos(model.presentGemEquip);
|
if (_equipPlate != null)
|
{
|
_equipPlate.RefreshGem();
|
}
|
for (int i = 1; i < 5; i++)
|
{
|
UpdateHole(_itemModel, i);
|
}
|
int _hole = model.presentGemHole;
|
OnSltGemClose();
|
model.presentGemHole = _hole;
|
}
|
|
void OnEquipClick()
|
{
|
int pos = model.presentGemEquip;
|
ItemModel itemModel = playerPack.GetItemByIndex(PackType.Equip, pos);
|
if (itemModel == null)
|
{
|
return;
|
}
|
|
itemTipsModel.SetItemTipsModel(PackType.Equip, itemModel.guid);
|
|
}
|
|
void OnStrikeBtn()
|
{
|
ItemModel _itemModel = playerPack.GetItemByIndex(PackType.Equip, model.presentGemEquip);
|
if (_itemModel == null)
|
{
|
return;
|
}
|
uint[] stones = PlayerStoneData.Instance.GetStoneInfo(model.presentGemEquip);
|
if (model.presentGemHole != 0 && stones != null && model.presentGemHole <= stones.Length)
|
{
|
m_PresentInlayHole = -1;
|
CA305_tagCMEquipStonePick _pak = new CA305_tagCMEquipStonePick();
|
_pak.EquipIndex = (byte)model.presentGemEquip;
|
_pak.HoleIndex = model.presentGemHole == 4 ? (byte)10 : (byte)(model.presentGemHole - 1);
|
GameNetSystem.Instance.SendInfo(_pak);
|
}
|
}
|
|
void GetGemByEffectType(List<ItemModel> list, int type)
|
{
|
m_GemItems.Clear();
|
if (list == null || list.Count == 0)
|
{
|
return;
|
}
|
for (int i = 0; i < list.Count; i++)
|
{
|
ItemModel _itemModel = list[i];
|
ItemConfig _itemCfg = ItemConfig.Get(_itemModel.itemId);
|
if (_itemCfg.EffectValueA1 == type)
|
{
|
m_GemItems.Add(_itemModel);
|
}
|
}
|
m_GemItems.Sort(Compare);
|
}
|
|
bool IsBestGem(int itemId, List<ItemModel> list)
|
{
|
var config = ItemConfig.Get(itemId);
|
for (int i = 0; i < list.Count; i++)
|
{
|
var compareItem = list[i];
|
var compareConfig = ItemConfig.Get(compareItem.itemId);
|
if (compareConfig.EffectValueB1 > config.EffectValueB1)
|
{
|
return false;
|
}
|
}
|
return true;
|
}
|
|
private int Compare(ItemModel x, ItemModel y)
|
{
|
ItemConfig cfgx = ItemConfig.Get((int)x.itemId);
|
ItemConfig cfgy = ItemConfig.Get((int)y.itemId);
|
if (cfgx.EffectValueB1.CompareTo(cfgy.EffectValueB1) != 0)
|
{
|
return -cfgx.EffectValueB1.CompareTo(cfgy.EffectValueB1);
|
}
|
return x.itemPlace.CompareTo(y.itemPlace);
|
}
|
|
private int Compare(int x, int y)
|
{
|
bool itemx = playerPack.GetItemByIndex(PackType.Equip, x) != null;
|
bool itemy = playerPack.GetItemByIndex(PackType.Equip, y) != null;
|
if (itemx.CompareTo(itemy) != 0)
|
{
|
return -itemx.CompareTo(itemy);
|
}
|
return x.CompareTo(y);
|
}
|
|
private void PlayUIEffect(int _index, bool _equip)
|
{
|
if (_equip)
|
{
|
m_GemHoles[_index - 1].m_GemEffect.Stop();
|
m_GemHoles[_index - 1].m_GemEquipEffect.Play();
|
}
|
else
|
{
|
m_GemHoles[_index - 1].m_GemEquipEffect.Stop();
|
m_GemHoles[_index - 1].m_GemEffect.Play();
|
}
|
}
|
|
public GemEquipPlate GetEquipPlateByPos(int _pos)
|
{
|
return m_GemEquipPlates.Find((x) =>
|
{
|
return x.EquipPos == _pos;
|
});
|
}
|
|
private void OnDisable()
|
{
|
PlayerStoneData.OnRefreshStoneData -= OnUpdateGemEquip;
|
model.updateEquipPlateEvent -= OnSltBtnClick;
|
PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= RefreshPlayerInfoEvent;
|
OnSltGemClose();
|
if (model.presentGemEquip != 0)
|
{
|
var _equipPlate = GetEquipPlateByPos(model.presentGemEquip);
|
_equipPlate.SetSelect(false);
|
}
|
}
|
}
|