public CreateEstablishmentValidator(IShortCodeService shortCodeService, IVatService vatService)
        {
            _shortCodeService = shortCodeService;
            _vatService       = vatService;

            CreateRules();
        }
        /// <summary>
        /// 开局换牌
        /// </summary>
        /// <param name="userCode"></param>
        /// <param name="lstInitCardIndex"></param>
        public void SwitchCard(string userCode, List <int> lstInitCardIndex, IShortCodeService shortCodeService)
        {
            UserContext uc = GameContext.Players.First(c => c.Player.UserCode == userCode);

            if (lstInitCardIndex != null && lstInitCardIndex.Count > 0)
            {
                List <int> newIdx = RandomUtil.CreateRandomInt(0, uc.StockCards.Count() - 1, lstInitCardIndex.Count);
                newIdx = newIdx.OrderByDescending(c => c).ToList();
                foreach (int i in newIdx)
                {
                    uc.StockCards.ToList()[i].CardLocation = CardLocation.手牌;
                }
                lstInitCardIndex = lstInitCardIndex.OrderByDescending(c => c).ToList();
                foreach (int i in lstInitCardIndex)
                {
                    uc.InitCards.ToList()[i].CardLocation = CardLocation.牌库;
                }
            }
            else
            {
                uc.AllCards.Where(c => c.CardLocation == CardLocation.InitCard).ToList().ForEach(c => c.CardLocation = CardLocation.手牌);
            }



            //打乱牌库顺序
            int        count    = uc.AllCards.Count;
            List <int> newIndex = RandomUtil.CreateRandomInt(0, 100, count);

            newIndex.Sort(delegate(int a, int b) { return(RandomUtil.CreateRandomInt(-1, 1)); });
            for (int i = 0; i < newIndex.Count; i++)
            {
                uc.AllCards[i].Sort = newIndex[i];
            }

            uc.SwitchDone = true;

            //双方都换完牌后的流程
            if (GameContext.Players.First(c => c.Player.UserCode != userCode).SwitchDone)
            {
                var firstUser = GameContext.Players.First(c => c.IsFirst);
                //先手玩家换完牌后再抽一张牌
                var addCard = firstUser.StockCards.First();
                addCard.CardLocation = CardLocation.手牌;

                var secondUser = GameContext.Players.First(c => c.IsFirst == false);
                //后手玩家添加一枚幸运币
                var luckyCoin = new CreateNewCardInControllerAction <LuckyCoin>().Action(new ActionParameter()
                {
                    GameContext = GameContext, UserContext = secondUser
                }) as LuckyCoin;
                luckyCoin.CardLocation  = CardLocation.手牌;
                secondUser.IsActivation = false;

                TurnEnd(shortCodeService);
            }
            GameContext.Settlement();
        }
Exemple #3
0
 public HtmlBodyPartHandler(IContentDefinitionManager contentDefinitionManager,
                            IShortCodeService shortCodeService,
                            ILiquidTemplateManager liquidTemplateManager,
                            HtmlEncoder htmlEncoder)
 {
     _contentDefinitionManager = contentDefinitionManager;
     _shortCodeService         = shortCodeService;
     _liquidTemplateManager    = liquidTemplateManager;
     _htmlEncoder = htmlEncoder;
 }
        //public delegate void PostProcessing(Post post);

        public CachedPostService(
            IPostRepository postRepository,
            ITermService termService,
            IShortCodeService shortCode,
            IPostProcessingService postProcessingService,
            IMetadataService metadataService,
            IMemoryCache memoryCache) : base(postRepository, termService, shortCode, postProcessingService, metadataService)
        {
            _memoryCache  = memoryCache;
            _cacheOptions = new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromMinutes(Constants.MinutesToCache));
        }
 public HtmlBodyPartDisplayDriver(ILiquidTemplateManager liquidTemplateManager,
                                  IHtmlSanitizerService htmlSanitizerService,
                                  HtmlEncoder htmlEncoder,
                                  IShortCodeService shortCodeService,
                                  IStringLocalizer <HtmlBodyPartDisplayDriver> localizer)
 {
     _liquidTemplateManager = liquidTemplateManager;
     _htmlSanitizerService  = htmlSanitizerService;
     _htmlEncoder           = htmlEncoder;
     _shortCodeService      = shortCodeService;
     S = localizer;
 }
 public PostService(
     IPostRepository postRepository,
     ITermService termService,
     IShortCodeService shortCode,
     IPostProcessingService postProcessingService,
     IMetadataService metadataService)
 {
     _postRepository        = postRepository;
     _termService           = termService;
     _shortCode             = shortCode;
     _postProcessingService = postProcessingService;
     _metadataService       = metadataService;
 }
 public MarkdownFieldDisplayDriver(ILiquidTemplateManager liquidTemplateManager,
                                   HtmlEncoder htmlEncoder,
                                   IHtmlSanitizerService htmlSanitizerService,
                                   IShortCodeService shortCodeService,
                                   IMarkdownService markdownService,
                                   IStringLocalizer <MarkdownFieldDisplayDriver> localizer)
 {
     _liquidTemplateManager = liquidTemplateManager;
     _htmlEncoder           = htmlEncoder;
     _htmlSanitizerService  = htmlSanitizerService;
     _shortCodeService      = shortCodeService;
     _markdownService       = markdownService;
     S = localizer;
 }
Exemple #8
0
 public MarkdownBodyPartHandler(IContentDefinitionManager contentDefinitionManager,
                                IShortCodeService shortCodeService,
                                IMarkdownService markdownService,
                                IHtmlSanitizerService htmlSanitizerService,
                                ILiquidTemplateManager liquidTemplateManager,
                                HtmlEncoder htmlEncoder)
 {
     _contentDefinitionManager = contentDefinitionManager;
     _shortCodeService         = shortCodeService;
     _markdownService          = markdownService;
     _htmlSanitizerService     = htmlSanitizerService;
     _liquidTemplateManager    = liquidTemplateManager;
     _htmlEncoder = htmlEncoder;
 }
        /// <summary>
        /// 回合结束
        /// </summary>
        /// <param name="gameCode"></param>
        /// <param name="userCode"></param>
        /// <returns></returns>
        public APIResultBase TurnEnd(string gameCode, string userCode, IShortCodeService shortCodeService)
        {
            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.TurnEnd(shortCodeService);
            return(JsonModelResult.PackageSuccess(_gameCache.GetContext(ctl.GameContext.GameCode).Output()));
        }
 public EstablishmentService(IUnitOfWork unitOfWork, IShortCodeService shortCodeService, IMapper mapper)
 {
     _unitOfWork       = unitOfWork ?? throw new ArgumentNullException(nameof(unitOfWork));
     _shortCodeService = shortCodeService ?? throw new ArgumentNullException(nameof(shortCodeService));
     _mapper           = mapper ?? throw new ArgumentNullException(nameof(mapper));
 }
        /// <summary>
        /// 回合结束
        /// </summary>
        public void TurnEnd(IShortCodeService shortCodeService)
        {
            UserContext uc = GameContext.GetActivationUserContext(), next_uc = null;

            uc.ComboSwitch = false;
            List <Card> buffCards = new List <Card>();

            buffCards.AddRange(GameContext.DeskCards.GetDeskCardsByIsFirst(uc.IsFirst));
            buffCards.AddRange(uc.HandCards);
            buffCards = buffCards.Where(c => c != null && c.Buffs.Count > 0).ToList();
            foreach (Card card in buffCards)
            {
                LinkedListNode <IBuffRestore <ICardLocationFilter, IEvent> > buff = card.Buffs.First;
                MyTurnEndEvent myTurnEndEvent = new MyTurnEndEvent()
                {
                    Parameter = new ActionParameter()
                    {
                        GameContext = GameContext,
                        PrimaryCard = card
                    }
                };
                while (buff != null && buff.Value.TryCapture(card, myTurnEndEvent))
                {
                    buff.Value.Action(new ActionParameter()
                    {
                        GameContext = GameContext,
                        PrimaryCard = card
                    });
                    // card.Buffs.Remove(buff);
                    buff = buff.Next;
                }
            }


            #region 调整玩家对象
            if (GameContext.TurnIndex > 0)
            {
                next_uc = GameContext.GetNotActivationUserContext();

                var para = new ActionParameter()
                {
                    GameContext = GameContext,
                    PrimaryCard = GameContext.GetHeroByActivation(next_uc.IsFirst)
                };
                GameContext.EventQueue.AddLast(new MyTurnEndEvent()
                {
                    Parameter = para
                });
                GameContext.EventQueue.AddLast(new TouchOffComboEvent()
                {
                    Parameter = para
                });
                foreach (var bio in GameContext.DeskCards.Where(c => c != null))
                {
                    BaseBiology biology = bio as BaseBiology;
                    biology.RemainAttackTimes = 0;
                }

                //在回合交换前结算
                GameContext.QueueSettlement();
                _gameCache.SetContext(GameContext);
                //DataExchangeBll.Instance.AsyncInsert("TurnEnd", "Controler_Base", "", JsonConvert.SerializeObject(GameContext), DataSourceEnum.GameControler);

                uc.IsActivation      = false;
                next_uc.IsActivation = true;
            }
            else
            {
                //开局换完牌后,设置先手玩家费用=1
                uc.FullPower = 1;
                uc.Power     = 1;
            }
            #endregion

            #region 调整游戏环境对象
            GameContext.CurrentTurnRemainingSecond = 60;
            GameContext.CurrentTurnCode            = GameContext.NextTurnCode;
            GameContext.NextTurnCode = shortCodeService.CreateCode();
            GameContext.TurnIndex++;

            #endregion
            GameContext.Settlement();
            _gameCache.SetContext(GameContext);
        }
        /// <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)));
        }