using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
|
namespace Snxxz.UI
|
{
|
[XLua.Hotfix]
|
[XLua.LuaCallCSharp]
|
public class JadeDynastyDecomposeModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk
|
{
|
public int selectEquipLv { get; private set; }
|
public bool isAutoDecompose { get; private set; }
|
public string LocalSaveSelectEquipLv { get; private set;}
|
public string LocalSaveAutoDecompose { get; private set;}
|
public List<string> selectGuids { get; private set; }
|
public List<string> allGuids { get; private set; }
|
public event Action UpdateSelectItemEvent;
|
PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
|
public override void Init()
|
{
|
selectGuids = new List<string>();
|
allGuids = new List<string>();
|
}
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
playerPack.refreshItemCountEvent -= UpdateItem;
|
}
|
|
public void OnAfterPlayerDataInitialize()
|
{
|
int playerId = (int)PlayerDatas.Instance.PlayerId;
|
LocalSaveSelectEquipLv = StringUtility.Contact("JadeDynastyDecomposeSelectEquipLv",playerId);
|
LocalSaveAutoDecompose = StringUtility.Contact("JadeDynastyAutoDecompose",playerId);
|
GetSelectEquipLvByLocalSave();
|
IsAutoDecomposeByLocalSave();
|
}
|
|
public void OnPlayerLoginOk()
|
{
|
playerPack.refreshItemCountEvent += UpdateItem;
|
UpdateDecomposeModels();
|
UpdateSelectModels();
|
}
|
|
public override void UnInit()
|
{
|
|
}
|
|
public List<DecomposeGetItem> getDecomposeItems = new List<DecomposeGetItem>();
|
public void UpdateJadeDynastyDecomposeResult(HA815_tagMCZhuXianDecomposeResult result)
|
{
|
getDecomposeItems.Clear();
|
for (int i = 0; i < result.Cnt; i++)
|
{
|
var itemData = result.ItemList[i];
|
var getItemData = new DecomposeGetItem((int)itemData.ItemID,itemData.ItemCnt,itemData.IsBind);
|
getDecomposeItems.Add(getItemData);
|
}
|
|
if(getDecomposeItems.Count > 0)
|
{
|
WindowCenter.Instance.Open<JadeDynastyDecomposeGetItemWin>();
|
}
|
}
|
|
private void UpdateItem(PackType type, int index, int id)
|
{
|
if (type != PackType.JadeDynastyItem || !isAutoDecompose) return;
|
|
UpdateDecomposeModels();
|
UpdateSelectModels();
|
int remainGrid = playerPack.GetEmptyGridCount(PackType.JadeDynastyItem);
|
if(remainGrid < 1)
|
{
|
SendJadeDynastyDecompose(1);
|
}
|
}
|
|
private int GetSelectEquipLvByLocalSave()
|
{
|
selectEquipLv = LocalSave.GetInt(LocalSaveSelectEquipLv);
|
return selectEquipLv;
|
}
|
|
private bool IsAutoDecomposeByLocalSave()
|
{
|
isAutoDecompose = LocalSave.GetBool(LocalSaveAutoDecompose);
|
return isAutoDecompose;
|
}
|
|
public void UpdateSelectEquipLv(int equipLv)
|
{
|
selectEquipLv = equipLv;
|
UpdateSelectModels();
|
LocalSave.SetInt(LocalSaveSelectEquipLv,equipLv);
|
}
|
|
public void UpdateIsAutoDecompose(bool isAuto)
|
{
|
isAutoDecompose = isAuto;
|
LocalSave.SetBool(LocalSaveAutoDecompose,isAutoDecompose);
|
}
|
|
public void UpdateDecomposeModels()
|
{
|
allGuids.Clear();
|
var singlePack = playerPack.GetSinglePack(PackType.JadeDynastyItem);
|
if (singlePack == null) return;
|
|
var itemDict = singlePack.GetAllItems();
|
foreach(var index in itemDict.Keys)
|
{
|
var model = itemDict[index];
|
if(model.config.EquipPlace > 0)
|
{
|
allGuids.Add(model.guid);
|
}
|
}
|
}
|
|
public void UpdateSelectModels()
|
{
|
selectGuids.Clear();
|
foreach(var guid in allGuids)
|
{
|
var model = playerPack.GetItemByGuid(guid);
|
if(model != null)
|
{
|
if (selectEquipLv != 0
|
&& model.config.LV <= selectEquipLv
|
&& ItemLogicUtility.Instance.IsFightUp(model.itemId,model.equipScore) != 1)
|
{
|
selectGuids.Add(model.guid);
|
}
|
}
|
}
|
if(UpdateSelectItemEvent != null)
|
{
|
UpdateSelectItemEvent();
|
}
|
}
|
|
public void AddSelectModel(string guid)
|
{
|
if (guid == null) return;
|
|
if(!selectGuids.Contains(guid))
|
{
|
selectGuids.Add(guid);
|
}
|
}
|
|
public void RemoveSelectModel(string guid)
|
{
|
if (guid == null) return;
|
|
if(selectGuids.Contains(guid))
|
{
|
selectGuids.Remove(guid);
|
}
|
}
|
|
public void SendJadeDynastyDecompose(int isAuto)
|
{
|
List<ushort> indexs = null;
|
List<uint> ids = null;
|
GetSelectItemIndexs(out indexs, out ids);
|
CA332_tagCMZhuXianEquipDecompose zhuXianEquipDecompose = new CA332_tagCMZhuXianEquipDecompose();
|
zhuXianEquipDecompose.Count = (byte)indexs.Count;
|
zhuXianEquipDecompose.IndexList = indexs.ToArray();
|
zhuXianEquipDecompose.ItemIDList = ids.ToArray();
|
zhuXianEquipDecompose.IsAuto = (byte)isAuto;
|
GameNetSystem.Instance.SendInfo(zhuXianEquipDecompose);
|
}
|
|
private void GetSelectItemIndexs(out List<ushort> indexs, out List<uint> ids)
|
{
|
indexs = new List<ushort>();
|
ids = new List<uint>();
|
foreach(var guid in selectGuids)
|
{
|
var model = playerPack.GetItemByGuid(guid);
|
if(model != null)
|
{
|
indexs.Add((ushort)model.itemPlace);
|
ids.Add((uint)model.itemId);
|
}
|
}
|
}
|
|
public class DecomposeGetItem
|
{
|
public int itemId { get; private set; }
|
public int itemCount { get; private set;}
|
public int isBind { get; private set; }
|
public DecomposeGetItem(int id,int count,int isBind)
|
{
|
this.itemId = id;
|
this.itemCount = count;
|
this.isBind = isBind;
|
}
|
}
|
}
|
}
|