Main/System/KnapSack/Logic/ItemModel.cs
@@ -1,185 +1,184 @@
using vnxbqy.UI;
using System;
using System;
using System.Collections.Generic;
    public class ItemModel
    {
        public readonly PackType packType;
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 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 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 {
    public int auctionSurplusTime {
            get {
        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;
                /*
                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;
            }
    public int overdueSurplusTime {
        get {
            var surplusTime = 0;
            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);
                    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;
                }
            }
            this.score = info.gearScore;//ItemLogicUtility.Instance.GetEquipScore(itemId, useDataDict);
            return surplusTime;
        }
        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 ItemModel(PackType type, ItemInfo info)
    {
        public int index; //位置索引
        packType = type;
        SetItemInfo(info);
    }
        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 void SetItemInfo(ItemInfo info)
    {
        if (itemInfo != null)
        {
            preItemCount = itemInfo.count;
        }
        public ItemInfo(H0725_tagRolePackRefreshEx.tagRoleItemRefresh serverItem)
        itemInfo = info;
        config = ItemConfig.Get(info.itemId);
        useDataDict = ConfigParse.Analysis(info.userData);
        var customCount = GetUseDataFirstValue((int)ItemUseDataKey.itemCount);
        if (customCount > 0)
        {
            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;
            itemInfo.count = customCount;
        }
        public ItemInfo(H0704_tagRolePackRefresh serverItem)
        if (config.ExpireTime > 0)
        {
            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;
            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;
    }
}