public void AddPlayerToGroups(F3_NetPlayerInfo player) { long uuid = player.GetPlayerUUID(); string defaultGroup = player.GetPlayerDefaultGroup(); if (!m_registeredGroups.ContainsKey(defaultGroup)) { m_registeredGroups.Add(defaultGroup, new List<long>()); } m_registeredGroups[defaultGroup].Add(uuid); string guildGroup = player.GetPlayerGuild(); if (guildGroup != F3_NetCommonConstants.INVALID_GUILD) { if (!m_registeredGroups.ContainsKey(guildGroup)) { m_registeredGroups.Add(guildGroup, new List<long>()); } m_registeredGroups[guildGroup].Add(uuid); } List<string> privateGroups = player.GetPlayerPrivateGroups(); for (int i = 0; i < privateGroups.Count; i++) { string group = privateGroups[i]; if (!m_registeredGroups.ContainsKey(group)) { m_registeredGroups.Add(group, new List<long>()); } m_registeredGroups[group].Add(uuid); } }
public F3_NetPlayerInfo FindPlayerByUUID(long uuid) { if (uuid == F3_NetCommonConstants.SENDER_GM) { F3_NetPlayerInfo gmInfo = new F3_NetPlayerInfo(uuid); gmInfo.SetPlayerName("Game_Master"); return gmInfo; } if (m_connectedPlayers.ContainsKey(uuid)) { return m_connectedPlayers[uuid]; } return null; }
public void ConnectPlayer(long uuid, F3_NetPlayerInfo player) { m_connectedPlayers.Add(uuid, player); }
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); } } }