private bool HeartsValidMove(int deck) { var heartSave = (ITrickStatusSavedClass)SaveRoot !; var thisList = SaveRoot !.TrickList; var thisCard = _gameContainer.DeckList !.GetSpecificItem(deck); EnumSuitList cardSuit = thisCard.GetSuit.GetRegularSuit(); if (thisList.Count == 0) { if (heartSave.TrickStatus == EnumTrickStatus.FirstTrick) { var tempCard = SingleInfo !.MainHandList.OrderBy(Items => Items.GetSuit).ThenBy(Items => Items.ReadMainValue).Take(1).Single(); if (tempCard.Deck == deck) { return(true); } return(false); } if (heartSave.TrickStatus == EnumTrickStatus.SuitBroken) { return(true); } if (cardSuit == EnumSuitList.Hearts) { return(!SingleInfo !.MainHandList.Any(Items => Items.GetSuit.GetRegularSuit() != EnumSuitList.Hearts)); } return(true); } var leadCard = thisList.First(); if (leadCard.GetSuit.Equals(thisCard.GetSuit)) { return(true); } DeckObservableDict <T> tempList; if (_trickData !.HasDummy == true) { var temps = MainContainer.Resolve <ITrickDummyHand <SU, T> >(); //if you don't have it, then will raise an error. tempList = temps.GetCurrentHandList(); }