//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, February 25, 2019 //-------------------------------------------------------- using System; using System.Collections.Generic; using Snxxz.UI; using System.Linq; namespace Snxxz.UI { [XLua.LuaCallCSharp] public class AuctionItemClass { public string ItemGUID;//物品GUID public int FamilyID; //有值时为仙盟拍品 public int ItemID;//物品ID public int ItemCount; public string TimeStr;//上架时间 yyyy-MM-dd hh:mm:ss public DateTime Time; public int BidderPrice;//竞拍玩家出价 public string UserData;//自定义数据 public string FamilyPlayerIDInfo;//可获得收益的仙盟玩家ID信息 public List FamilyPlayerIDList;//可获得收益的仙盟玩家ID信息存储 public int AuctionType;//拍品类型,0-全服拍品,1-仙盟拍品 public int RecordType;//记录类型 0-我的拍品记录 1-仙盟拍品记录 2-我的竞拍记录 public int RecordResult;//记录结果 0-流拍 1-拍卖成交 2-回收 3-竞价成功 4-竞价失败 public string BidderName;//成交玩家名 public int BidderID;//竞拍玩家ID,也就是当前最高竞价玩家ID } public class AddAuctionItemInfoClass { public string ItemGUID;//物品GUID public int ItemID;//物品ID public bool Bool; } public class QueryRemainingClass { public bool UpBool; public bool DownBool; } public class AuctionInquiryModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk { public Dictionary PlayerAuctionItemInfoDic = new Dictionary();//自身玩家上架的拍品 public event Action PlayerAuctionItem; public List FullServiceAuctionList = new List();//全服拍品列表 public event Action FullServiceAuctionUpdate;//全服拍品数据请求 public Dictionary FamilyAuctionItemDic = new Dictionary();// 拍卖行仙盟拍卖中的物品信息 public Dictionary PlayerAuctionRecordDic = new Dictionary();//拍卖行玩家拍卖记录 public Dictionary AddAuctionItemInfoDic = new Dictionary();//关注的拍品的上架提醒(弹框显示) public event Action AddAuctionItemInfoUpdate; public Dictionary BiddingItemInfoDic = new Dictionary();//拍卖行玩家竞价中的物品信息 public Dictionary AttentionAuctionItemDic = new Dictionary();//拍卖行关注中的拍品详情 public Dictionary AttentionAuctionItemIDdic = new Dictionary();//关注的物品ID AuctionHelpModel auctionHelpModel { get { return ModelCenter.Instance.GetModel(); } } public QueryRemainingClass QueryRemaining = new QueryRemainingClass(); private const int Redpointkey1 = 217; public Redpoint redPointStre1 = new Redpoint(2, Redpointkey1);//拍卖行红点 private bool locationQuery = false; public bool LocationQuery { get { return locationQuery; } set { locationQuery = value; } } public override void Init() { } public void OnBeforePlayerDataInitialize() { LocationQuery = false; PlayerAuctionItemInfoDic.Clear(); FullServiceAuctionList.Clear(); FamilyAuctionItemDic.Clear(); PlayerAuctionRecordDic.Clear(); AddAuctionItemInfoDic.Clear(); BiddingItemInfoDic.Clear(); AttentionAuctionItemDic.Clear(); AttentionAuctionItemIDdic.Clear(); PlayerDatas.Instance.fairyData.OnRefreshFairyMine -= OnRefreshFairyMine; } public void OnPlayerLoginOk() { SetRedPoint(); PlayerDatas.Instance.fairyData.OnRefreshFairyMine += OnRefreshFairyMine; } public override void UnInit() { } private void OnRefreshFairyMine()//用于被提出仙盟清除仙盟拍品 { if (!PlayerDatas.Instance.fairyData.HasFairy) { FamilyAuctionItemDic.Clear(); if (ClearFamilyAuctionUpdate != null) { ClearFamilyAuctionUpdate(); } } } public void AuctionItemInfo(HB501_tagGCAuctionItemInfo info)// 拍卖行拍卖中的物品信息 { List fullServiceAuctionList = new List(); for (int i = 0; i < info.AuctionItemCount; i++) { var PlayerAuctionItem = info.AuctionItemList[i]; AuctionItemClass playerAuctionItemClass = new AuctionItemClass(); playerAuctionItemClass.ItemGUID = PlayerAuctionItem.ItemGUID; playerAuctionItemClass.FamilyID = (int)PlayerAuctionItem.FamilyID; playerAuctionItemClass.ItemID = (int)PlayerAuctionItem.ItemID; playerAuctionItemClass.ItemCount = (int)PlayerAuctionItem.ItemCount; playerAuctionItemClass.TimeStr = PlayerAuctionItem.AddTime; playerAuctionItemClass.Time = DateTime.Parse(PlayerAuctionItem.AddTime); playerAuctionItemClass.BidderPrice = PlayerAuctionItem.BidderPrice; playerAuctionItemClass.UserData = PlayerAuctionItem.UserData; var index = FullServiceAuctionList.FindIndex((x) => { return x.ItemGUID == PlayerAuctionItem.ItemGUID; }); if (index == -1) { fullServiceAuctionList.Add(playerAuctionItemClass); } } if (info.QueryDir == 1)//往后查询 { QueryRemaining.DownBool = info.QueryRemainlCount != 0; if (FullServiceAuctionList.Count == 0) { FullServiceAuctionList.InsertRange(0, fullServiceAuctionList); } else { FullServiceAuctionList.InsertRange(FullServiceAuctionList.Count - 1, fullServiceAuctionList); } } else if (info.QueryDir == 2)//往前查询 { QueryRemaining.UpBool = info.QueryRemainlCount != 0; FullServiceAuctionList.InsertRange(0, fullServiceAuctionList); } else if (info.QueryDir == 3)//定位查询 { if (FullServiceAuctionList.Count == 0) { FullServiceAuctionList.InsertRange(0, fullServiceAuctionList); } else { FullServiceAuctionList.InsertRange(FullServiceAuctionList.Count - 1, fullServiceAuctionList); } LocationQuery = true; WindowCenter.Instance.Open(true,0);//定位查询 } if (FullServiceAuctionUpdate != null) { FullServiceAuctionUpdate(); } } public void PlayerAuctionItemInfo(HB502_tagGCPlayerAuctionItemInfo info)//拍卖行玩家拍卖中的物品信息 { for (int i = 0; i < info.AuctionItemCount; i++) { var PlayerAuctionItem = info.AuctionItemList[i]; AuctionItemClass playerAuctionItemClass = new AuctionItemClass(); playerAuctionItemClass.ItemGUID = PlayerAuctionItem.ItemGUID; playerAuctionItemClass.FamilyID = (int)PlayerAuctionItem.FamilyID; playerAuctionItemClass.ItemID = (int)PlayerAuctionItem.ItemID; playerAuctionItemClass.ItemCount = (int)PlayerAuctionItem.ItemCount; playerAuctionItemClass.TimeStr = PlayerAuctionItem.AddTime; playerAuctionItemClass.Time = DateTime.Parse(PlayerAuctionItem.AddTime); playerAuctionItemClass.BidderPrice = PlayerAuctionItem.BidderPrice; playerAuctionItemClass.UserData = PlayerAuctionItem.UserData; if (PlayerAuctionItemInfoDic.ContainsKey(playerAuctionItemClass.ItemGUID)) { PlayerAuctionItemInfoDic[playerAuctionItemClass.ItemGUID] = playerAuctionItemClass; } else { PlayerAuctionItemInfoDic.Add(playerAuctionItemClass.ItemGUID, playerAuctionItemClass); } } if (PlayerAuctionItem != null) { PlayerAuctionItem(); } } public event Action PlayerAuctionRecordUpdate;//拍卖记录新增拍卖记录 public void PlayerAuctionRecord(HB503_tagGCPlayerAuctionRecordInfo info)//拍卖行玩家拍卖记录 { for (int i = 0; i < info.Count; i++) { var PlayerAuctionRecord = info.AuctionRecordList[i]; AuctionItemClass playerAuctionRecordClass = new AuctionItemClass(); playerAuctionRecordClass.ItemGUID = PlayerAuctionRecord.ItemGUID; playerAuctionRecordClass.FamilyID = (int)PlayerAuctionRecord.FamilyID; playerAuctionRecordClass.TimeStr = PlayerAuctionRecord.RecordTime;//记录时间 playerAuctionRecordClass.Time = DateTime.Parse(PlayerAuctionRecord.RecordTime); playerAuctionRecordClass.RecordType = PlayerAuctionRecord.RecordType;//记录类型 0-我的拍品记录 1-仙盟拍品记录 2-我的竞拍记录 playerAuctionRecordClass.RecordResult = PlayerAuctionRecord.RecordResult;//记录结果 0-流拍 1-拍卖成交 2-回收 3-竞价成功 4-竞价失败 playerAuctionRecordClass.BidderPrice = (int)PlayerAuctionRecord.BidderPrice;//成交价格 playerAuctionRecordClass.BidderName = PlayerAuctionRecord.BidderName;//玩家名 playerAuctionRecordClass.ItemID = (int)PlayerAuctionRecord.ItemID; playerAuctionRecordClass.ItemCount = (int)PlayerAuctionRecord.ItemCount; playerAuctionRecordClass.UserData = PlayerAuctionRecord.UserData; if (PlayerAuctionRecordDic.ContainsKey(playerAuctionRecordClass.ItemGUID)) { PlayerAuctionRecordDic[playerAuctionRecordClass.ItemGUID] = playerAuctionRecordClass; } else { PlayerAuctionRecordDic.Add(playerAuctionRecordClass.ItemGUID, playerAuctionRecordClass); } } if (PlayerAuctionRecordUpdate != null) { PlayerAuctionRecordUpdate(); } } public void AddAuctionItemInfo(HB504_tagGCAddAuctionItemInfo info)//拍卖行新上架拍品(玩家有关注的拍品 ) { for (int i = 0; i < info.AddCount; i++) { var AddAuctionItem = info.AddAuctionItemList[i]; AddAuctionItemInfoClass addAuctionItemInfo = new AddAuctionItemInfoClass(); addAuctionItemInfo.ItemGUID = AddAuctionItem.ItemGUID; addAuctionItemInfo.ItemID = (int)AddAuctionItem.ItemID; addAuctionItemInfo.Bool = true; if (AddAuctionItemInfoDic.ContainsKey(addAuctionItemInfo.ItemID)) { AddAuctionItemInfoDic[addAuctionItemInfo.ItemID] = addAuctionItemInfo; } else { AddAuctionItemInfoDic.Add(addAuctionItemInfo.ItemID, addAuctionItemInfo); } } if (AddAuctionItemInfoUpdate != null) { AddAuctionItemInfoUpdate(); } } public event Action FamilyAuctionItemUpdate;//仙盟拍卖的物品添加刷新 public void FamilyAuctionItemInfo(HB505_tagGCFamilyAuctionItemInfo info)//拍卖行仙盟拍卖中的物品信息(上线同步,刷新同步) { for (int i = 0; i < info.AuctionItemCount; i++) { var FamilyAuctionItem = info.AuctionItemList[i]; AuctionItemClass familyAuctionItemClass = new AuctionItemClass(); familyAuctionItemClass.ItemGUID = FamilyAuctionItem.ItemGUID; familyAuctionItemClass.FamilyID = (int)FamilyAuctionItem.FamilyID; familyAuctionItemClass.ItemID = (int)FamilyAuctionItem.ItemID; familyAuctionItemClass.ItemCount = (int)FamilyAuctionItem.ItemCount; familyAuctionItemClass.TimeStr = FamilyAuctionItem.AddTime; familyAuctionItemClass.Time = DateTime.Parse(FamilyAuctionItem.AddTime); familyAuctionItemClass.BidderPrice = FamilyAuctionItem.BidderPrice; familyAuctionItemClass.UserData = FamilyAuctionItem.UserData; familyAuctionItemClass.FamilyPlayerIDInfo = FamilyAuctionItem.FamilyPlayerIDInfo; familyAuctionItemClass.FamilyPlayerIDList = new List(); familyAuctionItemClass.FamilyPlayerIDList = GetFamilyPlayerIDList(FamilyAuctionItem.FamilyPlayerIDInfo); familyAuctionItemClass.AuctionType = FamilyAuctionItem.AuctionType; if (FamilyAuctionItemDic.ContainsKey(familyAuctionItemClass.ItemGUID)) { FamilyAuctionItemDic[familyAuctionItemClass.ItemGUID] = familyAuctionItemClass; } else { FamilyAuctionItemDic.Add(familyAuctionItemClass.ItemGUID, familyAuctionItemClass); } } if (FamilyAuctionItemUpdate != null) { FamilyAuctionItemUpdate(); } } private List GetFamilyPlayerIDList(string familyPlayerIdStr) { List list = new List(); var jsonData = LitJson.JsonMapper.ToObject(familyPlayerIdStr); for (int i = 0; i < jsonData.Length; i++) { list.Add(jsonData[i]); } return list; } public event Action AttentionAuctionItemUdate;//拍卖行关注中的拍品信息变更(信息每次重置) public void AttentionAuctionItemInfo(HB506_tagGCAttentionAuctionItemInfo info)//拍卖行关注中的拍品信息 { AttentionAuctionItemDic.Clear(); for (int i = 0; i < info.AuctionItemCount; i++) { var AttentionAuctionItem = info.AuctionItemList[i]; AuctionItemClass playerAuctionItemClass = new AuctionItemClass(); playerAuctionItemClass.ItemGUID = AttentionAuctionItem.ItemGUID; playerAuctionItemClass.FamilyID = (int)AttentionAuctionItem.FamilyID; playerAuctionItemClass.ItemID = (int)AttentionAuctionItem.ItemID; playerAuctionItemClass.ItemCount = (int)AttentionAuctionItem.ItemCount; playerAuctionItemClass.TimeStr = AttentionAuctionItem.AddTime; playerAuctionItemClass.Time = DateTime.Parse(AttentionAuctionItem.AddTime); playerAuctionItemClass.BidderPrice = AttentionAuctionItem.BidderPrice; playerAuctionItemClass.UserData = AttentionAuctionItem.UserData; if (AttentionAuctionItemDic.ContainsKey(playerAuctionItemClass.ItemGUID)) { AttentionAuctionItemDic[playerAuctionItemClass.ItemGUID] = playerAuctionItemClass; } else { AttentionAuctionItemDic.Add(playerAuctionItemClass.ItemGUID, playerAuctionItemClass); } } if (AttentionAuctionItemUdate != null) { AttentionAuctionItemUdate(); } } public event Action AttentionAuctionItemUpdate;//关注物品ID刷新 public void AttentionAuctionItemID(HB507_tagGCAttentionAuctionItemID info)//关注的物品ID(需要主动查询) { AttentionAuctionItemIDdic.Clear(); for (int i = 0; i < info.AttentionCount; i++) { var attentionItemID = (int)info.AttentionItemIDList[i]; if (!AttentionAuctionItemIDdic.ContainsKey(attentionItemID)) { AttentionAuctionItemIDdic.Add(attentionItemID, 0); } } if (AttentionAuctionItemUpdate != null) { AttentionAuctionItemUpdate(); } } public event Action RefreshAuctionItemUpdate;//拍卖行数据刷新(仅用于数据刷新) public void RefreshAuctionItem(HB508_tagGCRefreshAuctionItemInfo info)//拍卖行刷新拍品(只进行刷新) { for (int i = 0; i < info.RefreshCount; i++) { var RefreshAuctionItem = info.RefreshAuctionItemList[i]; if (FamilyAuctionItemDic.ContainsKey(RefreshAuctionItem.ItemGUID))// 拍卖行仙盟拍卖中的物品信息 { var FamilyAuctionItem = FamilyAuctionItemDic[RefreshAuctionItem.ItemGUID]; if (FamilyAuctionItem.AuctionType == RefreshAuctionItem.AuctionType) { FamilyAuctionItem.TimeStr = RefreshAuctionItem.AddTime; FamilyAuctionItem.Time = DateTime.Parse(RefreshAuctionItem.AddTime); FamilyAuctionItem.BidderID = (int)RefreshAuctionItem.BidderID; FamilyAuctionItem.BidderPrice = (int)RefreshAuctionItem.BidderPrice; FamilyAuctionItemDic[RefreshAuctionItem.ItemGUID] = FamilyAuctionItem; } else { FamilyAuctionItemDic.Remove(RefreshAuctionItem.ItemGUID); if (ClearFamilyAuctionUpdate != null) { ClearFamilyAuctionUpdate(); } } } var index = FullServiceAuctionList.FindIndex((x) => { return x.ItemGUID == RefreshAuctionItem.ItemGUID; }); if (index != -1)//全服拍品 { FullServiceAuctionList[index].TimeStr = RefreshAuctionItem.AddTime; FullServiceAuctionList[index].Time = DateTime.Parse(RefreshAuctionItem.AddTime); FullServiceAuctionList[index].BidderID = (int)RefreshAuctionItem.BidderID; FullServiceAuctionList[index].BidderPrice = (int)RefreshAuctionItem.BidderPrice; } if (PlayerAuctionItemInfoDic.ContainsKey(RefreshAuctionItem.ItemGUID))//我的拍品刷新 { var PlayerAuctionItemInfo = PlayerAuctionItemInfoDic[RefreshAuctionItem.ItemGUID]; PlayerAuctionItemInfo.TimeStr = RefreshAuctionItem.AddTime; PlayerAuctionItemInfo.Time = DateTime.Parse(RefreshAuctionItem.AddTime); PlayerAuctionItemInfo.BidderID = (int)RefreshAuctionItem.BidderID; PlayerAuctionItemInfo.BidderPrice = (int)RefreshAuctionItem.BidderPrice; PlayerAuctionItemInfoDic[RefreshAuctionItem.ItemGUID] = PlayerAuctionItemInfo; } if (RefreshAuctionItemUpdate != null) { RefreshAuctionItemUpdate(); } } } public event Action ClearAuctionUpdate;//拍卖行物品清除 public event Action ClearFamilyAuctionUpdate;//清除仙盟物品 public void ClearAuctionItem(HB509_tagGCClearAuctionItemInfo info)//拍卖行清除拍品 { for (int i = 0; i < info.ClearCount; i++) { var ItemGUIDList = info.ClearAuctionItemList[i]; if (BiddingItemInfoDic.ContainsKey(ItemGUIDList.ItemGUID))//清除拍卖行玩家参与竞价中的物品信息 { BiddingItemInfoDic.Remove(ItemGUIDList.ItemGUID); } if (FamilyAuctionItemDic.ContainsKey(ItemGUIDList.ItemGUID))// 清除拍卖行仙盟拍卖中的物品信息 { FamilyAuctionItemDic.Remove(ItemGUIDList.ItemGUID); if (ClearFamilyAuctionUpdate != null) { ClearFamilyAuctionUpdate(); } } var index = FullServiceAuctionList.FindIndex((x) => { return x.ItemGUID == ItemGUIDList.ItemGUID; }); if (index != -1)//清除全服拍品的某一件物品 { FullServiceAuctionList.RemoveAt(index); } if (PlayerAuctionItemInfoDic.ContainsKey(ItemGUIDList.ItemGUID))//我的拍品清除 { PlayerAuctionItemInfoDic.Remove(ItemGUIDList.ItemGUID); } } if (ClearAuctionUpdate != null) { ClearAuctionUpdate(); } } public event Action BiddingItemInfoUpdate;//卖行玩家竞价中的物品信息刷新 public void BiddingItemInfo(HB510_tagGCBiddingItemInfo info)//拍卖行玩家竞价中的物品信息 (每次上线同步一次) { for (int i = 0; i < info.AuctionItemCount; i++) { var BiddingItem = info.AuctionItemList[i]; AuctionItemClass BiddingItemClass = new AuctionItemClass(); BiddingItemClass.ItemGUID = BiddingItem.ItemGUID; BiddingItemClass.ItemID = (int)BiddingItem.ItemID; BiddingItemClass.ItemCount = BiddingItem.ItemCount; BiddingItemClass.FamilyID = (int)BiddingItem.FamilyID; BiddingItemClass.TimeStr = BiddingItem.AddTime; BiddingItemClass.Time = DateTime.Parse(BiddingItem.AddTime); BiddingItemClass.BidderPrice = BiddingItem.BidderPrice;//竞拍玩家出价 BiddingItemClass.BidderID = (int)BiddingItem.BidderID;//竞拍玩家ID,也就是当前最高竞价玩家ID BiddingItemClass.UserData = BiddingItem.UserData; if (BiddingItemInfoDic.ContainsKey(BiddingItemClass.ItemGUID)) { BiddingItemInfoDic[BiddingItemClass.ItemGUID] = BiddingItemClass; } else { BiddingItemInfoDic.Add(BiddingItemClass.ItemGUID, BiddingItemClass); } } if (BiddingItemInfoUpdate != null) { BiddingItemInfoUpdate(); } } private void SetRedPoint() { int GetDayOfYear = DateTime.Now.DayOfYear; string strKey = "AuctionRedPoint" + PlayerDatas.Instance.baseData.PlayerID; int day = LocalSave.GetInt(strKey); if (day != GetDayOfYear) { redPointStre1.state = RedPointState.Simple; } else { redPointStre1.state = RedPointState.None; } } } }