private async Task PlayRuleAsync(RuleCard thisCard) { if (thisCard.Deck == EnumRuleText.ReverseOrder) { if (_gameContainer.PlayerList.Count() == 2) { _gameContainer.SaveRoot !.AnotherTurn = true; await _gameContainer.AnimatePlayAsync !(thisCard); await _analyzeProcesses.AnalyzeQueAsync(); return; } } if (thisCard.Category != EnumRuleCategory.Basic && thisCard.Category != EnumRuleCategory.None) { var thisCat = thisCard.Category; _gameContainer.SaveRoot !.RuleList.RemoveAllOnly(items => items.Category == thisCat); } _gameContainer.SaveRoot !.RuleList.Add(thisCard); _gameContainer.RefreshRules(); if (_gameContainer !.QuePlayList.Count == 0) { _analyzeProcesses.AnalyzeRules(); if (_gameContainer.LeftToDraw > 0) { _gameContainer.SaveRoot.DoAnalyze = true; await _gameContainer.DrawAsync !(); return; } } await _analyzeProcesses.AnalyzeQueAsync(); }