Example #1
0
        public void DoLogin(string username, string password, NetConnection conn)
        {
            //TODO: validate login
            Console.WriteLine("{0} - {1}", username, password);

            //TODO: get player information
            PlayerInfo info = new PlayerInfo();

            info.name = "Stryfe";
            info.x    = 20;
            info.y    = 15;
            info.id   = debugId;

            debugId++;

            DataManager.Instance.UpdateConnection(info.id, conn);
            DataManager.Instance.UpdatePlayer(info.id, info);

            SROrderMessage msg = new SROrderMessage(OrderType.SetPlayerInfo, new Dictionary <ArgumentName, object>()
            {
                { ArgumentName.PlayerInfo, info }
            });

            ServerHandler.Instance.SendMessageToPlayer(msg, conn);
        }
Example #2
0
        void SendMapData(int playerId, NetConnection conn)
        {
            List <PlayerInfo> players = DataManager.Instance.Players.Values.ToList();
            //TODO: check surroundings

            SROrderMessage msg = new SROrderMessage(OrderType.UpdateMapInfo, new Dictionary <ArgumentName, object>()
            {
                { ArgumentName.VisiblePlayers, players }
            });

            ServerHandler.Instance.SendMessageToPlayer(msg, conn);
        }
Example #3
0
        public void Run()
        {
            // Client initialization
            config = new NetPeerConfiguration("stryferpg");
            client = new NetClient(config);
            client.Start();
            client.Connect("localhost", 1234);

            handler = new LoginMessageHandler();

            // Messages receipt
            NetIncomingMessage message;

            while (!stop)
            {
                while ((message = client.ReadMessage()) != null)
                {
                    switch (message.MessageType)
                    {
                    case NetIncomingMessageType.Data:
                        SROrderMessage msg = NetworkSerializer.DeserializeObject <SROrderMessage>(message.ReadBytes(message.LengthBytes));
                        handler.Handle(msg);
                        break;

                    case NetIncomingMessageType.StatusChanged:
                        switch (message.SenderConnection.Status)
                        {
                        case NetConnectionStatus.Connected:
                            Console.WriteLine("Connected");
                            Console.WriteLine("Asking for server list...");

                            SRActionMessage action = new SRActionMessage(ActionType.GetServerList, ServiceType.Login);
                            SendMessage(action);
                            break;
                        }

                        break;

                    case NetIncomingMessageType.DebugMessage:
                        Console.WriteLine(message.ReadString());
                        break;

                    default:
                        Console.WriteLine("unhandled message with type: "
                                          + message.MessageType);
                        break;
                    }
                }

                Thread.Sleep(1);
            }
        }
        public void Handle(SROrderMessage msg)
        {
            switch (msg.type)
            {
            case OrderType.UpdateMapInfo:
                UpdateMapInfo(msg.args);
                break;

            case OrderType.UpdateNPlayerInfo:
                UpdateNPlayerInfo(msg.args[ArgumentName.PlayerInfo] as PlayerInfo);
                break;
            }
        }
Example #5
0
        public void SendServerList(NetConnection conn)
        {
            SROrderMessage msg = new SROrderMessage(OrderType.UpdateServerList);

            msg.args = new Dictionary <ArgumentName, object>()
            {
                {
                    ArgumentName.ServerList, new List <ServerInfo>()
                    {
                        new ServerInfo("Normal", "localhost", 1234)
                    }
                }
            };

            ServerHandler.Instance.SendMessageToPlayer(msg, conn);
        }
Example #6
0
        void UpdatePlayerPosition(Dictionary <ArgumentName, object> args, NetConnection conn)
        {
            PlayerInfo info = args[ArgumentName.PlayerInfo] as PlayerInfo;

            SROrderMessage msg = new SROrderMessage(OrderType.UpdateNPlayerInfo);

            msg.args[ArgumentName.PlayerInfo] = info;

            //TODO: check surroundings
            List <NetConnection> conns = DataManager.Instance.Connections.Values.ToList();

            conns.Remove(conn);

            if (conns.Count > 0)
            {
                ServerHandler.Instance.SendMessageToMany(msg, conns);
            }
        }
Example #7
0
        public void Handle(SROrderMessage msg)
        {
            switch (msg.type)
            {
            case OrderType.UpdateServerList:
                if (msg.args.ContainsKey(ArgumentName.ServerList))
                {
                    UpdateServerList(msg.args[ArgumentName.ServerList] as List <ServerInfo>);
                }
                break;

            case OrderType.SetPlayerInfo:
                if (msg.args.ContainsKey(ArgumentName.PlayerInfo))
                {
                    SetPlayerInfo(msg.args[ArgumentName.PlayerInfo] as PlayerInfo);
                }
                break;
            }
        }
Example #8
0
 public void SendMessageToMany(SROrderMessage msg, List <NetConnection> conns)
 {
     server.SendMessage(CreateMessage(msg), conns, NetDeliveryMethod.ReliableOrdered, 0);
 }
Example #9
0
 public void SendMessageToPlayer(SROrderMessage msg, NetConnection conn)
 {
     server.SendMessage(CreateMessage(msg), conn, NetDeliveryMethod.ReliableOrdered);
 }