/// <summary> /// Received Event from GameServer /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void GameClientOnReceivedDataEvent(object sender, ReceivedEventArgs args) { try { var gameEvent = args.Data as GameEvent; if (gameEvent != null && gameEvent.EventType == GameEvent.Type.GuiJoined) { var gameArea = (Game.Middleware.Logic.Model.Model.Game) gameEvent.Data; if (gameArea != null) { this.GameConnected = true; this.CurrentGameView = new GameView {DataContext = new GameViewModel(this.GameClient, gameArea, this.PlayerName)}; this.CurrentGameView.Show(); } else { this.ShowInformationOverlay("Did not receive any new Games! Please try again."); } this.GameClient.ReceivedDataEvent -= GameClientOnReceivedDataEvent; } } catch (Exception ex) { this.ShowInformationOverlay("Error while waiting for GameServer: " + ex.Message); } }
/// <summary> /// Received a new GameEvent /// </summary> /// <param name="sender"></param> /// <param name="receivedEventArgs"></param> private void GameClientOnReceivedEvent(object sender, ReceivedEventArgs receivedEventArgs) { var receivedEvent = receivedEventArgs.Data as GameEvent; if (receivedEvent == null) return; switch (receivedEvent.EventType) { // Area Update case GameEvent.Type.AreaUpdate: { OnAreaUpdateEvent(new AreaUpdateEventArgs(receivedEvent.Data as Area)); } break; // Player left, close the View case GameEvent.Type.PlayerLeft: { OnPlayerLeftEvent(new PlayerLeftEventArgs()); } break; // Player left, close the View case GameEvent.Type.PlayerLost: { OnPlayerLostEvent(new PlayerLostEventArgs((bool)receivedEvent.Data)); } break; // Player joined after connection failure case GameEvent.Type.PlayerJoined: { OnPlayerJoinedEvent(new PlayerJoinedEventArgs()); } break; // Player left, close the View case GameEvent.Type.PlayerKicked: { OnPlayerKickedEvent(new PlayerKickedEventArgs()); } break; // Game Ready, show the path case GameEvent.Type.GameReady: { OnGameReadyEvent(new GameReadyEventArgs(receivedEvent.Data as Path)); } break; // Area Update case GameEvent.Type.GameFinish: { OnGameFinishEvent(new GameFinishEventArgs((bool)receivedEvent.Data)); } break; // Set all Areas back case GameEvent.Type.GameStart: { OnGameStartEvent(new GameStartEventArgs()); } break; // Game Reset case GameEvent.Type.GameReset: { OnGameResetEvent(new GameResetEventArgs()); } break; // Set all Areas back case GameEvent.Type.PlayerFinish: { OnPlayerFinishEvent(new PlayerFinishEvent((double)receivedEvent.Data)); } break; } }
/// <summary> /// Received data from TCP Connection /// </summary> /// <param name="e"></param> private void OnReceivedEvent(ReceivedEventArgs e) { if (this.ReceivedDataEvent != null) this.ReceivedDataEvent(this, e); }