Exemplo n.º 1
0
        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;
            }
        }