using Snxxz.UI; using System; using System.Collections.Generic; using TableConfig; namespace Snxxz.UI { public interface IItemUseDate { int itemId { get;set; } int EquipPlace { get; set; } Dictionary> useDataDict { get; set; } } public class ItemModel : IItemUseDate { public ItemConfig chinItemModel { get; private set; } public ItemInfo itemInfo { get; private set; } public PackType packType { get; private set; } public int equipScore { get; private set; } public Dictionary> useDataDict { get; set; } public int EquipPlace { get; set; } public int itemId { get; set; } public int preItemCount{ get;private set; } PackModelInterface _modelInterface; PackModelInterface modelInterface { get { return _modelInterface ?? (_modelInterface = ModelCenter.Instance.GetModel()); } } public ItemModel(PackType type) { preItemCount = 0; packType = type; itemInfo = null; } public void SetItemModel(ItemInfo info) { if(itemInfo != null) { preItemCount = itemInfo.ItemCount; } itemInfo = info; itemId = info.ItemID; chinItemModel = Config.Instance.Get(info.ItemID); if(packType != PackType.rptEquip) { this.EquipPlace = chinItemModel.EquipPlace; } else { this.EquipPlace = info.ItemPlace; } useDataDict = ConfigParse.Analysis(info.UserData); this.equipScore = modelInterface.SetEquipScore(packType,itemInfo.ItemID,useDataDict); DebugEx.Log("Pack:" + packType + "ID:" + info.ItemID + "GUID:" + info.ItemGUID); List itemEffectTime = GetUseDataModel((int)ItemUseDataKey.Def_IudetCreateTime); if(itemEffectTime != null && itemEffectTime[0] != 0 && chinItemModel.ExpireTime > 0) { DebugEx.Log("创建时间:" + itemEffectTime[0]); //System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区 //DateTime dt = startTime.AddSeconds(itemEffectTime[0]); //DesignDebug.Log("创建DataTime:" + dt); switch ((EquipReduceType)chinItemModel.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]); 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]); 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 GetUseDataModel(int key) { List 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 } }