Beispiel #1
0
        /// <summary>
        /// 获取经理显示Buff
        /// </summary>
        /// <param name="managerId">经理Id</param>
        /// <returns></returns>
        public RootResponse <DTOManagerBuffView> GetManagerShowBuffs(Guid managerId)
        {
            var list = GetManagerShowBuffList(managerId);

            if (list == null)
            {
                return(ResponseHelper.CreateRoot <DTOManagerBuffView>(null));
            }

            var data = new DTOManagerBuffView();

            data.BuffList = list;
            return(ResponseHelper.CreateRoot <DTOManagerBuffView>(data));
        }
Beispiel #2
0
        public static RootResponse <DTOSkillSetView> GetSkillSetInfo(Guid mid)
        {
            var bag          = SkillCardConvert.GetSkillBagWrap(mid);
            int managerLevel = (int)FrameConvert.GetWorthValue(mid, EnumWorthType.ManagerLevel);
            var data         = new DTOSkillSetView();

            data.MaxSetCells = GetMaxSkillCells(managerLevel);
            var form = MatchDataHelper.GetSolution(mid);

            if (null != form)
            {
                data.FormId = form.FormationId;
                data.PidStr = form.PlayerString.TrimEnd();
            }
            data.SetList     = bag.GetShowSet();
            data.CntSetCells = bag.CntSetNum;
            return(ResponseHelper.CreateRoot <DTOSkillSetView>(data));
        }
Beispiel #3
0
        static RootResponse <DTOAssetInfo> SaveReward(NbManagerEntity manager, string orderId, int coin, int point, int assetType, int tranType, string tranMap)
        {
            var msgCode    = MessageCode.Success;
            int totalCoin  = -1;
            int totalPoint = -1;

            using (var tranMgr = new TransactionManager(Games.NBall.Dal.ConnectionFactory.Instance.GetConnectionString(EnumDbType.Main)))
            {
                tranMgr.BeginTransaction();
                do
                {
                    if (coin > 0)
                    {
                        msgCode = ManagerCore.Instance.AddCoinV2(out totalCoin, manager, coin, (int)EnumCoinChargeSourceType.MatchReward, orderId, tranMgr.TransactionObject);
                        if (msgCode != MessageCode.Success)
                        {
                            break;
                        }
                    }
                    if (point > 0)
                    {
                        msgCode = PayCore.Instance.AddBonusV2(out totalPoint, manager.Account, point, EnumChargeSourceType.MatchReward, orderId, tranMgr.TransactionObject);
                        if (msgCode != MessageCode.Success)
                        {
                            break;
                        }
                    }
                    int errorCode = 0;
                    NbManagerMgr.AssetRecord(false, manager.Idx, assetType, tranType, tranMap, ref errorCode, tranMgr.TransactionObject);
                    msgCode = (MessageCode)errorCode;
                }while (false);
                if (msgCode != MessageCode.Success)
                {
                    tranMgr.Rollback();
                    return(ResponseHelper.CreateRoot <DTOAssetInfo>(msgCode));
                }
                tranMgr.Commit();
            }
            ManagerCore.Instance.DeleteCache(manager.Idx);
            var data = new DTOAssetInfo(totalCoin, totalPoint);

            return(ResponseHelper.CreateRoot <DTOAssetInfo>(data));
        }
Beispiel #4
0
        public static RootResponse <DTOAssetInfo> CommitReward(Guid managerId, int matchType, Guid matchId, string mask, string sig)
        {
            if (!ShareUtil.IsAppRXYC)
            {
                return(ResponseHelper.CreateRoot <DTOAssetInfo>(MessageCode.MatchRewardLimitApp));
            }
            if (!MatchThread.CheckRewardMatchType(matchType))
            {
                return(ResponseHelper.CreateRoot <DTOAssetInfo>(MessageCode.MatchRewardLimitType));
            }
            int coin  = 0;
            int point = 0;

            ParseMask(out coin, out point, mask);
            if (coin < 0 || coin > MATCHRewardMaxCoin)
            {
                return(ResponseHelper.CreateRoot <DTOAssetInfo>(MessageCode.MatchRewardOverCoin));
            }
            if (point < 0 || point > MATCHRewardMaxPoint)
            {
                return(ResponseHelper.CreateRoot <DTOAssetInfo>(MessageCode.MatchRewardOverPoint));
            }
            string key   = string.Concat(managerId, ".", matchType).ToLower();
            var    state = MemcachedFactory.MatchRewardClient.Get <DTOMatchRewardState>(key);

            if (null == state || state.MatchId != matchId)
            {
                return(ResponseHelper.CreateRoot <DTOAssetInfo>(MessageCode.MatchRewardMissMatch));
            }
            if (state.SetTimes >= MATCHRewardMaxSetTimes)
            {
                MemcachedFactory.MatchRewardClient.Delete(key);
                return(ResponseHelper.CreateRoot <DTOAssetInfo>(MessageCode.MatchRewardOverSet));
            }
            RootResponse <DTOAssetInfo> rst = null;

            if (coin > 0 || point > 0)
            {
                var manager = ManagerCore.Instance.GetManager(managerId);
                if (null == manager)
                {
                    return(ResponseHelper.CreateRoot <DTOAssetInfo>(MessageCode.MissManager));
                }
                string orderId   = string.Concat(matchType, ".", matchId, ".", state.SetTimes);
                string tranMap   = string.Format("{0}:C{1}P{2}..", orderId, coin, point);
                int    assetType = 0;
                int    tranType  = 0;
                rst = SaveReward(manager, orderId, coin, point, assetType, tranType, tranMap);
            }
            if (state.SetTimes == MATCHRewardMaxSetTimes - 1)
            {
                MemcachedFactory.MatchRewardClient.Delete(key);
            }
            else
            {
                state.SetTimes++;
                state.Coin  = coin;
                state.Point = point;
                MemcachedFactory.MatchRewardClient.Set(key, state);
            }
            if (null == rst)
            {
                rst = ResponseHelper.CreateRoot <DTOAssetInfo>(new DTOAssetInfo());
            }
            return(rst);
        }
Beispiel #5
0
        /// <summary>
        /// 技能升级
        /// </summary>
        /// <param name="mid"></param>
        /// <param name="cid"></param>
        /// <returns></returns>
        public static RootResponse <DTOSkillSetView> UseSkillExp(Guid mid, string cid)
        {
            if (string.IsNullOrEmpty(cid) || !FrameUtil.CheckChar22Id(cid))
            {
                return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillInvalidCid));
            }

            //var package = ItemCore.Instance.GetPackage(mid, EnumTransactionType.MixSkillExpCard);
            //if (package == null)
            //    return ResponseHelper.CreateRoot<DTOSkillSetView>(MessageCode.NbParameterError);

            //var item = package.GetByItemCode(310110);
            //if (item == null)
            //    return ResponseHelper.CreateRoot<DTOSkillSetView>(MessageCode.SkillExpNotFind);

            var bag     = SkillCardConvert.GetSkillBagWrap(mid);
            var onlib   = bag.SetList;
            var dstItem = onlib.Values.FirstOrDefault(i => i.ItemId == cid);

            if (null == dstItem)
            {
                return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillMissCard));
            }
            string rawCode = dstItem.ItemCode;

            if (dstItem.Cfg.SkillLevel <= 0)
            {
                dstItem.Cfg.SkillLevel = 1;
            }
            if (dstItem.Cfg.SkillLevel >= SkillCardConfig.SKILLCardMaxCardLevel)
            {
                return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillMixOverCardLevel));
            }
            var config = SkillCardConfig.GetSkillUpgrade(dstItem.Cfg.SkillLevel + 1, dstItem.Cfg.SkillClass);

            if (config == null)
            {
                return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillMissConfig));
            }

            var manager = ManagerCore.Instance.GetManager(mid);

            if (manager == null)
            {
                return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.AdMissManager));
            }
            if (manager.Coin < config.Coin)
            {
                return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.LackofCoin));
            }
            int newLevel = 1;

            if (InnerDealMix(dstItem, out newLevel))
            {
                string setSkills = string.Empty;
                if (dstItem.ItemCode != rawCode)//升级了
                {
                    setSkills = bag.SetSkillsTextFromLib();
                    MemcachedFactory.SolutionClient.Delete(mid);
                }
                var errCode = InnerSaveMixNew(manager, mid, bag, config.Coin, setSkills);
                if (errCode == MessageCode.Success)
                {
                    var response = GetSkillSetInfo(mid);
                    response.Data.Coin = manager.Coin;
                    return(response);
                }
            }

            return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.FailUpdate));
        }
Beispiel #6
0
        public static RootResponse <DTOSkillSetView> SkillSet(Guid mid, string cids, bool hasTask)
        {
            if (string.IsNullOrEmpty(cids) || cids.Length >= 400)
            {
                return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillSetInvalidArgs));
            }
            string[] skills = cids.Split(',');
            if (skills.Length != SkillCardConfig.SKILLCardMAXSkillCellSize)
            {
                return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillSetInvalidArgs));
            }
            int managerLevel = (int)FrameConvert.GetWorthValue(mid, EnumWorthType.ManagerLevel);
            int maxCells     = GetMaxSkillCells(managerLevel);
            var bag          = SkillCardConvert.GetSkillBagWrap(mid);
            var onlib        = new Dictionary <string, DTOSkillSetItem>(bag.SetList.Count);

            foreach (var item in bag.SetList.Values)
            {
                item.Index         = 0;
                onlib[item.ItemId] = item;
            }
            int             cntCells = 0;
            DTOSkillSetItem setItem  = null;
            var             dicChk   = new Dictionary <string, byte>(skills.Length);

            for (int i = 0; i < skills.Length; ++i)
            {
                if (skills[i] == string.Empty)
                {
                    continue;
                }
                if (!onlib.TryGetValue(skills[i], out setItem))
                {
                    return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillMissCard));
                }
                if (!SkillCardConvert.FillSkillCardConfig(setItem, false))
                {
                    return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillMissConfig));
                }
                if (dicChk.ContainsKey(setItem.Cfg.SkillRoot))
                {
                    return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillSetLimitRepeat));
                }
                ++cntCells;
                setItem.Index = i + 1;
                dicChk[setItem.Cfg.SkillRoot] = 0;
                skills[i] = setItem.ItemCode;
            }
            if (cntCells > maxCells)
            {
                return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillSetLackofCells));
            }
            string setSkills = string.Join(",", skills);
            string setMap    = bag.SetMap;

            MemcachedFactory.SolutionClient.Delete(mid);
            int errorCode = 0;

            NbManagerskillbagMgr.Set(mid, setSkills, null, setMap, bag.RawBag.RowVersion, ref errorCode);
            if (errorCode != (int)MessageCode.Success)
            {
                return(ResponseHelper.CreateRoot <DTOSkillSetView>(errorCode));
            }
            var data = new DTOSkillSetView();

            data.MaxSetCells = maxCells;
            data.CntSetCells = cntCells;
            data.SetList     = bag.GetShowSet();
            //if (hasTask)
            //{
            data.PopMsg = TaskHandler.Instance.SkillSet(mid);
            //}
            //data.CardList = bag.GetShowBag();
            return(ResponseHelper.CreateRoot <DTOSkillSetView>(data));
        }