using Snxxz.UI;
|
using System;
|
using System.Collections.Generic;
|
|
|
namespace Snxxz.UI
|
{
|
public class ItemModel
|
{
|
public readonly PackType packType;
|
|
public ItemConfig config { get; private set; }
|
public ItemInfo itemInfo { get; private set; }
|
public int equipScore { get; private set; }
|
public Dictionary<int, List<int>> useDataDict { get; private set; }
|
|
public int equipPlace
|
{
|
get
|
{
|
if (packType != PackType.Equip)
|
{
|
return config == null ? 0 : config.EquipPlace;
|
}
|
else
|
{
|
return itemPlace;
|
}
|
}
|
}
|
|
public string guid { get { return itemInfo == null ? string.Empty : itemInfo.ItemGUID; } }
|
public int itemId { get { return itemInfo == null ? 0 : itemInfo.ItemID; } }
|
public int count { get { return itemInfo == null ? 0 : itemInfo.ItemCount; } }
|
public int itemPlace { get { return itemInfo == null ? 0 : itemInfo.ItemPlace; } }
|
public int isBind { get { return itemInfo == null ? 0 : itemInfo.IsBind; } }
|
public int isSuite { get { return itemInfo == null ? 0 : itemInfo.IsSuite; } }
|
public int preItemCount { get; private set; }
|
|
PackModelInterface modelInterface { get { return ModelCenter.Instance.GetModel<PackModelInterface>(); } }
|
|
public ItemModel(PackType type)
|
{
|
packType = type;
|
}
|
|
public void SetItemInfo(ItemInfo info)
|
{
|
if (itemInfo != null)
|
{
|
preItemCount = itemInfo.ItemCount;
|
}
|
|
itemInfo = info;
|
config = ItemConfig.Get(info.ItemID);
|
useDataDict = ConfigParse.Analysis(info.UserData);
|
var serverSurplusTime = 0;
|
if (useDataDict != null && useDataDict.ContainsKey(48) && useDataDict[48].Count > 0)
|
{
|
serverSurplusTime = useDataDict[48][0];
|
}
|
|
this.equipScore = modelInterface.SetEquipScore(packType, itemId, useDataDict);
|
if (GetUseDataModel((int)ItemUseDataKey.itemCount) != null)
|
{
|
itemInfo.ItemCount = GetUseDataModel((int)ItemUseDataKey.itemCount)[0];
|
}
|
|
var itemEffectTime = GetUseDataModel((int)ItemUseDataKey.createTime);
|
if (itemEffectTime != null && itemEffectTime[0] != 0 && config.ExpireTime > 0)
|
{
|
DebugEx.Log("创建时间:" + itemEffectTime[0]);
|
switch ((EquipReduceType)config.EndureReduceType)
|
{
|
case EquipReduceType.Def_EquipReduceType_None:
|
break;
|
case EquipReduceType.Def_EquipReduceType_DEF:
|
break;
|
case EquipReduceType.Def_EquipReduceType_ATK:
|
break;
|
case EquipReduceType.Def_EquipReduceType_Time:
|
modelInterface.SetItemEffectCDTime(info.ItemGUID, info.ItemID, itemEffectTime[0], serverSurplusTime);
|
break;
|
case EquipReduceType.Def_EquipReduceType_AttackValue:
|
break;
|
case EquipReduceType.Def_EquipReduceType_HurtValue:
|
break;
|
case EquipReduceType.Def_EquipReduceType_Spcl:
|
break;
|
case EquipReduceType.Def_EquipReduceType_HPMPValue:
|
break;
|
case EquipReduceType.Def_EquipReduceType_Horse:
|
break;
|
case EquipReduceType.Def_EquipReduceType_RTimeItem:
|
modelInterface.SetItemEffectCDTime(info.ItemGUID, info.ItemID, itemEffectTime[0], serverSurplusTime);
|
break;
|
case EquipReduceType.Def_EquipReduceType_Day:
|
break;
|
case EquipReduceType.Def_EquipReduceType_ServerDay:
|
break;
|
}
|
|
}
|
|
}
|
|
public void RefreshItemCount(int count)
|
{
|
if (itemInfo != null)
|
{
|
preItemCount = itemInfo.ItemCount;
|
}
|
|
itemInfo.ItemCount = count;
|
}
|
|
public List<int> GetUseDataModel(int key)
|
{
|
List<int> list = null;
|
if (useDataDict != null)
|
{
|
useDataDict.TryGetValue(key, out list);
|
}
|
|
return list;
|
}
|
}
|
|
public class ItemInfo
|
{
|
public int ItemPlace; //位置索引
|
|
public int ItemID;
|
|
public int IsLocked; //是否锁定
|
|
public int ItemCount; //物品数量
|
|
public int IsBind;//是否绑定
|
|
public int RemainHour; //剩余时间(小时)
|
|
public int IsSuite;//是否已经套装化
|
|
public string UserData;//size = UserDataLen
|
|
public string ItemGUID; //物品的实例ID
|
}
|
}
|
|
|
|