Пример #1
0
        /// <summary>
        /// 更新技能
        /// </summary>
        /// <param name="manager"></param>
        /// <param name="transaction"></param>
        /// <returns></returns>
        public static MessageCode SetSkillMapByManagerLevel(NbManagerEntity manager, DbTransaction transaction)
        {
            var bag = SkillCardConvert.GetSkillBagWrap(manager.Idx);

            var skillList     = SkillCardCache.Instance().GetSkillCardByManagerLevel(manager.Level);
            var unLearnedList = new List <DTOSkillSetItem>();

            foreach (var entity in skillList)
            {
                if (!bag.SetList.ContainsKey(entity.SkillRoot))
                {
                    DTOSkillSetItem onItem = SkillCardConvert.GetNewSkillCardOn(entity);
                    unLearnedList.Add(onItem);
                }
            }

            if (unLearnedList.Count > 0)
            {
                string onItemMap = FlatTextFormatter.ListToText(unLearnedList, SkillBagWrap.SPLITSect, SkillBagWrap.SPLITUnit);
                int    errorCode = 0;
                NbManagerskillbagMgr.Add(manager.Idx, onItemMap, bag.RawBag.RowVersion, ref errorCode, transaction);
                if (errorCode != (int)MessageCode.Success)
                {
                    return((MessageCode)errorCode);
                }
            }
            return(MessageCode.Success);
        }
Пример #2
0
        static bool InnerDealMix(DTOSkillCardItem dst, out int newLevel)
        {
            newLevel = 0;
            if (null == dst || !SkillCardConvert.FillSkillCardConfig(dst, true))
            {
                return(false);
            }
            newLevel = dst.Cfg.SkillLevel + 1;
            //int addExp = dst.Exp + 10;
            //if (!SkillCardCache.Instance().TryCheckSkillLevel(dst.Cfg.SkillClass, addExp, out newLevel))
            //    return false;
            //if (dst.Cfg.SkillLevel == newLevel)
            //{
            //    dst.Exp = addExp;
            //    return true;
            //}
            string newCode = string.Empty;

            if (!SkillCardCache.Instance().TryGetSkillCode(dst.Cfg.SkillRoot, newLevel, out newCode))
            {
                return(false);
            }
            // dst.Exp = addExp;
            dst.ItemCode = newCode;
            SkillCardConvert.FillSkillCardConfig(dst, true);
            return(true);
        }
Пример #3
0
 List <DTOSkillCardItem> GetShowList(ICollection <DTOSkillCardItem> rawList)
 {
     foreach (var item in rawList)
     {
         SkillCardConvert.FillSkillCardConfig(item, false);
     }
     return(rawList.OrderByDescending(i => i.SkillClass).ThenByDescending(i => i.ItemCode).ThenByDescending(i => i.Exp).ToList());
 }
Пример #4
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));
        }
Пример #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));
        }
Пример #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));
        }