using System;
|
using System.Collections.Generic;
|
|
|
public class ItemModel
|
{
|
public readonly PackType packType;
|
|
public ItemConfig config { get; private set; }
|
public ItemInfo itemInfo { get; private set; }
|
public int score { get; private set; }
|
public Dictionary<int, List<int>> useDataDict { get; private set; }
|
|
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 gridIndex { get { return itemInfo == null ? 0 : itemInfo.index; } }
|
public bool isAuction { get { return itemInfo == null ? false : itemInfo.isAuction == 1; } }
|
public int preItemCount { get; private set; }
|
|
public int auctionSurplusTime {
|
|
get {
|
return 0;
|
/*
|
var createTime = GetUseDataFirstValue(50);
|
if (createTime > 0)
|
{
|
var overdueTime = TimeUtility.GetTime((uint)createTime) + new TimeSpan(GeneralDefine.acutionItemHour * TimeSpan.TicksPerHour);
|
return (int)(overdueTime).Subtract(TimeUtility.ServerNow).TotalSeconds;
|
}
|
else
|
{
|
return 0;
|
}
|
*/
|
}
|
}
|
|
public int overdueSurplusTime {
|
get {
|
var surplusTime = 0;
|
if (config.ExpireTime > 0)
|
{
|
var createTime = GetUseDataFirstValue((int)ItemUseDataKey.createTime);
|
if (createTime > 0)
|
{
|
var seconds = GetUseDataFirstValue(48);
|
var overdueTime = DateTime.Now;
|
if (seconds != 0)
|
{
|
overdueTime = TimeUtility.GetTime((uint)createTime).AddSeconds(seconds);
|
}
|
else
|
{
|
overdueTime = TimeUtility.GetTime((uint)createTime).AddSeconds(config.ExpireTime);
|
}
|
|
surplusTime = (int)(overdueTime).Subtract(TimeUtility.ServerNow).TotalSeconds;
|
}
|
}
|
|
return surplusTime;
|
}
|
}
|
|
public ItemModel(PackType type, ItemInfo info)
|
{
|
packType = type;
|
SetItemInfo(info);
|
}
|
|
public void SetItemInfo(ItemInfo info)
|
{
|
if (itemInfo != null)
|
{
|
preItemCount = itemInfo.count;
|
}
|
|
itemInfo = info;
|
config = ItemConfig.Get(info.itemId);
|
useDataDict = ConfigParse.Analysis(info.userData);
|
|
var customCount = GetUseDataFirstValue((int)ItemUseDataKey.itemCount);
|
if (customCount > 0)
|
{
|
itemInfo.count = customCount;
|
}
|
|
if (config.ExpireTime > 0)
|
{
|
var createTime = GetUseDataFirstValue((int)ItemUseDataKey.createTime);
|
if (createTime > 0)
|
{
|
var serverSurplusTime = GetUseDataFirstValue(48);
|
//ItemLogicUtility.Instance.SetItemEffectCDTime(info.guid, info.itemId, createTime, serverSurplusTime);
|
}
|
}
|
|
this.score = info.gearScore;//ItemLogicUtility.Instance.GetEquipScore(itemId, useDataDict);
|
}
|
|
public void RefreshCount(int count)
|
{
|
if (itemInfo != null)
|
{
|
preItemCount = itemInfo.count;
|
}
|
|
itemInfo.count = count;
|
}
|
|
public List<int> GetUseData(int key)
|
{
|
List<int> list = null;
|
if (useDataDict != null)
|
{
|
useDataDict.TryGetValue(key, out list);
|
}
|
|
return list;
|
}
|
|
public int GetUseDataFirstValue(int key)
|
{
|
if (useDataDict != null && useDataDict.ContainsKey(key) && useDataDict[key].Count > 0)
|
{
|
return useDataDict[key][0];
|
}
|
|
return 0;
|
}
|
|
}
|
|
public class ItemInfo
|
{
|
public int index; //位置索引
|
|
public int itemId;
|
|
public int count; //物品数量
|
|
public int isAuction;//是否拍品
|
|
public int remainHour; //剩余时间(小时)
|
|
public string userData;//size = UserDataLen
|
|
public string guid; //物品的实例ID
|
public int gearScore; //评分
|
|
public ItemInfo()
|
{
|
|
}
|
|
public ItemInfo(H0725_tagRolePackRefreshEx.tagRoleItemRefresh serverItem)
|
{
|
itemId = (int)serverItem.ItemID;
|
index = serverItem.ItemPlace;
|
count = serverItem.ItemCount;
|
remainHour = (int)serverItem.RemainHour;
|
userData = serverItem.UserData;
|
guid = serverItem.ItemGUID;
|
isAuction = serverItem.IsBind;
|
gearScore = (int)serverItem.GearScore;
|
}
|
|
public ItemInfo(H0704_tagRolePackRefresh serverItem)
|
{
|
itemId = (int)serverItem.ItemID;
|
index = serverItem.ItemPlace;
|
count = serverItem.ItemCount;
|
remainHour = (int)serverItem.RemainHour;
|
userData = serverItem.UserData;
|
guid = serverItem.ItemGUID;
|
isAuction = serverItem.IsBind;
|
gearScore = (int)serverItem.GearScore;
|
}
|
|
}
|
|
|