예제 #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 MessageCode InnerSaveMixNew(NbManagerEntity manager, Guid mid, SkillBagWrap bag, int coin, string setSkills = null)
        {
            int errorCode = (int)MessageCode.FailUpdate;

            using (var tranMgr = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault()))
            {
                tranMgr.BeginTransaction();
                do
                {
                    var mess = ManagerCore.Instance.CostCoin(manager, coin, EnumCoinConsumeSourceType.SkillUpgrade,
                                                             ShareUtil.GenerateComb().ToString(), tranMgr.TransactionObject);
                    if (mess != MessageCode.Success)
                    {
                        break;
                    }
                    NbManagerskillbagMgr.MixUpTran(false, mid, setSkills, bag.SetMap, "", bag.RawBag.RowVersion, ref errorCode);
                }while (false);
                if (errorCode == (int)MessageCode.Success)
                {
                    tranMgr.Commit();
                }
                else
                {
                    tranMgr.Rollback();
                }
            }
            return((MessageCode)errorCode);
        }
예제 #3
0
        static MessageCode InnerSaveMix(Guid mid, ItemPackageFrame pack, SkillBagWrap bag, ItemInfoEntity mixItems, string setSkills = null)
        {
            string itemMap   = mixItems.ItemId.ToString();
            int    errorCode = (int)MessageCode.FailUpdate;

            using (var tranMgr = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault()))
            {
                tranMgr.BeginTransaction();
                do
                {
                    if (null != pack && !pack.Save(tranMgr.TransactionObject))
                    {
                        break;
                    }
                    NbManagerskillbagMgr.MixUpTran(false, mid, setSkills, bag.SetMap, itemMap, bag.RawBag.RowVersion, ref errorCode);
                }while (false);
                if (errorCode == (int)MessageCode.Success)
                {
                    tranMgr.Commit();
                }
                else
                {
                    tranMgr.Rollback();
                }
            }
            itemMap = null;
            return((MessageCode)errorCode);
        }
예제 #4
0
        public static NbManagerskillbagEntity GetSkillBagRaw(Guid managerId)
        {
            var bag = NbManagerskillbagMgr.GetById(managerId);

            if (null == bag)
            {
                bag = new NbManagerskillbagEntity
                {
                    ManagerId = managerId,
                    SetMap    = string.Empty
                };
            }
            return(bag);
        }
예제 #5
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));
        }