Esempio n. 1
0
        /// <summary>
        /// 某个玩家(不包括自己)有物品栏有更新的时候存储他的物品栏数据
        /// </summary>
        /// <param name="_nPtrParam"></param>
        /// <param name="_nPtrLen"></param>
        public void UpdatePlayersGoods(IntPtr _nPtrParam, int _nPtrLen)
        {
            IntPtrVaArgParseHelper        helper    = new IntPtrVaArgParseHelper(_nPtrParam, _nPtrLen);
            cmd_war_persongoodsinfo_count dataCount = helper.get <cmd_war_persongoodsinfo_count>();
            uint pdbid = dataCount.idActor;

            if (dataCount.nCount == 0 || pdbid == 0)
            {
                return;
            }

            if (!m_dicPlayersGoodsTable.ContainsKey(pdbid))
            {
                m_dicPlayersGoodsTable.Add(pdbid, new List <cmd_war_persongoodsinfo>());
            }

            m_dicPlayersGoodsTable[pdbid].Clear();

            for (int i = 0; i < dataCount.nCount; ++i)
            {
                cmd_war_persongoodsinfo data = helper.get <cmd_war_persongoodsinfo>();
                m_dicPlayersGoodsTable[pdbid].Add(data);
            }

            if (LogicDataCenter.recordTableDataManager.isOneRequest == true)
            {
                LogicDataCenter.recordTableDataManager.OnTabClick();
            }

            //通知战绩表更新数据
            if (LogicDataCenter.recordTableDataManager.IsWarRecordTableVisible)
            {
                UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_RECORDTABLE_FIGHTING_UPDATERECORDINFO, null);
            }
        }
Esempio n. 2
0
    /// <summary>
    /// 接受逻辑层下发的当前购买物品信息
    /// </summary>
    /// <param name="_data">当前购买物品信息</param>
    public void WarGoodsStoreBuyGoods(IntPtr ptrParam, int nPtrLen)
    {
        if (!Value.IsValueValid(vStoreWindow))
        {
            return;
        }
        ResetAssociatedWithPurchasedGoodsSlot();


        IntPtrVaArgParseHelper helper = new IntPtrVaArgParseHelper(ptrParam, nPtrLen);

        cmd_war_persongoodsinfo_count obj = helper.get <cmd_war_persongoodsinfo_count>();

        for (int i = 0; i < obj.nCount; ++i)
        {
            cmd_war_persongoodsinfo data = helper.get <cmd_war_persongoodsinfo>();

            SetPurchasedGoodsSlot(data);
            //Value ASGoodsValue;
            //GameMobaSchemesManager.Instance.GetASMobaGoods(data.nGoodID, out ASGoodsValue, this);

            //if (!Value.IsValueValid(ASGoodsValue) || vStoreWindow.Invoke("SetPurchasedGoodsSlot", data.nSlotIndex, ASGoodsValue, data.nCanUseTimes,1) == null)
            //{
            //    Trace.LogError("error call SetPurchasedGoodsSlot failed");
            //    return;
            //}



            curPurchasedGoodsList.Add(data);
        }

        //等逻辑层发完整个已购买物品列表,再做判断
        //判断哪些物品的价格需要变更的
        {
            //这里没用FindWhichGoodsCanEffect()方法,因为该方法好像会重复迭代很多次
            FindWhichGoodsCanEffect();// IteratorFindCanComposeGoods(curPurchasedGoodsList[0].nGoodID, ref allCanComposeGoodsMap);

            //curPurchasedGoodsList = null;
        }
    }
Esempio n. 3
0
        /// <summary>
        /// 更新本地玩家物品信息
        /// </summary>
        /// <param name="_nPtrParam"></param>
        /// <param name="_nPtrLen"></param>
        public void UpdateMainPlayerGoods(IntPtr _nPtrParam, int _nPtrLen)
        {
            IntPtrVaArgParseHelper        helper    = new IntPtrVaArgParseHelper(_nPtrParam, _nPtrLen);
            cmd_war_persongoodsinfo_count dataCount = helper.get <cmd_war_persongoodsinfo_count>();

            uint pdbid  = dataCount.idActor;
            int  nCount = dataCount.nCount;

            if (nCount == 0 || pdbid == 0)
            {
                Debug.LogWarning("UpdateMainPlayerGoods:dataCount.nCount == 0 || pdbid == 0");
                return;
            }

            // 缓存本地玩家的PDBID,取EntityView中的话,有可能还没同步下来
            m_nMainHeroPDBID = pdbid;

            if (!m_dicPlayersGoodsTable.ContainsKey(MainHeroPDBID))
            {
                m_dicPlayersGoodsTable.Add(MainHeroPDBID, new List <cmd_war_persongoodsinfo>());
            }

            //小于最大物品槽数量即是更新的是使用物品
            if (nCount < (int)SLOT_DEFINE.D_MAX_GOODS_SLOT_COUNT)
            {
                UpdateMainPlayerUseGoods(helper, dataCount.nCount);
            }
            else
            {
                UpdataMainPlayerAllGoods(helper, dataCount.nCount);
            }

            FindWhichGoodsCanEffect();


            UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_WAR_GOODSSTORE_UPDATEMAINPLAYERGOODS, null);
        }