少年修仙传客户端代码仓库
client_Zxw
2019-03-04 893eeb1f1a729f87e3125172d12952bff977a1ad
6251 子 【开发】【2.0】拍卖行开发单
2个文件已添加
3个文件已修改
288 ■■■■■ 已修改文件
System/Auction/AuctionInquiryModel.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/FamilyAuctionWin.cs 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/FamilyAuctioncell.cs 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/FamilyAuctioncell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/FullServiceAuctioncell.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/AuctionInquiryModel.cs
@@ -46,10 +46,10 @@
        public event Action FullServiceAuctionUpdate;//全服拍品刷新
        public Dictionary<string, AuctionItemClass> FamilyAuctionItemDic = new Dictionary<string, AuctionItemClass>();// 拍卖行仙盟拍卖中的物品信息
        public Dictionary<string, AuctionItemClass> PlayerAuctionRecordDic = new Dictionary<string, AuctionItemClass>();//拍卖行玩家拍卖记录
        public Dictionary<string, AddAuctionItemInfoClass> AddAuctionItemInfoDic = new Dictionary<string, AddAuctionItemInfoClass>();//关注的拍品的上架提醒(弹框显示)
        public event Action AddAuctionItemInfoUpdate;
@@ -96,7 +96,7 @@
                playerAuctionItemClass.Time = DateTime.Parse(PlayerAuctionItem.AddTime);
                playerAuctionItemClass.BidderPrice = PlayerAuctionItem.BidderPrice;
                playerAuctionItemClass.UserData = PlayerAuctionItem.UserData;
                var index = FullServiceAuctionList.FindIndex((x)=> { return x.ItemGUID == PlayerAuctionItem.ItemGUID; });
                var index = FullServiceAuctionList.FindIndex((x) => { return x.ItemGUID == PlayerAuctionItem.ItemGUID; });
                if (index == -1)
                {
                    fullServiceAuctionList.Add(playerAuctionItemClass);
@@ -240,7 +240,6 @@
            }
        }
        public event Action AttentionAuctionItemUpdate;//关注物品ID刷新
        public void AttentionAuctionItemID(HB507_tagGCAttentionAuctionItemID info)//关注的物品ID(需要主动查询)
        {
@@ -250,7 +249,7 @@
                var attentionItemID = (int)info.AttentionItemIDList[i];
                if (!AttentionAuctionItemIDdic.ContainsKey(attentionItemID))
                {
                    AttentionAuctionItemIDdic.Add(attentionItemID,0);
                    AttentionAuctionItemIDdic.Add(attentionItemID, 0);
                }
            }
            if (AttentionAuctionItemUpdate != null)
@@ -285,14 +284,14 @@
                        {
                            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].TimeStr = RefreshAuctionItem.AddTime;
                    FullServiceAuctionList[index].Time = DateTime.Parse(RefreshAuctionItem.AddTime);
                    FullServiceAuctionList[index].BidderID = (int)RefreshAuctionItem.BidderID;
                    FullServiceAuctionList[index].BidderPrice = (int)RefreshAuctionItem.BidderPrice;
                }
                if (RefreshAuctionItemUpdate != null)
System/Auction/FamilyAuctionWin.cs
@@ -18,6 +18,7 @@
        [SerializeField] ScrollerController m_ScrollerControllerItem;
        AuctionInquiryModel model { get { return ModelCenter.Instance.GetModel<AuctionInquiryModel>(); } }
        AuctionHelpModel auctionHelpModel { get { return ModelCenter.Instance.GetModel<AuctionHelpModel>(); } }
        List<AuctionItemClass> FamilyAuctionList = new List<AuctionItemClass>();
        #region Built-in
        protected override void BindController()
        {
@@ -31,23 +32,46 @@
        protected override void OnPreOpen()
        {
            OnCreateGridLineCell(m_ScrollerController);
            OnCreateGridLineCellItem(m_ScrollerControllerItem);
            GetFamilyAuctionItemList();
            ListSotr();
            OnCreateGridCell(m_ScrollerController);
            OnCreateGridCellItem(m_ScrollerControllerItem);
        }
        protected override void OnAfterOpen()
        {
            model.FamilyAuctionItemUpdate += FamilyAuctionReset;
            model.ClearFamilyAuctionUpdate += FamilyAuctionReset;
            model.RefreshAuctionItemUpdate += RefreshAuctionItemUpdate;
            model.BiddingItemInfoUpdate += RefreshAuctionItemUpdate;
        }
        protected override void OnPreClose()
        {
        }
        {
            model.FamilyAuctionItemUpdate -= FamilyAuctionReset;
            model.ClearFamilyAuctionUpdate -= FamilyAuctionReset;
            model.BiddingItemInfoUpdate -= RefreshAuctionItemUpdate;
            model.RefreshAuctionItemUpdate -= RefreshAuctionItemUpdate;
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private void OnCreateGridLineCell(ScrollerController gridCtrl)
        private void FamilyAuctionReset()
        {
            GetFamilyAuctionItemList();
            ListSotr();
            OnCreateGridCellItem(m_ScrollerControllerItem);
        }
        private void RefreshAuctionItemUpdate()
        {
            m_ScrollerControllerItem.m_Scorller.RefreshActiveCellViews();//刷新可见
        }
        private void OnCreateGridCell(ScrollerController gridCtrl)
        {
            gridCtrl.Refresh();
            for (int i = 0; i < auctionHelpModel.FamilyAuctionList.Count; i++)
@@ -74,13 +98,14 @@
            }
            button.SetListener(() =>
            {
                m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
               // m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
            });
        }
        private void OnCreateGridLineCellItem(ScrollerController gridCtrl)
        private void OnCreateGridCellItem(ScrollerController gridCtrl)
        {
            gridCtrl.Refresh();
            for (int i = 0; i < 10; i++)
            for (int i = 0; i < FamilyAuctionList.Count; i++)
            {
                gridCtrl.AddCell(ScrollerDataType.Header, i);
            }
@@ -88,7 +113,78 @@
        }
        private void OnRefreshGridCellItem(ScrollerDataType type, CellView cell)
        {
            int index = cell.cellIndex;
            var ItemGUID = FamilyAuctionList[index].ItemGUID;
            FamilyAuctioncell familyAuctionCell = cell.GetComponent<FamilyAuctioncell>();
            familyAuctionCell.GetFamilyAuctionGUID(ItemGUID);
        }
        private void GetFamilyAuctionItemList()
        {
            FamilyAuctionList.Clear();
            foreach (var value in model.FamilyAuctionItemDic.Values)
            {
                FamilyAuctionList.Add(value);
            }
        }
        private void ListSotr()
        {
            FamilyAuctionList.Sort(Compare);
        }
        int Compare(AuctionItemClass x, AuctionItemClass y)//数组排列
        {
            bool havex = IsHighestPrice(x.ItemGUID);
            bool havey = IsHighestPrice(y.ItemGUID);
            if (havex.CompareTo(havey) != 0)//是否最高价
            {
                return -havex.CompareTo(havey);
            }
            bool havex1 = IsParticipate(x.ItemGUID);
            bool havey1 = IsParticipate(y.ItemGUID);
            if (havex1.CompareTo(havey1) != 0)//是否参与
            {
                return -havex1.CompareTo(havey1);
            }
            bool havex2 = IsAttention(x.ItemID);
            bool havey2 = IsAttention(y.ItemID);
            if (havex2.CompareTo(havey2) != 0)//是否关注
            {
                return -havex2.CompareTo(havey2);
            }
            return 1;
        }
        private bool IsHighestPrice(string GUID)
        {
            bool isBool = false;
            int playerId = (int)PlayerDatas.Instance.baseData.PlayerID;
            if (model.BiddingItemInfoDic.ContainsKey(GUID))
            {
                var biddingItemInfo = model.BiddingItemInfoDic[GUID];
                isBool=biddingItemInfo.BidderID == playerId;
            }
            return isBool;
        }
        private bool IsParticipate(string GUID)
        {
            bool isBool = false;
            if (model.BiddingItemInfoDic.ContainsKey(GUID))
            {
                isBool = true;
            }
            return isBool;
        }
        private bool IsAttention(int itemId)
        {
            bool isBool = false;
            if (model.AttentionAuctionItemIDdic.ContainsKey(itemId))
            {
                isBool = true;
            }
            return isBool;
        }
    }
System/Auction/FamilyAuctioncell.cs
New file
@@ -0,0 +1,142 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Monday, March 04, 2019
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
namespace Snxxz.UI {
    public class FamilyAuctioncell:MonoBehaviour {
        [SerializeField] GameObject m_NeedImage;//需要
        [SerializeField] GameObject m_ParticipateImage;//参与竞价
        [SerializeField] ItemCell m_ItemCell;//物品
        [SerializeField] TextEx m_ItemName;//物品名
        [SerializeField] GameObject m_EquipmentScoreObj;//装备评分
        [SerializeField] TextEx m_Score;//评分
        [SerializeField] GameObject m_StateIcon;//上升剪头
        [SerializeField] GameObject m_BiddingTextObj;//竞价中
        [SerializeField] GameObject m_HighestPriceImage;//最高价
        [SerializeField] TextEx m_JadeNumber;//当前价格
        [SerializeField] TextEx m_TimeText;//时间
        [SerializeField] Button m_PriceButton;//一口价按钮
        [SerializeField] ImageEx m_PriceImage;
        [SerializeField] TextEx m_JadeNumber1;
        [SerializeField] Button m_BiddingButton;//竞价按钮
        [SerializeField] ImageEx m_BiddingImage;
        [SerializeField] TextEx m_JadeNumber2;
        AuctionInquiryModel model { get { return ModelCenter.Instance.GetModel<AuctionInquiryModel>(); } }
        AuctionHelpModel auctionHelpModel { get { return ModelCenter.Instance.GetModel<AuctionHelpModel>(); } }
        private AuctionItemConfig AuctionItem;
        private AuctionItemClass FamilyAuctionItem;
        public void GetFamilyAuctionGUID(string GUIID)
        {
            m_NeedImage.SetActive(false);
            m_ParticipateImage.SetActive(false);
            m_BiddingTextObj.SetActive(false);
            m_HighestPriceImage.SetActive(false);
            m_EquipmentScoreObj.SetActive(false);
            if (!model.FamilyAuctionItemDic.ContainsKey(GUIID))
            {
                DebugEx.LogError("未找到相应的仙盟拍品数据");
                return;
            }
            var familyAuctionItem = model.FamilyAuctionItemDic[GUIID];
            FamilyAuctionItem = familyAuctionItem;
            var playerId = PlayerDatas.Instance.baseData.PlayerID;
            var auctionItem = AuctionItemConfig.Get(familyAuctionItem.ItemID);
            var itemConfig = ItemConfig.Get(familyAuctionItem.ItemID);
            if (itemConfig == null)
            {
                DebugEx.LogError("物品表没有找到该物品,物品ID为" + familyAuctionItem.ItemID);
                return;
            }
            if (auctionItem == null)
            {
                DebugEx.LogError("拍卖物品表没有找到该物品,物品ID为" + familyAuctionItem.ItemID);
                return;
            }
            AuctionItem = auctionItem;
            if (model.BiddingItemInfoDic.ContainsKey(GUIID))//参与了竞价的物品
            {
                var biddingItemInfo = model.BiddingItemInfoDic[GUIID];
                m_ParticipateImage.SetActive(true);
                if (biddingItemInfo.BidderID == playerId)//判断是否最高竞价
                {
                    m_HighestPriceImage.SetActive(true);
                }
                else
                {
                    m_BiddingTextObj.SetActive(true);
                }
            }
            ItemCellModel cellModel = new ItemCellModel(familyAuctionItem.ItemID, true,
                (ulong)familyAuctionItem.ItemCount, itemConfig.BindType);
            m_ItemCell.Init(cellModel);
            m_ItemName.text = itemConfig.ItemName;
            if (itemConfig.EquipPlace != 0)
            {
                m_EquipmentScoreObj.SetActive(true);
                // m_Score.text
            }
            m_JadeNumber.text = (auctionItem.BasePrice + familyAuctionItem.BidderPrice).ToString();
            m_JadeNumber1.text = auctionItem.BuyoutPrice.ToString();
            m_PriceButton.SetListener(() => //一口价
            {
                DebugEx.Log(auctionItem.BuyoutPrice + "一口价");
            });
            m_JadeNumber2.text = (auctionItem.BasePrice+ familyAuctionItem.BidderPrice).ToString();
            m_BiddingButton.SetListener(() => //竞价
            {
            });
        }
        private void LateUpdate()
        {
            if (AuctionItem != null && FamilyAuctionItem != null)
            {
                var timeNow = TimeUtility.ServerNow;
                TimeSpan timeSpan = timeNow - FamilyAuctionItem.Time;
                int minute =(int)timeSpan.TotalMinutes;
                if (minute < AuctionItem.NoticeSaleMinutes)//预热中
                {
                    if (m_PriceButton.interactable)
                    {
                        m_PriceButton.interactable = false;
                        m_PriceImage.gray = true;
                    }
                    if (m_BiddingButton.interactable)
                    {
                        m_BiddingButton.interactable = false;
                        m_BiddingImage.gray = true;
                    }
                    int seconds = AuctionItem.NoticeSaleMinutes * 60 - (int)timeSpan.TotalSeconds;
                    m_TimeText.text = TimeUtility.SecondsToHMS(seconds)+"后开始";
                }
                else if (minute >= AuctionItem.NoticeSaleMinutes && minute <= AuctionItem.FamilySaleMinutes)//拍卖中
                {
                    if (!m_PriceButton.interactable || m_PriceImage.gray)
                    {
                        m_PriceButton.interactable = true;
                        m_PriceImage.gray = false;
                    }
                    if (!m_BiddingButton.interactable || m_BiddingImage.gray)
                    {
                        m_BiddingButton.interactable = true;
                        m_BiddingImage.gray = false;
                    }
                    int seconds = AuctionItem.FamilySaleMinutes * 60 - ((int)timeSpan.TotalSeconds- AuctionItem.NoticeSaleMinutes * 60);
                    m_TimeText.text = "剩余"+TimeUtility.SecondsToHMS(seconds) ;
                }
            }
        }
    }
}
System/Auction/FamilyAuctioncell.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 0bb71d522f2496447b4a4f1af10e45cf
timeCreated: 1551686468
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Auction/FullServiceAuctioncell.cs
@@ -79,7 +79,8 @@
                    m_BiddingTextObj.SetActive(true);
                }
            }
            ItemCellModel cellModel = new ItemCellModel(fullServiceAuction.ItemID, true, (ulong)fullServiceAuction.ItemCount, itemConfig.BindType);
            ItemCellModel cellModel = new ItemCellModel(fullServiceAuction.ItemID, true,
                (ulong)fullServiceAuction.ItemCount, itemConfig.BindType);
            m_ItemCell.Init(cellModel);
            m_ItemName.text = itemConfig.ItemName;
            if (itemConfig.EquipPlace != 0)