Serialize() public method

public Serialize ( ) : string
return string
示例#1
0
        private static void ConnectNewPlayer(NetIncomingMessage msg, string nickname) {
            // Проверяем что этот аккаунт еще не зайден:
            if (ServerGame.ServerScene.Accounts.FindIndex(x => x.nickname == nickname) == -1) {
                SendMap(msg.SenderConnection, Locations.Town);

                Log.Print("Creating new player: " + nickname);
                /* Создаем нового игрока в игре */
                InitNewPlayer(GetId(msg.SenderConnection), nickname);

                /* Отдаем новому игроку его уникальный ид */
                var nc = new NetCommand(NetCommandType.Connect, (GetId(msg.SenderConnection)));

                NetOutgoingMessage om = _server.CreateMessage();
                om.Write(nc.Serialize());
                _server.SendMessage(om, msg.SenderConnection, NetDeliveryMethod.ReliableOrdered);
            }
            else {
                // отвергаем соединение
                Log.Print("Connection deny. Nickname " + nickname);
                msg.SenderConnection.Deny("This account already in the game");
                msg.SenderConnection.Disconnect("Bye");
            }
        }
示例#2
0
 public static void SendMap(NetConnection client, Locations location) {
     // TODO: отдаём начальное состояние мира (карта)
     var nc = new NetCommand(NetCommandType.SendMap,
         ServerGame.ServerScene.GetGameLayer(location).SerializeMap());
     NetOutgoingMessage om = _server.CreateMessage();
     om.Write(nc.Serialize());
     _server.SendMessage(om, client, NetDeliveryMethod.ReliableOrdered);
 }
示例#3
0
 /// <summary>
 ///     Отсылает всем подключенным клиентам сообщение в чат
 /// </summary>
 public static void SendChatMessage(string chatMsg) {
     var nc = new NetCommand(NetCommandType.Say, chatMsg);
     NetOutgoingMessage om = _server.CreateMessage();
     om.Write(nc.Serialize());
     _server.SendMessage(om, _server.Connections, NetDeliveryMethod.ReliableOrdered, 0);
 }
示例#4
0
        /// <summary>
        ///     Отсылает всем подключенным клиентам текущее игровое состояние
        /// </summary>
        public static void SendGameStateToAll() {
            if (_server.ConnectionsCount > 0) {
                foreach (NetConnection netConnection in _server.Connections) {
                    // TODO: не формировать каждый раз одни и те же данные

                    // TODO: Отсылать пакет с состоянием игры по частям (по 10 сущностей, например)
                    if (netConnection.Status == NetConnectionStatus.Connected) {
                        // TODO: Временное решение. Вместо убирания ненужных элементов из полного геймстейта, сразу формируем с нуля для каждого игрока
                        GameState gs =
                            ServerGame.ServerScene.GetGameState(GetId(netConnection));
                        var nc = new NetCommand(NetCommandType.UpdateGamestate, gs.Serialize());

                        NetOutgoingMessage om = _server.CreateMessage();
                        om.Write(nc.Serialize());
                        try {
                            _server.SendMessage(om, netConnection, NetDeliveryMethod.Unreliable, 0);
                        }
                        catch (NetException e) {
                            Log.Print("NETWORK ERROR: " + e.StackTrace, LogType.Error);
                        }
                    }
                }
            }
        }
 /// <summary>
 ///     Оптравляет пакет серверу указанным методом
 /// </summary>
 public void Send(NetCommand command, NetDeliveryMethod method) {
     NetOutgoingMessage om = Client.CreateMessage(command.Serialize());
     Client.SendMessage(om, method);
 }