/// <summary> /// 获取单条数据 /// </summary> /// <returns></returns> public V_xy_sp_userView GetCurrentUserStatebyUserID(string UserID) { V_xy_sp_userView userV = new V_xy_sp_userView(); tm_pm_userinfoBLL ubll = new tm_pm_userinfoBLL(); xy_sp_userspiritBLL upbll = new xy_sp_userspiritBLL(); xy_sp_spiritequipmentBLL sqBll = new xy_sp_spiritequipmentBLL(); xy_sp_spiritskillBLL skBll = new xy_sp_spiritskillBLL(); xy_sp_userspiritpackageBLL spBll = new xy_sp_userspiritpackageBLL(); xy_sp_taskBLL tkBll = new xy_sp_taskBLL(); using (xy_sp_userspiritDAL dal = new xy_sp_userspiritDAL()) { userV.User = ubll.GetUserInfoByID(UserID); xy_sp_userspirit entity = dal.GetSpiritbyUserID(UserID); userV.Spirit = EntityToModel(entity); //用户背包 userV.Spirit.packageList = spBll.GetSpPackageListBySpID(userV.Spirit.SpiritID); //用户装备 userV.Spirit.spEquipmentList = sqBll.GetSpEqListBySpID(userV.Spirit.SpiritID); //用户技能 userV.Spirit.spSkillList = skBll.GetListBySpID(userV.Spirit.SpiritID); userV.Task = tkBll.getTaskContext(entity.CurrentTaskID); return(userV); } }
/// <summary> /// 战斗并返回所有怪物状态 /// </summary> /// <param name="FighterFrom">用户精灵</param> /// <param name="skill">技能</param> /// <param name="FighterToList"></param> /// <returns></returns> public V_xy_sp_userView UserStartFight(V_xy_sp_userView userView, string skillName, ref string batmsgAll) { V_xy_sp_userspirit FighterFrom = userView.Spirit; V_xy_sp_skill skill = userView.Spirit.spSkillList[0].skill; List <V_xy_sp_spirit> FighterToList = userView.Task.SpiritsList; List <V_xy_sp_spirit> FighterToResult = new List <V_xy_sp_spirit>(); FighterFrom.SpiritMagic = FighterFrom.SpiritMagic - skill.ExpendValue; int maxInjuryCount = 0; foreach (V_xy_sp_spirit spirit in FighterToList) { if (spirit.SpiritLife <= 0) { continue; //生命值低于0跳过 } if (skill.isGroupinjury == 1 && maxInjuryCount == FighterToList.Count) { //如果是群攻并且攻击次数已到最大次数,不攻击 FighterToResult.Add(spirit); continue; } else if (maxInjuryCount == 1) { //如果非群攻,不攻击 FighterToResult.Add(spirit); continue; } string batmsg = string.Empty; SkillInjury(FighterFrom, skill, spirit, ref batmsg); batmsgAll = batmsgAll + System.Environment.NewLine + batmsg; maxInjuryCount++; FighterToResult.Add(spirit); //所有怪物已阵亡 if (spirit == FighterToList.LastOrDefault()) { if (spirit.SpiritLife <= 0) { xy_sp_taskBLL tkBll = new xy_sp_taskBLL(); string NextTaskID = tkBll.GetNextTaskIDByTaskID(FighterFrom.CurrentTaskID); userView.Task.IsClear = "1"; userView.NextTask = tkBll.getTaskContext(NextTaskID); } } } userView.Task.SpiritsList = FighterToResult; return(userView); }
void ws_NewMessageReceived(WebSocketSession session, string value) { string SpiritJsonData = string.Empty; try { string tokenValue = session.Path.Split('=')[1]; V_xy_sp_userView userView = CacheServer.GetUserViewFromCache(tokenValue); switch (value) { case "skill1": string batmsgAll = string.Empty; fighter = new FightHelper_User(); //List<V_xy_sp_spirit> Enemys V_xy_sp_userView userViewResult = fighter.UserStartFight(userView, "skill1", ref batmsgAll); //更新缓存的敌人信息 //userView.Task.SpiritsList.Clear(); //userView.Task.SpiritsList.AddRange(Enemys); CacheServer.UpdatetUserViewCache(tokenValue, userView); ResponseObj <V_xy_sp_userView> resBat = new ResponseObj <V_xy_sp_userView>() { DataType = "batinfo", ObjType = "obj", IsSuccess = "1", Data = userViewResult, MessageInfo = batmsgAll }; SpiritJsonData = JsonConvert.SerializeObject(resBat); break; default: V_xy_sp_userspirit spirit = userView.Spirit; ResponseObj <string> resMsg = new ResponseObj <string>() { DataType = "msginfo", ObjType = "obj", IsSuccess = "1", Data = spirit.SpiritName + " 说:" + value }; SpiritJsonData = JsonConvert.SerializeObject(resMsg); break; } SendToAll(session, SpiritJsonData); }catch (Exception ex) { Tracer.Debug(ex.ToString()); } }
public static V_xy_sp_userView GetUserViewFromCache(string tokenValue) { V_tm_pm_userinfo userInfo = _cached.Get(tokenValue) as V_tm_pm_userinfo; if (userInfo == null) { userInfo = new tm_pm_userinfoBLL().GetLoginInfo(tokenValue); } V_xy_sp_userView userView = (V_xy_sp_userView)_cached.Get(tokenValue + "V_xy_sp_userView"); if (userView == null) { userView = new xy_sp_userspiritBLL().GetCurrentUserStatebyUserID(userInfo.USERID); cacheuserView(tokenValue + "V_xy_sp_userView", userView); } return(userView); }
void fighter_FightComplete(object sender, V_xy_sp_userView e) { throw new NotImplementedException(); }
public static void UpdatetUserViewCache(string tokenValue, V_xy_sp_userView userView) { _cached.Remove(tokenValue + "V_xy_sp_userView"); cacheuserView(tokenValue + "V_xy_sp_userView", userView); }
public static void cacheuserView(string tokenValue, V_xy_sp_userView userView) { _cached.Set(tokenValue, userView); }