public void Update(GameTime gameTime)
{
NetIncomingMessage message;
while ((message = _client.ReadMessage()) != null)
{
switch (message.MessageType)
{
case NetIncomingMessageType.WarningMessage:
_parent.HandleEvent(false, Backend.Events.ShowMessage, message.ReadString(), Color.Orange);
break;
case NetIncomingMessageType.ErrorMessage:
_parent.HandleEvent(false, Backend.Events.ShowMessage, message.ReadString(), Color.Red);
break;
case NetIncomingMessageType.DiscoveryResponse:
//Server hat seine Existenz bestätigt
if (!_servers.ContainsKey(message.SenderEndpoint.Address.ToString()))
{
string text = message.ReadString();
_parent.HandleEvent(false, Backend.Events.ShowMessage, "Found server '" + text + "' at IP " + message.SenderEndpoint.Address.ToString());
_servers.Add(message.SenderEndpoint.Address.ToString(), text);
}
// _client.Connect(message.SenderEndpoint);
break;
case NetIncomingMessageType.Data:
//Bei ankommenden Daten, diese verarbeiten.
byte type = message.ReadByte();
ProcessMessage(type, message);
break;
case NetIncomingMessageType.StatusChanged:
switch ((NetConnectionStatus)message.ReadByte())
{
case NetConnectionStatus.None:
_parent.HandleEvent(false, Backend.Events.ShowMessage, "Server not found.", Color.Red);
_connecting = false;
break;
case NetConnectionStatus.InitiatedConnect:
_parent.HandleEvent(false, Backend.Events.ShowMessage, "Asked for connection.", Color.Green);
break;
case NetConnectionStatus.RespondedConnect:
_parent.HandleEvent(false, Backend.Events.ShowMessage, "Server responded to Connect Request.", Color.Green);
break;
case NetConnectionStatus.Disconnecting:
_parent.HandleEvent(false, Backend.Events.ShowMessage, "Disconnecting.", Color.Red);
break;
case NetConnectionStatus.Connected:
_parent.HandleEvent(false, Backend.Events.ShowMessage, "Connected.", Color.Green);
_parent.HandleEvent(false, Backend.Events.Connect);
_connecting = false;
break;
case NetConnectionStatus.Disconnected:
_connecting = false;
_parent.HandleEvent(false, Backend.Events.ShowMessage, "Disconnected." + message.ReadString(), Color.Red);
_parent.HandleEvent(false, Backend.Events.Disconnect);
_client.DiscoverLocalPeers(666);
break;
}
break;
}
}
}