/// <summary> /// Avoir des enum permet de connaitre le template d'envoie de message et d eviter de faire de la reflection ou d'utiliser le mot clef dynamic qui sont gourmand /// </summary> /// <param name="typeMessage"></param> /// <param name="values"></param> public void CreateMessage(EnumMessageToServer typeMessage, List <object> values) { NetOutgoingMessage message = _client.CreateMessage(); message.Write((byte)typeMessage); switch (typeMessage) { case EnumMessageToServer.Init: message.Write((byte)(EnumTypeElement)values[0]); // EnumTypeElement type perso choisi message.Write((string)values[1]); // String pseudo break; case EnumMessageToServer.Update: message.Write((byte)values[0]); // EnumMoveCommand command de deplacement message.Write((byte)values[1]); // EnumActionCommand command d'actions break; } _client.SendMessage(message, NetDeliveryMethod.ReliableOrdered); }
public void Update() { NetIncomingMessage message; while ((message = _serveur.ReadMessage()) != null) { switch (message.MessageType) { case NetIncomingMessageType.Data: EnumMessageToServer typeMessage = (EnumMessageToServer)message.ReadByte(); switch (typeMessage) { case EnumMessageToServer.Init: var p = (EnumTypeElement)message.ReadByte(); // EnumTypeElement type perso choisi ElementPlayable typeElement; switch (p) { case EnumTypeElement.CircleElement: typeElement = new CircleElement(); break; default: typeElement = null; break; } var p2 = message.ReadString(); // String pseudo Player NewPlayer = new Player() { _Element = typeElement, _NamePlayer = p2, _PlayerState = EnumPlayerState.SearchingGame, _EndPoint = message.SenderEndPoint, }; typeElement.position = new Vector2(new Random().Next(1920), new Random().Next(1080)); typeElement._MyPlayer = NewPlayer; _Players.Add(NewPlayer); break; case EnumMessageToServer.Update: break; } break; case NetIncomingMessageType.StatusChanged: switch (message.SenderConnection.Status) { case NetConnectionStatus.None: break; case NetConnectionStatus.InitiatedConnect: break; case NetConnectionStatus.ReceivedInitiation: break; case NetConnectionStatus.RespondedAwaitingApproval: break; case NetConnectionStatus.RespondedConnect: break; case NetConnectionStatus.Connected: break; case NetConnectionStatus.Disconnecting: break; case NetConnectionStatus.Disconnected: break; default: break; } break; case NetIncomingMessageType.DebugMessage: Console.WriteLine(message.ReadString()); break; default: Console.WriteLine("unhandled message with type: " + message.MessageType); break; } _serveur.Recycle(message); } }