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); }
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); }
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 }); }
// 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; }
// 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; }
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 }); }
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); }
internal void OnPlayerSpeak(string receiver, ushort channelId, MessageClasses type, string text) { PlayerSpeak.Raise(this, new PlayerSpeakEventArgs { Receiver = receiver, ChannelId = channelId, Type = type, Text = text }); }
internal void OnPlayerSpeak(string receiver, ushort channelId, MessageClasses type, string text) { PlayerSpeak.Raise(this, new PlayerSpeakEventArgs { Receiver = receiver, ChannelId = channelId, Type = type, Text = text }); }