using System; using System.Collections.Generic; using System.Text.RegularExpressions; using LitJson; using UnityEngine; using Snxxz.UI; /**集市信息 */ public class PlayerMarketData { public static event Action OnRefreshPutaway; #region 玩家个人上架物品 public int putawayCnt = 0; public List putawayList = new List(); public void OnRefreshMarket(H1B01_tagPlayerBourseItemResult vNetData) { for (int i = 0; i < vNetData.ItemCount; i++) { if (i < putawayList.Count) { SetMarketItemData(putawayList[i], vNetData.ItemList[i]); } else { MarketItemData data = new MarketItemData(); SetMarketItemData(data, vNetData.ItemList[i]); putawayList.Add(data); } } for (int i = putawayList.Count - 1; i >= vNetData.ItemCount; i--) { MarketItemData data = putawayList[i]; putawayList.RemoveAt(i); data = null; } putawayCnt = vNetData.ItemCount; if (OnRefreshPutaway != null) OnRefreshPutaway(); } public void SetMarketItemData(MarketItemData data, H1B01_tagPlayerBourseItemResult.tagBourseItem source) { data.ItemGUID = source.ItemGUID; data.PlayerID = source.PlayerID; data.ItemTypeID = source.ItemTypeID; data.PriceType = source.PriceType; data.PriceCount = source.PriceCount; data.Count = source.Count; data.UserDataLen = source.UserDataLen; data.UserData = source.UserData; data.NeadPwd = source.NeadPwd; data.EquipGS = source.EquipGS; } #endregion #region 集市交易记录 public List dealRecordList = new List(); public static event Action OnRefreshDealRecord; public void OnRefreshMarket(HA9AB_tagGCBourseRecordInfo vNetData) { for (int i = 0; i < vNetData.Count; i++) { MarketDealRecordData data = null; if (dealRecordList.Count >= ModelCenter.Instance.GetModel().dealRecordCnt) { dealRecordList.Sort(Compare); var _index = dealRecordList.Count - 1; data = dealRecordList[_index]; dealRecordList.RemoveAt(_index); } else { data = new MarketDealRecordData(); } SetDealRecordData(data, vNetData.RecordList[i]); dealRecordList.Add(data); } if (OnRefreshDealRecord != null) { OnRefreshDealRecord(); } } int Compare(MarketDealRecordData x, MarketDealRecordData y) { return -x.Timestamp.CompareTo(y.Timestamp); } public void SetDealRecordData(MarketDealRecordData data, HA9AB_tagGCBourseRecordInfo.tagGCBourseRecord source) { data.ItemData = source.ItemData; data.Timestamp = source.Timestamp; data.TradeMoney = source.TradeMoney; data.TradeTax = source.TradeTax; data.Type = source.Type; data.AnalysisItemData(); } #endregion public void ClearMarketData() { dealRecordList.Clear(); putawayList.Clear(); } } public class MarketItemData { public string ItemGUID; public uint PlayerID; //挂单玩家ID public uint ItemTypeID; //物品ID public byte PriceType; //出售价格类型 public uint PriceCount; //出售价格 public ushort Count; //单组数量 public uint UserDataLen; public string UserData; //自定义数据 public byte NeadPwd; //是否有交易密码 public uint EquipGS; //装备评分 } public class MarketDealRecordData { public byte Type; //类型 0-购买 1-卖出 public uint Timestamp; //时间戳 public uint TradeTax; //交易税 public uint TradeMoney; //收支 public ushort ItemDataLen; public string ItemData; //自定义数据 public ItemJosnData itemdata; [Serializable] public class ItemJosnData { public int itemID; public string userData; public uint equipGS; public uint count; } public void AnalysisItemData() { itemdata = JsonUtility.FromJson(ItemData); } }