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);
                }
            }
        }
示例#2
0
        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);
        }