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.guid; } }
|
public int itemId { get { return itemInfo == null ? 0 : itemInfo.itemId; } }
|
public int count { get { return itemInfo == null ? 0 : itemInfo.count; } }
|
public int itemPlace { get { return itemInfo == null ? 0 : itemInfo.index; } }
|
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; }
|
|
public ItemModel(PackType type)
|
{
|
packType = type;
|
}
|
|
public void SetItemInfo(ItemInfo info)
|
{
|
if (itemInfo != null)
|
{
|
preItemCount = itemInfo.count;
|
}
|
|
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 = ItemLogicUtility.Instance.GetEquipScore(packType, itemId, useDataDict);
|
if (GetUseDataModel((int)ItemUseDataKey.itemCount) != null)
|
{
|
itemInfo.count = GetUseDataModel((int)ItemUseDataKey.itemCount)[0];
|
}
|
|
var itemEffectTime = GetUseDataModel((int)ItemUseDataKey.createTime);
|
if (itemEffectTime != null && itemEffectTime[0] != 0 && config.ExpireTime > 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:
|
ItemLogicUtility.Instance.SetItemEffectCDTime(info.guid, 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:
|
ItemLogicUtility.Instance.SetItemEffectCDTime(info.guid, 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.count;
|
}
|
|
itemInfo.count = 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 index; //位置索引
|
|
public int itemId;
|
|
public int isLocked; //是否锁定
|
|
public int count; //物品数量
|
|
public int isBind;//是否绑定
|
|
public int remainHour; //剩余时间(小时)
|
|
public int isSuite;//是否已经套装化
|
|
public string userData;//size = UserDataLen
|
|
public string guid; //物品的实例ID
|
|
public ItemInfo()
|
{
|
|
}
|
|
public ItemInfo(H0725_tagRolePackRefreshEx.tagRoleItemRefresh serverItem)
|
{
|
itemId = (int)serverItem.ItemID;
|
index = serverItem.ItemPlace;
|
count = serverItem.ItemCount;
|
remainHour = (int)serverItem.RemainHour;
|
isBind = serverItem.IsBind;
|
isSuite = serverItem.IsSuite;
|
userData = serverItem.UserData;
|
isLocked = serverItem.IsLocked;
|
guid = serverItem.ItemGUID;
|
}
|
|
public ItemInfo(H0704_tagRolePackRefresh serverItem)
|
{
|
itemId = (int)serverItem.ItemID;
|
index = serverItem.ItemPlace;
|
count = serverItem.ItemCount;
|
remainHour = (int)serverItem.RemainHour;
|
isBind = serverItem.IsBind;
|
isSuite = serverItem.IsSuite;
|
userData = serverItem.UserData;
|
isLocked = serverItem.IsLocked;
|
guid = serverItem.ItemGUID;
|
}
|
|
}
|
}
|
|
|
|