Пример #1
0
        public void SendMessage(SRActionMessage action)
        {
            NetOutgoingMessage msg = client.CreateMessage();

            msg.Write(NetworkSerializer.SerializeObject(action));
            client.SendMessage(msg, NetDeliveryMethod.ReliableOrdered);
        }
Пример #2
0
        public void SetPlayerInfo(PlayerInfo info)
        {
            GameState.Instance.SetPlayerInfo(info);
            ClientHandler.Instance.SetHandler(new IngameMessageHandler());

            SRActionMessage msg = new SRActionMessage(ActionType.GetMapData, ServiceType.Map);

            msg.args[ArgumentName.PlayerId] = info.id;
            ClientHandler.Instance.SendMessage(msg);
        }
Пример #3
0
        void SendLogin()
        {
            SRActionMessage msg = new SRActionMessage(ActionType.DoLogin, ServiceType.Login);

            msg.args = new Dictionary <ArgumentName, object>()
            {
                { ArgumentName.LoginUsername, "stryfe" },
                { ArgumentName.LoginPassword, "123" }
            };
            ClientHandler.Instance.SendMessage(msg);
        }
Пример #4
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);
            }
        }
Пример #5
0
        void UpdateMapInfo(Dictionary <ArgumentName, object> info)
        {
            // Sets players around
            Stryfe.Instance.ChangeScene(Scene.SceneType.Game);
            MapManager.Instance.UpdatePlayers(info[ArgumentName.VisiblePlayers] as List <PlayerInfo>);

            // Updates itself for other players
            SRActionMessage msg = new SRActionMessage(ActionType.UpdatePosition, ServiceType.Map);

            msg.args[ArgumentName.PlayerInfo] = GameState.Instance.playerInfo;
            ClientHandler.Instance.SendMessage(msg);

            // Sets NPCs around

            // Sets enemies around
        }
Пример #6
0
        public void Handle(SRActionMessage msg, NetConnection conn)
        {
            switch (msg.type)
            {
            case ActionType.GetMapData:
                SendMapData((int)msg.args[ArgumentName.PlayerId], conn);
                break;

            case ActionType.UpdatePosition:
                UpdatePlayerPosition(msg.args, conn);
                break;

            default:
                break;
            }
        }
Пример #7
0
        public void Send(ActionType type, Dictionary <ArgumentName, object> args)
        {
            SRActionMessage msg = null;

            switch (type)
            {
            case ActionType.UpdatePosition:
                msg      = new SRActionMessage(type, ServiceType.Map);
                msg.args = args;
                break;
            }

            if (msg != null)
            {
                ClientHandler.Instance.SendMessage(msg);
            }
        }
Пример #8
0
        public void Handle(SRActionMessage msg, NetConnection conn)
        {
            switch (msg.type)
            {
            case ActionType.DoLogin:
                if (msg.args.ContainsKey(ArgumentName.LoginUsername) &&
                    msg.args.ContainsKey(ArgumentName.LoginPassword))
                {
                    DoLogin(msg.args[ArgumentName.LoginUsername] as string,
                            msg.args[ArgumentName.LoginPassword] as string,
                            conn);
                }
                break;

            case ActionType.GetServerList:
                SendServerList(conn);
                break;

            default:
                break;
            }
        }
Пример #9
0
        public void Run()
        {
            // Server initialization
            config      = new NetPeerConfiguration("stryferpg");
            config.Port = 1234;

            server = new NetServer(config);
            server.Start();

            //TODO: services initialization

            // Messages receipt
            bool stop = false;
            NetIncomingMessage message;

            while (!stop)
            {
                while ((message = server.ReadMessage()) != null)
                {
                    switch (message.MessageType)
                    {
                    case NetIncomingMessageType.Data:
                        SRActionMessage action = NetworkSerializer.DeserializeObject <SRActionMessage>(message.ReadBytes(message.LengthBytes));

                        switch (action.serviceType)
                        {
                        case ServiceType.Login:
                            LoginService.Instance.Handle(action, message.SenderConnection);
                            break;

                        case ServiceType.Char:
                            break;

                        case ServiceType.Map:
                            MapService.Instance.Handle(action, message.SenderConnection);
                            break;
                        }

                        break;

                    case NetIncomingMessageType.StatusChanged:
                        Console.WriteLine("StatusChanged");
                        switch (message.SenderConnection.Status)
                        {
                        case NetConnectionStatus.Connected:
                            Console.WriteLine("Connected");
                            break;
                        }

                        break;

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

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

                //stop = Console.ReadKey().Key == ConsoleKey.S;
                Thread.Sleep(1);
            }
        }