public static void ReceiveEmojisTextureDataList(this Multiplayer multiplayer, IncomingMessage msg) { if (Game1.IsMultiplayer && msg.Data.Length > 0) { long uniqueMultiplayerID = msg.Reader.ReadInt64(); ReceivedEmojiTextureDataEventArgs args = new ReceivedEmojiTextureDataEventArgs { SourceFarmer = msg.SourceFarmer, TextureDataList = DataSerialization.Deserialize <List <TextureData> >(msg.Reader.BaseStream) }; if (Game1.player.UniqueMultiplayerID == uniqueMultiplayerID) { OnReceiveEmojiTextureData(null, args); } else if (Game1.IsServer) { multiplayer.SendEmojisTextureDataList(uniqueMultiplayerID, args.TextureDataList); } } }
private void MultiplayerExtension_OnReceiveEmojiTextureData(object sender, ReceivedEmojiTextureDataEventArgs e) { // Get all synched data IEnumerable <TextureData> synchedData = SynchronizedPlayerTextureData.Values.SelectMany(x => x); // Get only the different textures e.TextureDataList = e.TextureDataList.Except(synchedData).ToList(); // Add the different textures obtained SynchronizedPlayerTextureData[e.SourceFarmer.UniqueMultiplayerID] = e.TextureDataList; CurrentTexture = MergeTextures(VanillaTexture, synchedData); UpdateTotalEmojis(TotalNumberEmojis + e.TextureDataList.Count); // Replace with the new texture modHelper.Reflection.GetField <Texture2D>(Game1.chatBox.emojiMenu, "emojiTexture").SetValue(CurrentTexture); ChatBox.emojiTexture = CurrentTexture; // Update client textures Multiplayer multiplayer = modHelper.Reflection.GetField <Multiplayer>(typeof(Game1), "multiplayer").GetValue(); multiplayer.BroadcastEmojiTexture(CurrentTexture, TotalNumberEmojis); }