public static void Input_ButtonPressed(object sender, ButtonPressedEventArgs e) { if (Game1.player == null || Game1.player.currentLocation == null) { ModEntry.myButtonDown = false; return; } if (false && e.Button == SButton.Q) { SwimUtils.SeaMonsterSay("The quick brown fox jumped over the slow lazy dog."); } if (Game1.activeClickableMenu != null && Game1.player.currentLocation.Name == "ScubaCrystalCave" && Game1.player.currentLocation.lastQuestionKey.StartsWith("SwimMod_Mariner_")) { IClickableMenu menu = Game1.activeClickableMenu; if (menu == null || menu.GetType() != typeof(DialogueBox)) { return; } int resp = (int)typeof(DialogueBox).GetField("selectedResponse", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(menu); List <Response> resps = (List <Response>) typeof(DialogueBox).GetField("responses", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(menu); if (resp < 0 || resps == null || resp >= resps.Count || resps[resp] == null) { return; } Game1.player.currentLocation.lastQuestionKey = ""; SwimDialog.OldMarinerDialogue(resps[resp].responseKey); return; } if (false && e.Button == SButton.Q) { var v1 = Game1.game1; return; //Game1.player.currentLocation.overlayObjects[Game1.player.getTileLocation() + new Vector2(0, 1)] = new Chest(0, new List<Item>() { Helper.Input.IsDown(SButton.LeftShift) ? (Item)(new StardewValley.Object(434, 1)) : (new Hat(ModEntry.scubaMaskID)) }, Game1.player.getTileLocation() + new Vector2(0, 1), false, 0); } if (e.Button == Config.DiveKey && ModEntry.diveMaps.ContainsKey(Game1.player.currentLocation.Name) && ModEntry.diveMaps[Game1.player.currentLocation.Name].DiveLocations.Count > 0) { Point pos = Game1.player.getTileLocationPoint(); Location loc = new Location(pos.X, pos.Y); if (!SwimUtils.IsInWater()) { return; } DiveMap dm = ModEntry.diveMaps[Game1.player.currentLocation.Name]; DiveLocation diveLocation = null; foreach (DiveLocation dl in dm.DiveLocations) { if (dl.GetRectangle().X == -1 || dl.GetRectangle().Contains(loc)) { diveLocation = dl; break; } } if (diveLocation == null) { Monitor.Log($"No dive destination for this point on this map", LogLevel.Debug); return; } if (Game1.getLocationFromName(diveLocation.OtherMapName) == null) { Monitor.Log($"Can't find destination map named {diveLocation.OtherMapName}", LogLevel.Warn); return; } Monitor.Log($"warping to {diveLocation.OtherMapName}", LogLevel.Debug); SwimUtils.DiveTo(diveLocation); return; } if (e.Button == Config.SwimKey && (!Game1.player.swimming || !Config.ReadyToSwim) && !isJumping) { Config.ReadyToSwim = !Config.ReadyToSwim; Helper.WriteConfig <ModConfig>(Config); Monitor.Log($"Ready to swim: {Config.ReadyToSwim}"); return; } if (e.Button == Config.SwimSuitKey) { Config.SwimSuitAlways = !Config.SwimSuitAlways; Helper.WriteConfig <ModConfig>(Config); if (!Game1.player.swimming) { if (!Config.SwimSuitAlways) { Game1.player.changeOutOfSwimSuit(); } else { Game1.player.changeIntoSwimsuit(); } } return; } }