using System.Collections.Generic; using System.Collections.ObjectModel; using System.ServiceModel; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using NJDOTNET.Trivia; using NJDOTNET.Trivia.ServiceClient; namespace NJDOTNET.Trivia.WpfClient { [CallbackBehavior(UseSynchronizationContext = false)] public partial class MainWindow { private IGameServer _Server; public MainWindow() { InitializeComponent(); logger = new TextBoxLogger(MessageBox); } void InitializeService() { logger.Info("*** Creating new client... ***"); // TODO: Factorize/IoC this _Server = new WcfGameServerProxy(); _Server.GameClient.OnGameStart += HandleGameStart; _Server.GameClient.OnGameEnd += HandleGameEnd; _Server.GameClient.OnQuestionChanged += HandleNextQuestion; logger.Debug("*** Initialized new TriviaServiceClient ***"); logger.Debug("*** Requesting a new game be created... ***"); _Server.NewGame(); } private void PopulatePlayersList(IEnumerable players) { var playerList = new ObservableCollection(new List(players)); PlayerList.SetBinding( ItemsControl.ItemsSourceProperty, new Binding { Source = playerList }); } private void StartButton_Click(object sender, RoutedEventArgs e) { logger.Debug("*** Registering player. ***"); var player = new Player { Name = "Jess" }; _Server.RegisterPlayer(player); logger.Info("*** Starting game. ***"); _Server.Start(); } private void button1_Click(object sender, RoutedEventArgs e) { InitializeService(); } public void HandleGameStart(object sender, EventArgs e) { var game = e.Value; PopulatePlayersList(game.Players); logger.Debug("*** New Game (#{0}) started! ***", game.Id); } public void HandleGameEnd(object sender, EventArgs e) { var summary = e.Value; logger.Debug("*** Game #{0} ended. ***", summary.GameId); } public void HandleNextQuestion(object sender, EventArgs e) { var question = e.Value; logger.Info("Question #{0}) {1}", question.Id, question.Text); } } }