using Snxxz.UI;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using System;
|
|
|
namespace EnhancedUI.EnhancedScroller
|
{
|
public class RunePackCell : ScrollerUI
|
{
|
[SerializeField] List<Image> m_RuneIcons;
|
[SerializeField] List<Text> m_RuneNameLvTxts;
|
[SerializeField] List<Text> m_RuneAttrTxts;
|
[SerializeField] List<Button> m_RuneBtns;
|
[SerializeField] List<Text> m_EquipedImgs;
|
[SerializeField] List<Image> m_Redpoints;
|
RuneModel m_Model;
|
RuneModel model
|
{
|
get
|
{
|
return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<RuneModel>());
|
}
|
}
|
|
RuneComposeModel m_ComposeModel;
|
RuneComposeModel runeComposeModel
|
{
|
get
|
{
|
return m_ComposeModel ?? (m_ComposeModel = ModelCenter.Instance.GetModel<RuneComposeModel>());
|
}
|
}
|
|
public override void Refresh(CellView cell)
|
{
|
if (model.runePackList == null)
|
{
|
return;
|
}
|
for (int i = 0; i < 3; i++)
|
{
|
int index = cell.index * 3 + i;
|
Transform child = cell.transform.GetChild(i);
|
if (index >= model.runePackList.Count)
|
{
|
child.gameObject.SetActive(false);
|
continue;
|
}
|
else
|
{
|
child.gameObject.SetActive(true);
|
}
|
|
RuneData data = model.runePackList[index];
|
m_RuneBtns[i].onClick.RemoveAllListeners();
|
m_RuneBtns[i].onClick.AddListener(() =>
|
{
|
OnClickRunePackItem(data);
|
});
|
|
ItemConfig item = ItemConfig.Get(data.id);
|
m_RuneNameLvTxts[i].text =StringUtility.Contact(item.ItemName," lv.",data.lv);
|
m_RuneNameLvTxts[i].color = UIHelper.GetUIColor(item.ItemColor, true);
|
m_RuneIcons[i].SetSprite(item.IconKey);
|
m_RuneAttrTxts[i].text = StringUtility.Contact(model.GetRuneAttrStr(data.id, data.lv));
|
bool _same = model.IsSameInHoleRune(data.id, model.sltRuneHole);
|
m_EquipedImgs[i].gameObject.SetActive(_same);
|
m_Redpoints[i].gameObject.SetActive(model.IsBetterRune(data, model.sltRuneHole) && !_same);
|
}
|
}
|
|
private void OnClickRunePackItem(RuneData _rune)
|
{
|
if (model.sltRuneHole == -1)
|
{
|
MessageWin.Inst.ShowFixedTip(Language.Get("L1061"));
|
return;
|
}
|
var sltHoleRune = model.GetHoleRune(model.sltRuneHole);
|
bool switchOtherSameHole = false;
|
List<int> sameHoles = new List<int>();
|
if (sltHoleRune == null || runeComposeModel.m_RuneBothPropertys.Contains(sltHoleRune.id)
|
|| !runeComposeModel.m_RuneBothPropertys.Contains(_rune.id))
|
{
|
if (model.IsSameInHoleRune(_rune.id, model.sltRuneHole))
|
{
|
MessageWin.Inst.ShowFixedTip(Language.Get("L1078"));
|
return;
|
}
|
}
|
else
|
{
|
model.IsSameRune(_rune.id, ref sameHoles);
|
if (sameHoles.Count > 0 && !sameHoles.Contains(model.sltRuneHole))
|
{
|
MessageWin.Inst.ShowFixedTip(Language.Get("L1078"));
|
return;
|
}
|
if (sameHoles.Count > 1)
|
{
|
switchOtherSameHole = true;
|
}
|
}
|
|
if (runeComposeModel.m_RuneBothPropertys.Contains(_rune.id)
|
&& model.GetDoublePropLimitCount() <= model.GetCurrentDoublePropCount()
|
&& (sltHoleRune == null || !runeComposeModel.m_RuneBothPropertys.Contains(sltHoleRune.id)))
|
{
|
var _count = model.GetDoublePropLimitCount();
|
SysNotifyMgr.Instance.ShowTip("RuneGridUnEnough", _count);
|
return;
|
}
|
|
if (switchOtherSameHole)
|
{
|
var otherSameHole = sameHoles[0] == model.sltRuneHole ? sameHoles[1] : sameHoles[0];
|
var otherRune = model.GetHoleRune(otherSameHole);
|
ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("SwitchDoublePropertyRune"), (Action<bool>)((bool isOk) =>
|
{
|
if (isOk)
|
{
|
SwitchRune(otherRune.packtype, otherSameHole, _rune.packtype, 0);
|
SwitchRune(_rune.packtype, _rune.index, (int)PackType.rptInterimPack, model.sltRuneHole);
|
WindowCenter.Instance.Close<RunePackWin>();
|
}
|
}));
|
}
|
else
|
{
|
SwitchRune(_rune.packtype, _rune.index, (int)PackType.rptInterimPack, model.sltRuneHole);
|
WindowCenter.Instance.Close<RunePackWin>();
|
}
|
}
|
|
void SwitchRune(int srcpackType,int scrIndex,int destpackType,int destIndex)
|
{
|
C073D_tagCPackItemExchange pak = new C073D_tagCPackItemExchange();
|
pak.SrcBackpack = (byte)srcpackType;
|
pak.SrcIndex = (ushort)scrIndex;
|
pak.DesBackPack = (byte)destpackType;
|
pak.DestIndex = (ushort)destIndex;
|
GameNetSystem.Instance.SendInfo(pak);
|
}
|
}
|
}
|
|