public override void Entry(IModHelper helper) { helper.Events.GameLoop.SaveLoaded += GameLoop_SaveLoaded; helper.Events.GameLoop.DayEnding += GameLoop_DayEnding; helper.Events.Input.ButtonPressed += Input_ButtonPressed; helper.Events.Multiplayer.ModMessageReceived += Multiplayer_ModMessageReceived; config = Helper.ReadConfig <ModConfig>(); rules = new TCDRules(config); }
private void Multiplayer_ModMessageReceived(object sender, ModMessageReceivedEventArgs e) { if (e.FromModID == ModManifest.UniqueID) { playerEntry receivedEntry = e.ReadAs <playerEntry>(); if (Game1.IsMasterGame) { // master: received entry request from slave if (e.Type == "TCDentryRequest") { Helper.Multiplayer.SendMessage(getEntryWithName(receivedEntry.Name), "TCDentry", new[] { ModManifest.UniqueID }); } // master: received rules request from slave if (e.Type == "TCDruleRequest") { Helper.Multiplayer.SendMessage(rules, "TCDrules", new[] { ModManifest.UniqueID }); } // master: received entry set request from slave if (e.Type == "TCDentrySet") { addOrUpdateEntry(receivedEntry); } } else { // slave: received entry from master if (e.Type == "TCDentry" && receivedEntry.Name == Game1.player.Name) { currentEntry = receivedEntry; entryReceived = true; if (currentEntry.emptyPos) { currentEntry.customPos = null; } if (waitingToWarp) { waitingToWarp = false; } Warp(); } // slave: received rules from master if (e.Type == "TCDrules") { rules = e.ReadAs <TCDRules>(); } } } }