public void AddCommand(NetCommand cmd) { m_commands.Enqueue(cmd); }
public override void OnDataReceived(NetIncomingMessage incMsg) { NetDataType type = (NetDataType)incMsg.ReadByte(); long uuid = incMsg.SenderConnection.RemoteUniqueIdentifier; if (type == NetDataType.eDATA_AUTHENTICATION) { string name = incMsg.ReadString(); string guild = incMsg.ReadString(); string defaultgroup = incMsg.ReadString(); int nbGroups = incMsg.ReadInt32(); List<string> groups = new List<string>(); for (int i = 0; i < nbGroups; i++) { string group = incMsg.ReadString(); groups.Add(group); } F3_NetPlayerInfo player = new F3_NetPlayerInfo(uuid); player.SetPlayerName(name); player.SetPlayerGuild(guild); player.SetPlayerDefaultGroup(defaultgroup); player.SetPlayerPrivateGroups(groups); ConnectPlayer(uuid, player); AddPlayerToGroups(player); F3_ChatLine newLine = new F3_ChatLine(); newLine.m_senderUUID = uuid; newLine.m_bIsConnecting = true; AddMessage(newLine); if (NotifyGroupOnStatusChangedEnabled() && guild != F3_NetCommonConstants.INVALID_GUILD) { NotifyGroup(uuid, guild, newLine.m_msg, true); } } if (type == NetDataType.eDATA_MSG_TO_ALL) { F3_ChatLine newLine = new F3_ChatLine(); newLine.m_senderUUID = uuid; newLine.m_msg = incMsg.ReadString(); //Broadcast the message to everyone. NotifyEveryone(uuid, newLine.m_msg); AddMessage(newLine); } if (type == NetDataType.eDATA_PRIVATE_MSG) { F3_ChatLine newLine = new F3_ChatLine(); newLine.m_senderUUID = uuid; newLine.m_receiver = incMsg.ReadString(); newLine.m_bIsPrivate = true; newLine.m_msg = incMsg.ReadString(); //Broadcast the message to everyone. if (Notify(uuid, newLine.m_receiver, newLine.m_msg)) { AddMessage(newLine); } } if (type == NetDataType.eDATA_GROUP_MSG) { F3_ChatMessage_Group msg = new F3_ChatMessage_Group(); msg.FromNetMsg(incMsg); F3_ChatLine newLine = new F3_ChatLine(); newLine.m_senderUUID = uuid; newLine.m_receiver = msg.GetGroup(); newLine.m_bIsGroupMsg = true; newLine.m_msg = msg.GetMessage(); //Broadcast the message to everyone. if (NotifyGroup(uuid, newLine.m_receiver, newLine.m_msg, false)) { AddMessage(newLine); } } if (type == NetDataType.eDATA_EXTERNAL_COMMAND) { NetCommandIDs cmdId = (NetCommandIDs)incMsg.ReadByte(); if (cmdId != NetCommandIDs.eCMD_INVALID) { NetCommand newCmd = new NetCommand(cmdId); switch (cmdId) { case NetCommandIDs.eCMD_PM_GM: { string text = incMsg.ReadString(); F3_ChatLine newLine = new F3_ChatLine(); newLine.m_senderUUID = uuid; newLine.m_receiver = "GM"; newLine.m_msg = text; newLine.m_bIsPrivate = true; newLine.m_bIsGameMaster = true; AddMessage(newLine); newLine.m_senderUUID = FindPlayerByUUID(uuid).GetPlayerUUID(); newCmd.SetUserData(newLine); break; } //case NetCommandIDs.eCMD_SHUTDOWN: //No User Data for now. Could add NetworkShutdownSequence perhaps. default: { Console.WriteLine("Unrecognized Command"); break; } } AddCommand(newCmd); } } }