public void DoSideEffects(Apple[] eatenApples, Player pacMan) { var activeApplesIds = pacMan.Game .Apples .Where(x => x.GameId == pacMan.GameId) .Where(x => x.State == (int) AppleState.Active) .Select(x => x.Id) .ToArray(); var eatenApplesIds = eatenApples.Select(x => x.Id).ToArray(); var allremainingActiveApplesAreEatenNow = activeApplesIds.All(x => eatenApplesIds.Contains(x)); if(allremainingActiveApplesAreEatenNow) { pacMan.Game.AddGameEvent(EventType.GameEnded, string.Format("Game Over! PacMen win with {0} points!", pacMan.Game.Score), pacMan.Id ); pacMan.Game.State = (int)GameState.GameOver; pacMan.Game.StateChangeTime = DateTime.Now; } }