public void SyncTextureData(Farmer farmer) { if (Context.IsMultiplayer) { long multiplayerID = Game1.player.UniqueMultiplayerID; if (!SynchronizedPlayerTextureData.ContainsKey(multiplayerID)) { SynchronizedPlayerTextureData[multiplayerID] = LoadedTextureData; } Multiplayer multiplayer = modHelper.Reflection.GetField <Multiplayer>(typeof(Game1), "multiplayer").GetValue(); if (Game1.IsMasterGame) { if (this.allowClientEmojis) { multiplayer.RequestEmojiTexture(farmer); } else { multiplayer.BroadcastEmojiTexture(CurrentTexture, TotalNumberEmojis); } } else { multiplayer.SendEmojisTextureDataList(farmer, LoadedTextureData); } } }
private void MultiplayerExtension_OnPlayerDisconnected(object sender, PlayerDisconnectedEventArgs e) { #if DEBUG ModEntry.ModLogger.LogTrace(); #endif if (SynchronizedPlayerTextureData.ContainsKey(e.Player.UniqueMultiplayerID)) { UpdateTotalEmojis(TotalNumberEmojis - SynchronizedPlayerTextureData[e.Player.UniqueMultiplayerID].Count); SynchronizedPlayerTextureData.Remove(e.Player.UniqueMultiplayerID); } CurrentTexture = MergeTextures(VanillaTexture, SynchronizedPlayerTextureData.Values); // Replace with the new texture modHelper.Reflection.GetField <Texture2D>(Game1.chatBox.emojiMenu, "emojiTexture").SetValue(CurrentTexture); ChatBox.emojiTexture = CurrentTexture; //Game1.chatBox.emojiMenu.receiveScrollWheelAction(1); //Game1.chatBox.emojiMenu.receiveScrollWheelAction(-1); // Update client textures Multiplayer multiplayer = modHelper.Reflection.GetField <Multiplayer>(typeof(Game1), "multiplayer").GetValue(); multiplayer.BroadcastEmojiTexture(CurrentTexture, TotalNumberEmojis); }
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); }