public List <ActionEv> GetActions(CardSet seen_cards, Card dealer_upcard, CardSet[] player_hands, int active_hand, List <ActionType> available_actions)
{
ValidateActions(player_hands[active_hand], available_actions);
Shoe tmp_shoe = shoe.Copy();
tmp_shoe.Remove(seen_cards);
Eval.CacheDealerProbs(dealer_upcard.PointValue, tmp_shoe.ToArray());
List <ActionEv> actions = new List <ActionEv>();
foreach (ActionType a in available_actions)
{
double ev = GetActionEV(tmp_shoe, player_hands[active_hand], a, dealer_upcard);
actions.Add(new ActionEv()
{
Action = a, Ev = ev
});
}
actions.Sort(delegate(ActionEv ae1, ActionEv ae2) { return(ae2.Ev.CompareTo(ae1.Ev)); });
game_logger.Action(dealer_upcard, player_hands, active_hand, actions);
return(actions);
}