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); } } } }
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++; }); } }