少年修仙传客户端代码仓库
client_Zxw
2019-03-05 4233763cf2af57f0c68aa864e0c36e604a6adaf5
6251 子 【开发】【2.0】拍卖行开发单
4个文件已添加
2个文件已修改
455 ■■■■■ 已修改文件
System/Auction/AuctionHouseWin.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/AuctionInquiryModel.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/MyFocusCell.cs 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/MyFocusCell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/MyFocusWin.cs 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/MyFocusWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/AuctionHouseWin.cs
@@ -22,7 +22,8 @@
        [SerializeField] FunctionButton m_FullServiceAuctionWin;//全服拍卖
        [SerializeField] FunctionButton m_FamilyAuctionWin;//仙盟拍卖
        [SerializeField] FunctionButton m_MyAuction;//我的拍卖
        [SerializeField] Button m_AttentionButton;//我的关注
        [SerializeField] FunctionButton m_MyFocus;//我的关注
        [SerializeField] Button m_AttentionButton;//我的关注商品
        [SerializeField] Button m_TransactionRecordButton;//成交记录
        protected override void BindController()
        {
@@ -35,8 +36,9 @@
            m_LeftBtn.AddListener(OnClickLeftBtn);
            m_RightBtn.AddListener(OnClickRight);
            m_FullServiceAuctionWin.AddListener(OnClickFullServiceAuction);
            m_FamilyAuctionWin.AddListener(OnClickFamilyAuction);
            m_FamilyAuctionWin.AddListener(OnClickFamilyAuction);
            m_MyAuction.AddListener(OnClickMyFocus);
            m_MyAuction.AddListener(OnClickMyAuction);
            m_AttentionButton.AddListener(OnClickAttentionButton);
            m_TransactionRecordButton.AddListener(OnClickTransactionRecordButton);
@@ -103,6 +105,12 @@
            WindowCenter.Instance.Open<MyAuctionWin>(true);
            functionOrder = 2;
        }
        private void OnClickMyFocus()
        {
            CloseChild();
            WindowCenter.Instance.Open<MyFocusWin>(true);
            functionOrder = 3;
        }
        private void OnClickAttentionButton()
        {
@@ -128,6 +136,10 @@
            {
                WindowCenter.Instance.Close<MyAuctionWin>();
            }
            if (WindowCenter.Instance.IsOpen<MyFocusWin>())
            {
                WindowCenter.Instance.Close<MyFocusWin>();
            }
        }
    }
System/Auction/AuctionInquiryModel.cs
@@ -57,6 +57,8 @@
        public Dictionary<string, AuctionItemClass> BiddingItemInfoDic = new Dictionary<string, AuctionItemClass>();//拍卖行玩家竞价中的物品信息 
        public Dictionary<string, AuctionItemClass> AttentionAuctionItemDic = new Dictionary<string, AuctionItemClass>();//拍卖行关注中的拍品详情
        public Dictionary<int, int> AttentionAuctionItemIDdic = new Dictionary<int, int>();//关注的物品ID
        AuctionHelpModel auctionHelpModel { get { return ModelCenter.Instance.GetModel<AuctionHelpModel>(); } }
@@ -253,6 +255,37 @@
            }
            return list;
        }
        public event Action AttentionAuctionItemUdate;//拍卖行关注中的拍品信息变更
        public void AttentionAuctionItemInfo(HB506_tagGCAttentionAuctionItemInfo info)//拍卖行关注中的拍品信息
        {
            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(需要主动查询)
        {
System/Auction/MyFocusCell.cs
New file
@@ -0,0 +1,190 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, March 05, 2019
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
namespace Snxxz.UI {
    public class MyFocusCell: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 MyFocusItem;
        public void GetMyFocusGUID(string GUIID)
        {
            if (!model.AttentionAuctionItemDic.ContainsKey(GUIID) && !model.FamilyAuctionItemDic.ContainsKey(GUIID))
            {
                DebugEx.LogError("未找到相应的拍品数据");
                return;
            }
            m_NeedImage.SetActive(false);
            m_ParticipateImage.SetActive(false);
            m_BiddingTextObj.SetActive(false);
            m_HighestPriceImage.SetActive(false);
            m_EquipmentScoreObj.SetActive(false);
            AuctionItemClass myAuction = new AuctionItemClass();
            int type = 0;
            if (model.AttentionAuctionItemDic.ContainsKey(GUIID))
            {
                type = 0;
                myAuction = model.PlayerAuctionItemInfoDic[GUIID];
            }
            if (model.FamilyAuctionItemDic.ContainsKey(GUIID))
            {
                type = 1;
                myAuction = model.FamilyAuctionItemDic[GUIID];
            }
            MyFocusItem = myAuction;
            var playerId = PlayerDatas.Instance.baseData.PlayerID;
            var auctionItem = AuctionItemConfig.Get(myAuction.ItemID);
            var itemConfig = ItemConfig.Get(myAuction.ItemID);
            if (itemConfig == null)
            {
                DebugEx.LogError("物品表没有找到该物品,物品ID为" + myAuction.ItemID);
                return;
            }
            if (auctionItem == null)
            {
                DebugEx.LogError("拍卖物品表没有找到该物品,物品ID为" + myAuction.ItemID);
                return;
            }
            AuctionItem = auctionItem;
            if (model.AttentionAuctionItemIDdic.ContainsKey(myAuction.ItemID))//是否关注
            {
                m_NeedImage.SetActive(true);
            }
            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(myAuction.ItemID, true,
               (ulong)myAuction.ItemCount, itemConfig.BindType);
            m_ItemCell.Init(cellModel);
            m_ItemName.text = itemConfig.ItemName;
            if (itemConfig.EquipPlace != 0)
            {
                m_EquipmentScoreObj.SetActive(true);
                // m_Score.text
            }
            int needJade = 0;
            if (myAuction.BidderPrice == 0)
            {
                needJade = auctionItem.BasePrice;
            }
            else
            {
                needJade = myAuction.BidderPrice + auctionItem.BiddingAdd;
            }
            m_JadeNumber.text = (needJade).ToString();
            m_JadeNumber1.text = auctionItem.BuyoutPrice.ToString();
            m_PriceButton.SetListener(() => //一口价
            {
                int jade = (int)PlayerDatas.Instance.baseData.diamond;
                string str = "是否花费" + auctionItem.BuyoutPrice + "立即拍下商品?";
                ConfirmCancel.ShowPopConfirm(Language.Get("L1003"), str, (bool isOk) => {
                    if (jade >= auctionItem.BuyoutPrice)
                    {
                        AuctionInquiry.Instance.SendSellAuctionItem(GUIID, auctionItem.BuyoutPrice);
                    }
                    else
                    {
                        WindowCenter.Instance.Open<RechargeTipWin>();
                    }
                });
            });
            m_JadeNumber2.text = (needJade).ToString();
            m_BiddingButton.SetListener(() => //竞价
            {
                int jade = (int)PlayerDatas.Instance.baseData.diamond;
                string str = "是否花费" + needJade + "参与竞价?";
                ConfirmCancel.ShowPopConfirm(Language.Get("L1003"), str, (bool isOk) => {
                    if (jade >= needJade)
                    {
                        AuctionInquiry.Instance.SendSellAuctionItem(GUIID, needJade);
                    }
                    else
                    {
                        WindowCenter.Instance.Open<RechargeTipWin>();
                    }
                });
            });
        }
        private void LateUpdate()
        {
            if (AuctionItem != null && MyFocusItem != null)
            {
                var timeNow = TimeUtility.ServerNow;
                TimeSpan timeSpan = timeNow - MyFocusItem.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/MyFocusCell.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: a55422d4cf1e9dd4cbe928a895f933f4
timeCreated: 1551779106
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Auction/MyFocusWin.cs
New file
@@ -0,0 +1,190 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, March 05, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    //我的关注物品详情
    public class MyFocusWin : Window
    {
        [SerializeField] ScrollerController m_ScrollerController;
        AuctionInquiryModel model { get { return ModelCenter.Instance.GetModel<AuctionInquiryModel>(); } }
        AuctionHelpModel auctionHelpModel { get { return ModelCenter.Instance.GetModel<AuctionHelpModel>(); } }
        List<AuctionItemClass> MyFocusList = new List<AuctionItemClass>();
        #region Built-in
        protected override void BindController()
        {
            m_ScrollerController.OnRefreshCell += OnRefreshGridCell;
            m_ScrollerController.lockType = EnhanceLockType.KeepVertical;
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
            GetMyFocusList();
            ListSotr();
            OnCreateGridLineCell(m_ScrollerController);
        }
        protected override void OnAfterOpen()
        {
            model.AttentionAuctionItemUdate += Reset;
            model.ClearAuctionUpdate += Reset;
            model.RefreshAuctionItemUpdate -=Update;//刷新
            model.FamilyAuctionItemUpdate += Reset;
        }
        protected override void OnPreClose()
        {
            model.AttentionAuctionItemUdate -= Reset;
            model.ClearAuctionUpdate -= Reset;
            model.RefreshAuctionItemUpdate -=Update;//刷新
            model.FamilyAuctionItemUpdate -= Reset;
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private void Reset()
        {
            GetMyFocusList();
            ListSotr();
            OnCreateGridLineCell(m_ScrollerController);
        }
        private void Update()
        {
            m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
        }
        private void OnCreateGridLineCell(ScrollerController gridCtrl)
        {
            gridCtrl.Refresh();
            for (int i = 0; i < MyFocusList.Count; i++)
            {
                gridCtrl.AddCell(ScrollerDataType.Header, i);
            }
            gridCtrl.Restart();
        }
        private void OnRefreshGridCell(ScrollerDataType type, CellView cell)
        {
            int index = cell.index;
            var ItemGUID = MyFocusList[index].ItemGUID;
            MyFocusCell myAuctionCell = cell.GetComponent<MyFocusCell>();
            myAuctionCell.GetMyFocusGUID(ItemGUID);
        }
        private void GetMyFocusList()
        {
            MyFocusList.Clear();
            foreach (var value in model.AttentionAuctionItemDic.Values)
            {
                MyFocusList.Add(value);
            }
            int playerID = (int)PlayerDatas.Instance.baseData.PlayerID;
            foreach (var value in model.FamilyAuctionItemDic.Values)
            {
                if (model.AttentionAuctionItemIDdic.ContainsKey(value.ItemID))
                {
                    MyFocusList.Add(value);
                }
            }
        }
        private void ListSotr()
        {
            MyFocusList.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);
            }
            int havex3 = TimeSort(x);
            int havey3 = TimeSort(y);
            if (havex3.CompareTo(havey3) != 0)//时间排序
            {
                return -havex3.CompareTo(havey3);
            }
            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;
        }
        private int TimeSort(AuctionItemClass auctionItemClass)
        {
            int scends = 0;
            var auctionItem = AuctionItemConfig.Get(auctionItemClass.ItemID);
            if (auctionItem == null)
            {
                return 0;
            }
            var timeNow = TimeUtility.ServerNow;
            TimeSpan timeSpan = timeNow - auctionItemClass.Time;
            scends = (int)timeSpan.TotalSeconds;
            return scends;
        }
    }
}
System/Auction/MyFocusWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 41c604d9f27d5954eadc6a3ad9bd02a6
timeCreated: 1551777906
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant: