Example #1
0
        public ActionResult DoLogin()
        {
            string res = JsonStringResult.VerifyFail();

            try
            {
                if (GeetestValidate.Validate())
                {
                    CUsers user = UsersBll.Instance.Login(Request["LoginName"].TryParseString(), Request["Password"].TryParseString());
                    if (user != null)
                    {
                        string userJson = JsonConvert.SerializeObject(user, new JsonSerializerSettings
                        {
                            DateFormatString = "yyyy-MM-dd HH:mm:ss"
                        });
                        CookieHelper.SetCookie("User", userJson, DateTime.Now.AddDays(30));
                        res = JsonStringResult.SuccessResult();
                    }
                    else
                    {
                        res = JsonStringResult.Error(OperateResCodeEnum.用户名或密码错误);
                    }
                }
                else
                {
                    res = JsonStringResult.Error(OperateResCodeEnum.验证码错误);
                }
            }
            catch (Exception ex)
            {
                res = JsonStringResult.Error(OperateResCodeEnum.内部错误);
            }
            return(Content(res));
        }
        /// <summary>
        /// 使用英雄技能
        /// </summary>
        /// <param name="gameCode"></param>
        /// <param name="userCode"></param>
        /// <param name="target"></param>
        /// <returns></returns>
        public APIResultBase CastHeroPower(string gameCode, string userCode, int target = -1)
        {
            string         res = JsonStringResult.VerifyFail();
            Controler_Base ctl = Validate(gameCode, userCode);

            if (ctl == null)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }
            if (VictoryValidate(ctl.GameContext))
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.游戏已经结束));
            }
            var player = ctl.GameContext.GetActivationUserContext();

            if (player == null || player.UserCode != userCode || player.RemainingHeroPowerCastCount < 1)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }

            BaseHero hero = ctl.GameContext.GetHeroByActivation();

            if (player.Power < (hero.CardAbility as IHeroAbility).Cost)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.没有足够的法力值));
            }

            ctl.CastHeroPower(hero, target);
            return(JsonModelResult.PackageSuccess(_gameCache.GetContext(ctl.GameContext.GameCode).Output()));
        }
        /// <summary>
        /// 装备一件装备
        /// </summary>
        /// <param name="gameCode"></param>
        /// <param name="userCode"></param>
        /// <param name="cardInGameCode"></param>
        /// <param name="target"></param>
        /// <returns></returns>
        public APIResultBase LoadEquip(string gameCode, string userCode, string cardInGameCode)
        {
            string         res = JsonStringResult.VerifyFail();
            Controler_Base ctl = Validate(gameCode, userCode);

            if (ctl == null)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }
            if (VictoryValidate(ctl.GameContext))
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.游戏已经结束));
            }
            var player = ctl.GameContext.GetActivationUserContext();

            if (player == null || player.UserCode != userCode)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }

            if (ctl.GameContext.AllCard.Any(c => c != null && c.CardInGameCode == cardInGameCode && c.CardType == CardType.装备) == false)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }

            BaseHero hero = ctl.GameContext.GetHeroByActivation(player.IsActivation);
            Card     card = player.HandCards.First(c => c.CardInGameCode == cardInGameCode);

            if (player.Power < card.Cost)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.没有足够的法力值));
            }
            ctl.LoadEquip(hero, card as BaseEquip);
            return(JsonModelResult.PackageSuccess(_gameCache.GetContext(ctl.GameContext.GameCode).Output()));
        }
Example #4
0
        public ActionResult DoRegister()
        {
            string res = JsonStringResult.VerifyFail();

            try
            {
                if (GeetestValidate.Validate())
                {
                    res = UsersBll.Instance.Register(Request["UserName"].TryParseString(), Request["Password"].TryParseString(), Request["Mobile"].TryParseString(),
                                                     Request["InvitationCode"].TryParseString(), Request["NickName"].TryParseString());
                    var objRes = JsonConvert.DeserializeObject <APIResultBase>(res);
                    if (objRes.code == (int)OperateResCodeEnum.成功)
                    {
                        string user = JsonConvert.SerializeObject(UsersBll.Instance.GetUserByUserName(Request["UserName"].TryParseString()), new JsonSerializerSettings
                        {
                            DateFormatString = "yyyy-MM-dd HH:mm:ss"
                        });
                        CookieHelper.SetCookie("User", user, DateTime.Now.AddDays(30));
                    }
                }
                else
                {
                    res = JsonStringResult.Error(OperateResCodeEnum.验证码错误);
                }
            }
            catch (Exception ex)
            {
                res = JsonStringResult.Error(OperateResCodeEnum.内部错误);
            }
            return(Content(res));
        }
        public string Online(string param)
        {
            JObject jobj      = JObject.Parse(param);
            string  userCode  = jobj["UserCode"].TryParseString();
            string  userName  = jobj["NickName"].TryParseString();
            string  password  = jobj["Password"].TryParseString();
            string  tableCode = jobj["TableCode"].Value <string>();

            var textRes = GameTableBll.Instance.ZhanZuoEr(tableCode, userCode, password);

            if (textRes.code != (int)OperateResCodeEnum.成功)
            {
                return(JsonConvert.SerializeObject(textRes));
            }

            HS_GameTable table = GameTableBll.Instance.GetTable(tableCode);

            if (table != null)
            {
                // 查询用户。
                //var user = GameRecordBll.GetUser(userCode, table.TableCode);
                //var record = ((APISingleModelResult<FF_GameRecord>)textRes).data;

                Groups.Add(Context.ConnectionId, table.TableCode);
                //UserContextProxy.SetUser(user);

                var record = GameRecordBll.Instance.GetUser(userCode, tableCode);
                SendOnlineNotice(record, table.TableCode, "用户:" + userName + "进入房间");
            }
            else
            {
                return(JsonStringResult.VerifyFail());
            }
            return(JsonConvert.SerializeObject(textRes));
        }
Example #6
0
        public ActionResult ValidateUserName()
        {
            string res   = JsonStringResult.VerifyFail();
            var    param = JObject.Parse(TempData["param"].TryParseString());

            res = UsersBll.Instance.IsRepeat(param["UserName"].TryParseString()) ? JsonStringResult.Error(OperateResCodeEnum.用户名重复) : JsonStringResult.SuccessResult();
            return(Content(res));
        }
        /// <summary>
        /// 随从发起攻击
        /// </summary>
        /// <param name="gameCode"></param>
        /// <param name="userCode"></param>
        /// <param name="cardInGameCode"></param>
        /// <param name="target"></param>
        /// <returns></returns>
        public APIResultBase ServantAttack(string gameCode, string userCode, string cardInGameCode, int target)
        {
            string         res = JsonStringResult.VerifyFail();
            Controler_Base ctl = Validate(gameCode, userCode);

            if (ctl == null)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }
            if (VictoryValidate(ctl.GameContext))
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.游戏已经结束));
            }
            var player = ctl.GameContext.GetActivationUserContext();

            if (player == null || player.UserCode != userCode)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }

            if (ctl.GameContext.DeskCards.Any(c => c != null && c.CardInGameCode == cardInGameCode) == false)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }

            if (player.IsFirst && target < 8)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.参数错误));
            }
            else if (player.IsFirst == false && target > 7)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.参数错误));
            }

            BaseServant servant = ctl.GameContext.DeskCards.First(c => c != null && c.CardInGameCode == cardInGameCode) as BaseServant;

            if (servant.RemainAttackTimes < 1)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }

            if (ctl.GameContext.DeskCards[target].HasTaunt == false)
            {
                List <BaseBiology> taunts = ctl.GameContext.DeskCards.GetDeskCardsByIsFirst(player.IsFirst ? false : true).Where(c => c != null && c.HasTaunt).ToList();
                for (int i = 0; i < taunts.Count; i++)
                {
                    if (taunts[i].HasTaunt && i != target)
                    {
                        return(JsonModelResult.PackageFail(OperateResCodeEnum.你必须先攻击有嘲讽技能的随从));
                    }
                }
            }
            ctl.ServantAttack(servant, target);
            return(JsonModelResult.PackageSuccess(_gameCache.GetContext(ctl.GameContext.GameCode).Output()));
        }
        /// <summary>
        /// 将一名随从从手牌中移到场上
        /// </summary>
        /// <param name="gameCode"></param>
        /// <param name="userCode"></param>
        /// <param name="cardInGameCode"></param>
        /// <param name="location"></param>
        /// <returns></returns>
        public APIResultBase CastServant(string gameCode, string userCode, string cardInGameCode, int location, int target)
        {
            string         res = JsonStringResult.VerifyFail();
            Controler_Base ctl = Validate(gameCode, userCode);

            if (ctl == null)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }
            if (VictoryValidate(ctl.GameContext))
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.游戏已经结束));
            }
            var player = ctl.GameContext.GetActivationUserContext();

            if (player == null || player.UserCode != userCode)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }
            if (player.HandCards.Any(c => c.CardInGameCode == cardInGameCode) == false)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }
            if (location == 0 || location == 8)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }
            //if (ctl.GameContext.DeskCards[location] != null)
            //{
            //    return JsonModelResult.PackageFail(OperateResCodeEnum.位置已被占用);
            //}
            if (player.IsFirst && (location == 0 || location > 7))
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.参数错误));
            }
            else if (player.IsFirst == false && (location == 8 || location < 8))
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.参数错误));
            }
            Card card = player.HandCards.First(c => c.CardInGameCode == cardInGameCode);

            if (player.Power < card.Cost)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.没有足够的法力值));
            }

            ctl.CastServant((BaseServant)card, location, target);
            return(JsonModelResult.PackageSuccess(_gameCache.GetContext(ctl.GameContext.GameCode).Output()));
        }
Example #9
0
        public ActionResult DoLogOut()
        {
            string res = JsonStringResult.VerifyFail();

            try
            {
                CookieHelper.RemoveCookie("User");
                res = JsonStringResult.SuccessResult();
            }
            catch (Exception ex)
            {
                res = JsonStringResult.Error(OperateResCodeEnum.内部错误);
            }
            return(Content(res));
        }
        /// <summary>
        /// 英雄发起攻击
        /// </summary>
        /// <param name="gameCode"></param>
        /// <param name="userCode"></param>
        /// <param name="cardInGameCode"></param>
        /// <param name="target"></param>
        /// <returns></returns>
        public APIResultBase HeroAttack(string gameCode, string userCode, int target)
        {
            string         res = JsonStringResult.VerifyFail();
            Controler_Base ctl = Validate(gameCode, userCode);

            if (ctl == null)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }
            if (VictoryValidate(ctl.GameContext))
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.游戏已经结束));
            }
            var player = ctl.GameContext.GetActivationUserContext();

            if (player == null || player.UserCode != userCode)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }
            if (player.IsFirst && target < 8)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.参数错误));
            }
            else if (player.IsFirst == false && target > 7)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.参数错误));
            }

            BaseHero hero = ctl.GameContext.GetHeroByActivation(player.IsActivation);

            if (hero.RemainAttackTimes < 1)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }

            List <BaseBiology> taunts = ctl.GameContext.DeskCards.GetDeskCardsByIsFirst(player.IsFirst ? false : true).Where(c => c != null && c.HasTaunt).ToList();

            if (taunts != null && taunts.Count > 0 && taunts.Any(c => c.DeskIndex == target) == false)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.你必须先攻击有嘲讽技能的随从));
            }

            ctl.HeroAttack(hero, target);
            return(JsonModelResult.PackageSuccess(_gameCache.GetContext(ctl.GameContext.GameCode).Output()));
        }
        /// <summary>
        /// 打出一张法术牌
        /// </summary>
        /// <param name="gameCode"></param>
        /// <param name="userCode"></param>
        /// <param name="cardInGameCode"></param>
        /// <param name="target"></param>
        /// <returns></returns>
        public APIResultBase CastSpell(string gameCode, string userCode, string cardInGameCode, int target)
        {
            string         res = JsonStringResult.VerifyFail();
            Controler_Base ctl = Validate(gameCode, userCode);

            if (ctl == null)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }
            if (VictoryValidate(ctl.GameContext))
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.游戏已经结束));
            }
            var player = ctl.GameContext.GetActivationUserContext();

            if (player == null || player.UserCode != userCode)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }
            if (player.HandCards.Any(c => c.CardInGameCode == cardInGameCode) == false)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }

            Card card = player.HandCards.First(c => c.CardInGameCode == cardInGameCode);

            if (player.Power < card.Cost)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.没有足够的法力值));
            }
            if (card.CastCardPrecondition == CastCardPrecondition.健康 && target > -1)
            {
                BaseBiology biology = ctl.GameContext.DeskCards[target];
                if (biology.Life != biology.BuffLife)
                {
                    return(JsonModelResult.PackageFail(OperateResCodeEnum.错误的目标));
                }
            }
            if (card.CastCardPrecondition == CastCardPrecondition.装备有武器 && ctl.GameContext.GetHeroByActivation().Equip == null)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.你无法施放这个技能));
            }
            ctl.CastSpell((BaseSpell)card, target);
            return(JsonModelResult.PackageSuccess(_gameCache.GetContext(ctl.GameContext.GameCode).Output()));
        }
Example #12
0
        public override void OnException(MethodExecutionArgs args)
        {
            HS_ErrRec ex = new HS_ErrRec();

            ex.Action     = _methodName;
            ex.AddTime    = DateTime.Now;
            ex.Controller = _className;
            ex.ErrorMsg   = args.Exception.Message;
            ex.IP         = StringUtil.GetIP();
            ex.StackTrace = args.Exception.StackTrace;
            ex.Arguments  = "";
            if (args.Arguments != null && args.Arguments.Count > 0)
            {
                ex.Arguments = args.Arguments.ToJsonString();
            }
            ex.DataSource = (int)DataSourceEnum.SignalR;
            ErrRecBll.Instance.AsyncInsert(ex);
            args.ReturnValue  = JsonStringResult.VerifyFail();
            args.FlowBehavior = FlowBehavior.Return;
        }
        /// <summary>
        /// 回合结束
        /// </summary>
        /// <param name="gameCode"></param>
        /// <param name="userCode"></param>
        /// <returns></returns>
        public APIResultBase TurnStart(string gameCode, string userCode)
        {
            string         res = JsonStringResult.VerifyFail();
            Controler_Base ctl = Validate(gameCode, userCode);

            if (ctl == null)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }
            if (VictoryValidate(ctl.GameContext))
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.游戏已经结束));
            }
            var player = ctl.GameContext.GetActivationUserContext();

            if (player == null || player.UserCode != userCode)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }

            ctl.TurnStart();
            return(JsonModelResult.PackageSuccess(_gameCache.GetContext(ctl.GameContext.GameCode).Output()));
        }
        /// <summary>
        /// 开场换牌
        /// </summary>
        /// <param name="gameCode"></param>
        /// <param name="userCode"></param>
        /// <param name="lstInitCardIndex"></param>
        /// <returns></returns>
        public APIResultBase SwitchCard(string gameCode, string userCode, List <string> lstInitCardIndex, IShortCodeService shortCodeService)
        {
            string         res = JsonStringResult.VerifyFail();
            Controler_Base ctl = Validate(gameCode, userCode);

            if (ctl == null)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据));
            }
            //if (ctl.TurnIndex != 2)
            //{
            //    return JsonModelResult.PackageFail(OperateResCodeEnum.查询不到需要的数据);
            //}
            if (ctl.GameContext.Players.Any(c => c.UserCode == userCode && c.SwitchDone == false) == false)
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.参数错误));
            }
            List <int> initCardIndex = new List <int>();

            foreach (string idx in lstInitCardIndex)
            {
                initCardIndex.Add(idx.TryParseInt());
            }
            if (initCardIndex.Any(c => c < 0 || c > 3) || initCardIndex.Any(c => c >= ctl.GameContext.Players.First(x => x.UserCode == userCode).InitCards.Count()))
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.参数错误));
            }
            var idxGroup = initCardIndex.GroupBy(c => c);

            if (idxGroup.Any(c => c.Count() > 1))
            {
                return(JsonModelResult.PackageFail(OperateResCodeEnum.参数错误));
            }
            ctl.SwitchCard(userCode, initCardIndex, shortCodeService);
            return(JsonModelResult.PackageSuccess(_gameCache.GetContext(ctl.GameContext.GameCode).Output().Players.First(c => c.UserCode == userCode)));
        }