/// <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); }
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); }
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); }
public static NbManagerskillbagEntity GetSkillBagRaw(Guid managerId) { var bag = NbManagerskillbagMgr.GetById(managerId); if (null == bag) { bag = new NbManagerskillbagEntity { ManagerId = managerId, SetMap = string.Empty }; } return(bag); }
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)); }