Exemple #1
0
        private void OnClientConnected(object sender, PeerConnectedEventArgs e)
        {
            if (Context.IsMainPlayer && e.Peer.Mods.Any(m => m.ID == this.modManifest.UniqueID))
            {
                var store = new QuestStateStoreData
                {
                    { e.Peer.PlayerID, this.questStateStore.GetPayloadList(e.Peer.PlayerID) }
                };
                var stats   = this.statsManager.GetStats();
                var message = new InitalMessage(this.questController.GetQuestIds(), store, stats);

                this.helper.SendMessage(
                    message, "Init", new[] { this.modManifest.UniqueID }, new[] { e.Peer.PlayerID });
                this.monitor.Log($"Sent quests initial state to {e.Peer.PlayerID}");
            }
        }
        private void OnClientConnected(object sender, PeerConnectedEventArgs e)
        {
            if (!Context.IsMainPlayer)
            {
                return;
            }

            if (e.Peer.HasSmapi)
            {
                this.monitor.Log($"Peer connected: {e.Peer.PlayerID} on SMAPI {e.Peer.ApiVersion.ToString()} game version {e.Peer.GameVersion} platform {e.Peer.PlayerID}");
            }
            else
            {
                this.monitor.Log($"Peer connected: {e.Peer.PlayerID} on pure vanilla SDV");
            }

            var qfModPeer = e.Peer.GetMod(this.modManifest.UniqueID);

            if (qfModPeer == null)
            {
                this.monitor.Log($"Connected remote peer {e.Peer.PlayerID} doesn't run on SMAPI or they haven't installed the Quest Framework.", LogLevel.Warn);
                this.monitor.Log($"Unable to send QF shake message to: {e.Peer.PlayerID} (mismatch versions or dependencies)", LogLevel.Error);

                return;
            }

            if (qfModPeer.Version.IsOlderThan(this.modManifest.Version))
            {
                this.monitor.Log($"Remote peer {e.Peer.PlayerID} is running on outdated Quest Framework {qfModPeer.Version}", LogLevel.Warn);
            }
            else
            {
                this.monitor.Log($"Remote peer {e.Peer.PlayerID} is running on Quest Framework {qfModPeer.Version}");
            }

            var store = new QuestStateStoreData
            {
                { e.Peer.PlayerID, this.questStateStore.GetPayloadList(e.Peer.PlayerID) }
            };
            var stats   = this.statsManager.GetStats();
            var message = new InitalMessage(this.questController.GetQuestIds(), store, stats);

            this.helper.SendMessage(
                message, "Init", new[] { this.modManifest.UniqueID }, new[] { e.Peer.PlayerID });
            this.monitor.Log($"Sent quests initial state to {e.Peer.PlayerID}");
        }
Exemple #3
0
 public InitalMessage(Dictionary <string, int> questIds, QuestStateStoreData store, Dictionary <long, Stats.Stats> questStats)
 {
     this.QuestIdList = questIds;
     this.InitalStore = store;
     this.QuestStats  = questStats;
 }
 public void RestoreData(QuestStateStoreData data)
 {
     this.Store = data;
     this.Monitor.Log("Quests store data was restored from given payload.");
 }