Example #1
0
        public void textBoxEnter(TextBox sender)
        {
            if (sender.Text.Length >= this.minLength)
            {
                if (this.textBox.Selected == true)
                {
                    this.textBox.Selected = false;
                }
                else
                {
                    this.obelisk.CustomName = this.textBox.Text;

                    if (Context.IsMainPlayer)
                    {
                        ModEntry.UpdateObeliskCustomName(this.obelisk);
                    }
                    else
                    {
                        // Notify the MasterPlayer of name change
                        var updateMessage = new ObeliskUpdateMessage(this.obelisk);
                        ModEntry.helper.Multiplayer.SendMessage(updateMessage, nameof(ObeliskUpdateMessage), modIDs: new[] { ModEntry.manifest.UniqueID });
                    }
                    this.exitThisMenu();

                    // Paginate the obelisks to order them with the new name
                    this.parentMenu.PaginateObelisks();
                    Game1.activeClickableMenu = this.parentMenu;
                }
            }
        }
Example #2
0
        private void OnModMessageReceived(object sender, ModMessageReceivedEventArgs e)
        {
            if (e.FromModID != this.ModManifest.UniqueID)
            {
                return;
            }

            if (Context.IsMainPlayer)
            {
                if (e.Type == nameof(ObeliskUpdateMessage))
                {
                    ObeliskUpdateMessage message = e.ReadAs <ObeliskUpdateMessage>();

                    Monitor.Log($"Received rename message: {message.Obelisk.CustomName} at {message.Obelisk.LocationName} [{message.Obelisk.Tile.X}, {message.Obelisk.Tile.Y}]", LogLevel.Trace);

                    UpdateObeliskCustomName(message.Obelisk);
                }
                else if (e.Type == nameof(ObeliskTeleportRequestMessage))
                {
                    ObeliskTeleportRequestMessage message = e.ReadAs <ObeliskTeleportRequestMessage>();

                    Monitor.Log($"Received teleport request message from {message.FarmerId} with destination: {message.Obelisk.CustomName} at {message.Obelisk.LocationName} [{message.Obelisk.Tile.X}, {message.Obelisk.Tile.Y}]", LogLevel.Trace);

                    ValidateTeleportDestination(message.Obelisk, message.FarmerId);
                }
            }
            else
            {
                if (e.Type == nameof(ObeliskTeleportStatusMessage))
                {
                    ObeliskTeleportStatusMessage message = e.ReadAs <ObeliskTeleportStatusMessage>();
                    if (message.FarmerId != Game1.player.UniqueMultiplayerID)
                    {
                        return;
                    }

                    Monitor.Log($"Teleport request result: {message.DoTeleport}", LogLevel.Trace);

                    if (message.DoTeleport)
                    {
                        TeleportPlayerToDestination(message.DestinationName, message.DestinationTile);
                        return;
                    }

                    Game1.showRedMessage(Game1.content.LoadString("Strings\\StringsFromCSFiles:MiniObelisk_NeedsSpace"));
                }
            }
        }