protected override void Execute(List <GameEntity> entities)
    {
        foreach (var e in entities)
        {
            var movingCards = _eventContext.GetEntities(GameEventMatcher.EventMoveDeckCard)
                              .Select(ev => ev.eventMoveDeckCard.CardEntity);
            var cards = _cardContext.GetEntities(CardMatcher.DeckCard)
                        .Except(movingCards)
                        .ToArray()
                        .Shuffle();

            if (cards.Length > 0)
            {
                var drawCards = cards.Take(Math.Min(cards.Length, _setting.StartTurnDrawCount));
                foreach (var c in drawCards)
                {
                    EventMoveDeckCard.MoveCardToPlayer(c, e);
                }
            }
        }
    }
Exemple #2
0
    protected override void Execute(List <GameEntity> entities)
    {
        var players     = _gameContext.GetEntities(GameMatcher.Player);
        var movingCards = _eventContext.GetEntities(GameEventMatcher.EventMoveDeckCard)
                          .Select(e => e.eventMoveDeckCard.CardEntity);
        var cards = _cardContext.GetEntities(CardMatcher.DeckCard)
                    .Except(movingCards)
                    .ToArray()
                    .Shuffle();

        Assert.IsTrue(players.Count() * _setting.StartCardCount <= cards.Length);

        var i = 0;

        foreach (var p in players)
        {
            _setting.StartCardCount.Loop(() =>
            {
                EventMoveDeckCard.MoveCardToPlayer(cards[i], p);
                i++;
            });
        }
    }