예제 #1
0
        private void ParseClientSay(InMessage message)
        {
            string receiver  = null;
            ushort channelId = 0;

            MessageClasses type = (MessageClasses)message.ReadByte();

            switch (type)
            {
            case MessageClasses.PRIVATE_TO:
            case MessageClasses.GAMEMASTER_PRIVATE_TO:
                receiver = message.ReadString();
                break;

            case MessageClasses.CHANNEL:
            case MessageClasses.CHANNEL_HIGHLIGHT:
            case MessageClasses.GAMEMASTER_CHANNEL:
                channelId = message.ReadUShort();
                break;

            default:
                break;
            }

            string text = message.ReadString();

            client.Chat.OnPlayerSpeak(receiver, channelId, type, text);
        }
예제 #2
0
        public void GetNextMessageTest()
        {
            Mock <INativeImplementation> nativeImplementation = new();
            IntPtr feedHandle = new(123);

            nativeImplementation.Setup(x => x.mdf_create()).Returns(feedHandle);
            const MessageReference MessageReference    = MessageReference.MDF_M_CI;
            const MessageClasses   MessageClass        = MessageClasses.MDF_MC_ESTIMATES;
            const ulong            InstrumentReference = 500;

            nativeImplementation.Setup(x => x.mdf_get_next_message(feedHandle, ref It.Ref <int> .IsAny, ref It.Ref <int> .IsAny, ref It.Ref <ulong> .IsAny))
            .Callback(new GetNextMessageCallback((IntPtr _, ref int mref, ref int mclass, ref ulong insref) =>
            {
                mref   = (int)MessageReference;
                mclass = (int)MessageClass;
                insref = InstrumentReference;
            }))
            .Returns(1)
            .Verifiable();
            NativeImplementation.Implementation = nativeImplementation.Object;

            using MarketDataFeed mdf = new();
            Assert.IsTrue(mdf.GetNextMessage(out int returnedMref, out int returnedMclass, out ulong returnedInsref));
            Assert.AreEqual((int)MessageReference, returnedMref);
            Assert.AreEqual((int)MessageClass, returnedMclass);
            Assert.AreEqual(InstrumentReference, returnedInsref);

            Assert.IsTrue(mdf.GetNextMessage(out MessageReference returnedMessageReference, out MessageClasses returnedMessageClasses, out returnedInsref));
            Assert.AreEqual(MessageReference, returnedMessageReference);
            Assert.AreEqual(MessageClass, returnedMessageClasses);
            Assert.AreEqual(InstrumentReference, returnedInsref);

            nativeImplementation.Verify();

            nativeImplementation.Setup(x => x.mdf_get_next_message(feedHandle, ref It.Ref <int> .IsAny, ref It.Ref <int> .IsAny, ref It.Ref <ulong> .IsAny))
            .Callback(new GetNextMessageCallback((IntPtr _, ref int mref, ref int mclass, ref ulong insref) =>
            {
                mref   = (int)MessageReference;
                mclass = 20971528;
            }))
            .Returns(1);

            Assert.IsTrue(mdf.GetNextMessage(out returnedMessageReference, out returnedMessageClasses, out _));
            Assert.AreEqual(MessageReference, returnedMessageReference);
            Assert.AreEqual(MessageClasses.MDF_MC_ORDER | MessageClasses.MDF_MC_MBO | MessageClasses.MDF_MC_QUOTEBBO, returnedMessageClasses);

            nativeImplementation.Setup(x => x.mdf_get_next_message(feedHandle, ref It.Ref <int> .IsAny, ref It.Ref <int> .IsAny, ref It.Ref <ulong> .IsAny))
            .Callback(new GetNextMessageCallback((IntPtr _, ref int mref, ref int mclass, ref ulong insref) =>
            {
                mref   = (int)MessageReference;
                mclass = int.MaxValue;
            }))
            .Returns(1);

            Assert.IsTrue(mdf.GetNextMessage(out _, out returnedMessageClasses, out _));
            Assert.AreEqual((MessageClasses)int.MaxValue, returnedMessageClasses);
        }
예제 #3
0
        internal void OnCreatureSpeak(uint statementId, string name, ushort level, MessageClasses type, Location location, string text)
        {
            var creature = client.BattleList.GetCreature(name);

            if (creature == null)
                return;

            creature.Level = level;
            CreatureSpeak.Raise(this, new CreatureSpeakEventArgs { Id = statementId, Creature = creature, Text = text, Type = type, Location = location });
        }
예제 #4
0
        // take an ojbect, return a string
        public string createSignInMsg(MessageClasses.MsgSignIn obj)
        {
            string str = "";

               /// sign in protocol
               /// +------------------------------------+
               /// |<SignIn>:<userName>:<password>:<EOF>|
               /// +------------------------------------+
            str = "<SIGNIN>:<" + obj.getUsername() + ">:<" + obj.getPassword() + ">:<"+obj.nodeInfo+">:<EOF>";
               return str;
        }
예제 #5
0
        // take an ojbect, return a string
        public string createSignUpMsg(MessageClasses.MsgSignUp obj)
        {
            string str = "";

            /// sign up protocol
            /// +------------------------------------+
            /// |<signUp>:<userName>:<password>:<EOF>|
            /// +------------------------------------+
            str = "<SIGNUP>:<" + obj.userName + ">:<" + obj.psw + ">:<"+obj.nodeInfo+">:<EOF>";
            return str;
        }
예제 #6
0
        internal void OnCreatureSpeak(uint statementId, string name, ushort level, MessageClasses type, Location location, string text)
        {
            var creature = client.BattleList.GetCreature(name);

            if (creature == null)
            {
                return;
            }

            creature.Level = level;
            CreatureSpeak.Raise(this, new CreatureSpeakEventArgs {
                Id = statementId, Creature = creature, Text = text, Type = type, Location = location
            });
        }
예제 #7
0
        internal void SendServerSay(string text, MessageClasses type)
        {
            if (!client.LoggedIn)
            {
                return;
            }

            var message = new OutMessage();

            message.WriteByte(0x96);
            message.WriteByte((byte)type);
            message.WriteString(text);

            client.Proxy.SendToServer(message);
        }
        internal void SendServerSay(string text, MessageClasses type)
        {
            if (!client.LoggedIn)
                return;

            var message = new OutMessage();
            message.WriteByte(0x96);
            message.WriteByte((byte)type);
            message.WriteString(text);

            client.Proxy.SendToServer(message);
        }
예제 #9
0
 internal void OnPlayerSpeak(string receiver, ushort channelId, MessageClasses type, string text)
 {
     PlayerSpeak.Raise(this, new PlayerSpeakEventArgs { Receiver = receiver, ChannelId = channelId, Type = type, Text = text });
 }
예제 #10
0
 internal void OnPlayerSpeak(string receiver, ushort channelId, MessageClasses type, string text)
 {
     PlayerSpeak.Raise(this, new PlayerSpeakEventArgs {
         Receiver = receiver, ChannelId = channelId, Type = type, Text = text
     });
 }