Exemplo n.º 1
0
        public static void GetWanmotaSweepReward(GameClient client, int nFubenID)
        {
            FuBenMapItem fuBenMapItem = FuBenManager.FindMapCodeByFuBenID(nFubenID, nFubenID);

            if (null != fuBenMapItem)
            {
                List <GoodsData> goodNormal = new List <GoodsData>();
                List <int>       goodsID    = new List <int>();
                WanMotaCopySceneManager.GetFubenItemReward(client, fuBenMapItem, false, goodNormal, goodsID);
                if (null == client.ClientData.LayerRewardData)
                {
                    client.ClientData.LayerRewardData = new LayerRewardData();
                }
                if (WanMotaCopySceneManager.IsWanMoTaMapCode(nFubenID))
                {
                    List <SingleLayerRewardData> listRewardData = null;
                    SingleLayerRewardData        layerReward    = WanMotaCopySceneManager.AddSingleSweepReward(client, goodNormal, nFubenID - WanMotaCopySceneManager.nWanMoTaFirstFuBenOrder + 1, fuBenMapItem.Experience, fuBenMapItem.Money1, fuBenMapItem.nXingHunAward, out listRewardData);
                    SweepWanMotaManager.UpdataSweepInfo(client, listRewardData);
                    lock (client.ClientData.LayerRewardData)
                    {
                        client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Add(layerReward);
                    }
                }
            }
        }
Exemplo n.º 2
0
 private void Sweeping(object source, ElapsedEventArgs e)
 {
     lock (this.sweepClient)
     {
         WanMotaCopySceneManager.GetWanmotaSweepReward(this.sweepClient, WanMotaCopySceneManager.nWanMoTaFirstFuBenOrder + this.nSweepingOrder - 1);
         this.nSweepingOrder++;
         if (this.nSweepingOrder > this.nSweepingMaxOrder)
         {
             this.StopSweeping();
             List <SingleLayerRewardData> listRewardData         = SweepWanMotaManager.SummarySweepRewardInfo(this.sweepClient);
             List <SingleLayerRewardData> WanMoTaLayerRewardList = this.sweepClient.ClientData.LayerRewardData.WanMoTaLayerRewardList;
             this.sweepClient.ClientData.LayerRewardData.WanMoTaLayerRewardList = listRewardData;
             if (-1 == WanMoTaDBCommandManager.UpdateSweepAwardDBCommand(this.sweepClient, 0))
             {
                 LogManager.WriteLog(LogTypes.Error, "扫荡奖励汇总后,写到数据库失败", null, true);
                 this.sweepClient.ClientData.LayerRewardData.WanMoTaLayerRewardList = WanMoTaLayerRewardList;
             }
             else
             {
                 this.sweepClient.ClientData.WanMoTaProp.nSweepLayer = 0;
                 SweepWanMotaManager.UpdataSweepInfo(this.sweepClient, listRewardData);
             }
         }
         else
         {
             this.sweepClient.ClientData.WanMoTaProp.nSweepLayer = this.nSweepingOrder;
             WanMoTaDBCommandManager.UpdateSweepAwardDBCommand(this.sweepClient, this.sweepClient.ClientData.WanMoTaProp.nSweepLayer);
         }
     }
 }
        /// <summary>
        /// 获取万魔塔信息并缓存到本地
        /// </summary>
        /// <param name="mapCode"></param>
        /// <returns></returns>
        public static WanMotaInfo GetWanMoTaDetail(GameClient client, bool bIsLogin)
        {
            WanMotaInfo dataWanMoTa = null;

            // 在扫荡状态,不向数据库请求万魔塔数据
            if (1 == WanmotaIsSweeping(client))
            {
                //获取玩家竞技场数据
                dataWanMoTa = Global.sendToDB <WanMotaInfo>((int)TCPGameServerCmds.CMD_DB_GET_WANMOTA_DETAIL, DataHelper.ObjectToBytes <int>(client.ClientData.RoleID));

                client.ClientData.WanMoTaProp = dataWanMoTa;
            }
            else
            {
                dataWanMoTa = client.ClientData.WanMoTaProp;
            }

            if (null != dataWanMoTa)
            {
                if (bIsLogin)
                {
                    if (null != client.ClientData.WanMoTaProp)
                    {
                        byte[] bytes = Convert.FromBase64String(client.ClientData.WanMoTaProp.strSweepReward);
                        client.ClientData.LayerRewardData = DataHelper.BytesToObject <LayerRewardData>(bytes, 0, bytes.Length);
                    }
                }
                else
                {
                    // 选10条奖励信息发送到客户端
                    if (null != client.ClientData.LayerRewardData)
                    {
                        lock (client.ClientData.LayerRewardData)
                        {
                            if (client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count > 0)
                            {
                                int nBeginIndex = 0;
                                if (client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count > 10)
                                {
                                    nBeginIndex = client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count - 10;
                                }

                                List <SingleLayerRewardData> listRewardData = new List <SingleLayerRewardData>();
                                for (int i = nBeginIndex; i < client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count; i++)
                                {
                                    listRewardData.Add(client.ClientData.LayerRewardData.WanMoTaLayerRewardList[i]);
                                }

                                SweepWanMotaManager.UpdataSweepInfo(client, listRewardData);
                            }
                        }
                    }
                }
            }

            return(dataWanMoTa);
        }
Exemplo n.º 4
0
        public static WanMotaInfo GetWanMoTaDetail(GameClient client, bool bIsLogin)
        {
            WanMotaInfo dataWanMoTa = null;

            if (1 == WanMotaCopySceneManager.WanmotaIsSweeping(client))
            {
                dataWanMoTa = Global.sendToDB <WanMotaInfo, byte[]>(10159, DataHelper.ObjectToBytes <int>(client.ClientData.RoleID), client.ServerId);
                client.ClientData.WanMoTaProp = dataWanMoTa;
            }
            else
            {
                dataWanMoTa = client.ClientData.WanMoTaProp;
            }
            if (null != dataWanMoTa)
            {
                if (bIsLogin)
                {
                    if (null != client.ClientData.WanMoTaProp)
                    {
                        byte[] bytes = Convert.FromBase64String(client.ClientData.WanMoTaProp.strSweepReward);
                        client.ClientData.LayerRewardData = DataHelper.BytesToObject <LayerRewardData>(bytes, 0, bytes.Length);
                    }
                }
                else if (null != client.ClientData.LayerRewardData)
                {
                    lock (client.ClientData.LayerRewardData)
                    {
                        if (client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count > 0)
                        {
                            int nBeginIndex = 0;
                            if (client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count > 10)
                            {
                                nBeginIndex = client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count - 10;
                            }
                            List <SingleLayerRewardData> listRewardData = new List <SingleLayerRewardData>();
                            for (int i = nBeginIndex; i < client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count; i++)
                            {
                                listRewardData.Add(client.ClientData.LayerRewardData.WanMoTaLayerRewardList[i]);
                            }
                            SweepWanMotaManager.UpdataSweepInfo(client, listRewardData);
                        }
                    }
                }
            }
            return(dataWanMoTa);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 每2秒扫荡一层万魔塔
        /// </summary>
        private void Sweeping(object source, ElapsedEventArgs e)
        {
            lock (sweepClient)
            {
                WanMotaCopySceneManager.GetWanmotaSweepReward(sweepClient, WanMotaCopySceneManager.nWanMoTaFirstFuBenOrder + nSweepingOrder - 1);
                nSweepingOrder++;

                if (nSweepingOrder > nSweepingMaxOrder)
                {
                    // 扫荡完成
                    StopSweeping();

                    // 将奖励汇总
                    List <SingleLayerRewardData> listRewardData         = SweepWanMotaManager.SummarySweepRewardInfo(sweepClient);
                    List <SingleLayerRewardData> WanMoTaLayerRewardList = sweepClient.ClientData.LayerRewardData.WanMoTaLayerRewardList;

                    // 汇总后用汇总奖励代替各层奖励
                    sweepClient.ClientData.LayerRewardData.WanMoTaLayerRewardList = listRewardData;

                    // 如果更新失败,还原
                    if (-1 == WanMoTaDBCommandManager.UpdateSweepAwardDBCommand(sweepClient, 0))
                    {
                        // 扫荡奖励汇总后,写到数据库失败
                        LogManager.WriteLog(LogTypes.Error, "扫荡奖励汇总后,写到数据库失败");

                        sweepClient.ClientData.LayerRewardData.WanMoTaLayerRewardList = WanMoTaLayerRewardList;
                    }
                    // 成功,发送到客户端
                    else
                    {
                        sweepClient.ClientData.WanMoTaProp.nSweepLayer = 0;
                        SweepWanMotaManager.UpdataSweepInfo(sweepClient, listRewardData);
                        WanMoTaLayerRewardList = null;
                    }
                }
                else
                {
                    sweepClient.ClientData.WanMoTaProp.nSweepLayer = nSweepingOrder;
                    WanMoTaDBCommandManager.UpdateSweepAwardDBCommand(sweepClient, sweepClient.ClientData.WanMoTaProp.nSweepLayer);
                }
            }
        }
Exemplo n.º 6
0
        public static List <SingleLayerRewardData> SummarySweepRewardInfo(GameClient client)
        {
            List <SingleLayerRewardData> listRewardData = null;
            List <SingleLayerRewardData> result;

            if (client.ClientData.LayerRewardData == null || client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count < 1)
            {
                result = listRewardData;
            }
            else
            {
                int nExp    = 0;
                int nMoney  = 0;
                int nXinHun = 0;
                List <GoodsData> rewardList = new List <GoodsData>();
                lock (client.ClientData.LayerRewardData)
                {
                    for (int i = 0; i < client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Count; i++)
                    {
                        nExp    += client.ClientData.LayerRewardData.WanMoTaLayerRewardList[i].nExp;
                        nMoney  += client.ClientData.LayerRewardData.WanMoTaLayerRewardList[i].nMoney;
                        nXinHun += client.ClientData.LayerRewardData.WanMoTaLayerRewardList[i].nXinHun;
                        if (null != client.ClientData.LayerRewardData.WanMoTaLayerRewardList[i].sweepAwardGoodsList)
                        {
                            for (int j = 0; j < client.ClientData.LayerRewardData.WanMoTaLayerRewardList[i].sweepAwardGoodsList.Count; j++)
                            {
                                SweepWanMotaManager.CombineGoodList(rewardList, client.ClientData.LayerRewardData.WanMoTaLayerRewardList[i].sweepAwardGoodsList[j]);
                            }
                        }
                    }
                    SingleLayerRewardData layerReward = WanMotaCopySceneManager.AddSingleSweepReward(client, rewardList, 0, nExp, nMoney, nXinHun, out listRewardData);
                }
                result = listRewardData;
            }
            return(result);
        }