private void Multiplayer_PeerConnected(object?sender, StardewModdingAPI.Events.PeerConnectedEventArgs e)
        {
            if (Context.IsMainPlayer)
            {
                pauseTimeAll[e.Peer.PlayerID] = "false";
                inSkullAll[e.Peer.PlayerID]   = "false";
                votePauseAll[e.Peer.PlayerID] = false;
                eventStatus[e.Peer.PlayerID]  = false;

                //send current pause state
                this.Helper.Multiplayer.SendMessage(shouldPauseLast ? "true" : "false", "pauseCommand", new[] { this.ModManifest.UniqueID }, new[] { e.Peer.PlayerID });

                //send message denoting whether or not monsters will be locked
                this.Helper.Multiplayer.SendMessage(lockMonsters ? "true" : "false", "lockMonsters", modIDs: new[] { this.ModManifest.UniqueID }, playerIDs: new[] { e.Peer.PlayerID });


                //check for version match
                IMultiplayerPeerMod pauseMod = null;
                pauseMod = e.Peer.GetMod(this.ModManifest.UniqueID);
                if (pauseMod == null)
                {
                    Game1.chatBox.addErrorMessage("Farmhand " + Game1.getFarmer(e.Peer.PlayerID).Name + " does not have Pause in Multiplayer mod.");
                }
                else if (!pauseMod.Version.Equals(this.ModManifest.Version))
                {
                    Game1.chatBox.addErrorMessage("Farmhand " + Game1.getFarmer(e.Peer.PlayerID).Name + " has mismatched Pause in Multiplayer version.");
                    Game1.chatBox.addErrorMessage($"Host Version: {this.ModManifest.Version} | {Game1.getFarmer(e.Peer.PlayerID).Name} Version: {pauseMod.Version}");
                }

                //sets the joined player's vote to pause as the host's if enabled
                if (this.config.JoinVoteMatchesHost && this.config.EnableVotePause)
                {
                    votePauseAll[e.Peer.PlayerID] = votePause;

                    //sync votePause to local client for joining player
                    this.Helper.Multiplayer.SendMessage <bool>(votePause, "setVotePause", new[] { this.ModManifest.UniqueID }, new[] { e.Peer.PlayerID });

                    int votedYes = 0;
                    foreach (bool vote in votePauseAll.Values)
                    {
                        if (vote)
                        {
                            votedYes++;
                        }
                    }

                    if (votePause)
                    {
                        this.Helper.Multiplayer.SendMessage <string>($"{Game1.getFarmer(e.Peer.PlayerID).Name} joined with a vote to pause. ({votedYes}/{Game1.getOnlineFarmers().Count})", "info", new[] { this.ModManifest.UniqueID });
                        Game1.chatBox.addInfoMessage($"{Game1.getFarmer(e.Peer.PlayerID).Name} joined with a vote to pause. ({votedYes}/{Game1.getOnlineFarmers().Count})");
                    }
                    else
                    {
                        //seems unnecessary to display message for joining without a votepause via host
                        //this.Helper.Multiplayer.SendMessage<string>($"{Game1.getFarmer(e.Peer.PlayerID).Name} joined with a vote to unpause. ({votedYes}/{Game1.getOnlineFarmers().Count})", "info", new[] { this.ModManifest.UniqueID });
                        //Game1.chatBox.addInfoMessage($"{Game1.getFarmer(e.Peer.PlayerID).Name} joined with a vote to unpause. ({votedYes}/{Game1.getOnlineFarmers().Count})");
                    }
                }
            }
        }
Beispiel #2
0
        private void OnPeerConnected(object sender, StardewModdingAPI.Events.PeerConnectedEventArgs e)
        {
            if (!Context.IsMainPlayer)
            {
                return;
            }

            Helper.Multiplayer.SendMessage(CoreManager.Instance.saveManager.session, sessionDataKey, toModIDs, new[] { e.Peer.PlayerID });
        }
 private void Multiplayer_PeerConnected(object sender, StardewModdingAPI.Events.PeerConnectedEventArgs e)
 {
     if (!e.Peer.IsHost)
     {
         // Send Settings update package
         if (e.Peer.HasSmapi)
         {
             Monitor.Log(string.Format("Sending mod settings to newly connected peer with ID: {0}, GameVersion {1} and SMAPIVersion {2}.", e.Peer.PlayerID, e.Peer.GameVersion, e.Peer.ApiVersion));
             Helper.Multiplayer.SendMessage(Settings.Local, MultiplayerSettingsMessageType, new string[] { CurrentModId }, new long[] { e.Peer.PlayerID });
         }
         else
         {
             Monitor.Log(string.Format("Connected peer {0} doesnt have SMAPI installed, hence the mod settings could not be synced.", e.Peer.PlayerID));
         }
     }
 }