static void Postfix(OptionsCheckbox checkbox) { if (checkbox.whichOption == 33) { checkbox.isChecked = OptionHolder.enableDebugMode; } }
private void InitializeProperties() { if (Game1.activeClickableMenu is GameMenu gameMenu) { foreach (var menu in gameMenu.pages) { if (menu is SocialPage socialPage) { _socialPage = socialPage; _friendNames = _socialPage.names .Select(name => name.ToString()) .ToArray(); break; } } _townsfolk.Clear(); foreach (var location in Game1.locations) { foreach (var npc in location.characters) { if (Game1.player.friendshipData.ContainsKey(npc.Name)) { _townsfolk.Add(npc); } } } _checkboxes.Clear(); foreach (var friendName in _friendNames) { int hashCode = friendName.GetHashCode(); OptionsCheckbox checkbox = new OptionsCheckbox("", hashCode); _checkboxes.Add(checkbox); //default to on bool optionForThisFriend = true; if (!Game1.player.friendshipData.ContainsKey(friendName)) { checkbox.greyedOut = true; optionForThisFriend = false; } else { string optionValue = _options.SafeGet(hashCode.ToString()); if (string.IsNullOrEmpty(optionValue)) { _options[hashCode.ToString()] = optionForThisFriend.ToString(); } else { optionForThisFriend = optionValue.SafeParseBool(); } } checkbox.isChecked = optionForThisFriend; } } }
/// <summary> /// Resets and populates the list of townsfolk and checkboxes to display every time the game menu is called /// </summary> private void onMenuChange(object sender, EventArgsClickableMenuChanged e) { if (!(Game1.activeClickableMenu is GameMenu)) { return; } // Get pages from GameMenu var pages = (List <IClickableMenu>) typeof(GameMenu).GetField("pages", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(Game1.activeClickableMenu); // Save variables needed for mod for (int k = 0; k < pages.Count; k++) { if (pages[k] is SocialPage) { socialPage = ( SocialPage )pages[k]; friendNames = (List <ClickableTextureComponent>) typeof(SocialPage).GetField("friendNames", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(pages[k]); } } townsfolk.Clear(); foreach (GameLocation location in Game1.locations) { foreach (NPC npc in location.characters) { if (Game1.player.friendships.ContainsKey(npc.name)) { townsfolk.Add(npc); } } } checkboxes.Clear(); // Create checkboxes in the same order as friends are foreach (ClickableTextureComponent friend in friendNames) { int optionIndex = friend.name.GetHashCode(); var checkbox = new OptionsCheckbox("", optionIndex); checkboxes.Add(checkbox); // Disable checkbox if player has not talked to npc yet if (!(Game1.player.friendships.ContainsKey(friend.name))) { checkbox.greyedOut = true; checkbox.isChecked = false; } // Ensure an entry exists if (ModEntry.modData.locationOfTownsfolkOptions.ContainsKey(optionIndex) == false) { ModEntry.modData.locationOfTownsfolkOptions.Add(optionIndex, false); } checkbox.isChecked = ModEntry.modData.locationOfTownsfolkOptions[optionIndex]; } }
private void ExtendMenuIfNeeded() { if (Game1.activeClickableMenu is GameMenu) { List <IClickableMenu> clickableMenuList = typeof(GameMenu) .GetField("pages", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue(Game1.activeClickableMenu) as List <IClickableMenu>; foreach (var menu in clickableMenuList) { if (menu is SocialPage) { _socialPage = menu as SocialPage; _friendNames = (typeof(SocialPage).GetField("names", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(menu) as List <object>) .Select(name => name.ToString()) .ToArray(); break; } } _townsfolk.Clear(); foreach (var location in Game1.locations) { foreach (var npc in location.characters) { if (Game1.player.friendshipData.ContainsKey(npc.Name)) { _townsfolk.Add(npc); } } } _checkboxes.Clear(); foreach (var friendName in _friendNames) { int which = Array.IndexOf(_friendNames, friendName) + which_offset; OptionsCheckbox checkbox = new OptionsCheckbox("", which); _checkboxes.Add(checkbox); bool optionForThisFriend = true; // default is show in menu if (Game1.player.friendshipData.ContainsKey(friendName)) { if (_options.TryGetValue(OptionKey(friendName), out string value) && bool.TryParse(value, out bool result)) { optionForThisFriend = result; } } else { checkbox.greyedOut = true; optionForThisFriend = false; } checkbox.isChecked = optionForThisFriend; } } }
private void ExtendMenuIfNeeded() { if (Game1.activeClickableMenu is GameMenu gameMenu) { foreach (var menu in gameMenu.pages) { if (menu is SocialPage socialPage) { _socialPage = socialPage; _friendNames = _socialPage.names .Select(name => name.ToString()) .ToArray(); break; } } _checkboxes.Clear(); foreach (var friendName in _friendNames) { var hashCode = friendName.GetHashCode(); var checkbox = new OptionsCheckbox("", hashCode); _checkboxes.Add(checkbox); //default to on var optionForThisFriend = true; if (!Game1.player.friendshipData.ContainsKey(friendName)) { checkbox.greyedOut = true; optionForThisFriend = false; } else { var optionValue = _options.SafeGet(hashCode.ToString()); if (string.IsNullOrEmpty(optionValue)) { _options[hashCode.ToString()] = optionForThisFriend.ToString(); } else { optionForThisFriend = optionValue.SafeParseBool(); } } checkbox.isChecked = optionForThisFriend; } } }
private void CheckSelectedBox() { int slotPosition = (int)typeof(SocialPage) .GetField("slotPosition", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue(_socialPage); for (int i = slotPosition; i < slotPosition + 5; ++i) { OptionsCheckbox checkbox = _checkboxes[i]; if (checkbox.bounds.Contains(Game1.getMouseX(), Game1.getMouseY()) && !checkbox.greyedOut) { checkbox.isChecked = !checkbox.isChecked; _options[checkbox.whichOption.ToString()] = checkbox.isChecked.ToString(); Game1.playSound("drumkit6"); } } }
private void DrawSocialPageOptions() { Game1.drawDialogueBox(Game1.activeClickableMenu.xPositionOnScreen - SocialPanelXOffset, Game1.activeClickableMenu.yPositionOnScreen, SocialPanelWidth, Game1.activeClickableMenu.height, false, true); int slotPosition = (int)typeof(SocialPage) .GetField("slotPosition", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue(_socialPage); int yOffset = 0; for (int i = slotPosition; i < slotPosition + 5 && i < _friendNames.Length; ++i) { OptionsCheckbox checkbox = _checkboxes[i]; checkbox.bounds.X = Game1.activeClickableMenu.xPositionOnScreen - 60; checkbox.bounds.Y = Game1.activeClickableMenu.yPositionOnScreen + 130 + yOffset; checkbox.draw(Game1.spriteBatch, 0, 0); yOffset += 112; Color color = checkbox.isChecked ? Color.White : Color.Gray; Game1.spriteBatch.Draw(Game1.mouseCursors, new Vector2(checkbox.bounds.X - 50, checkbox.bounds.Y), new Rectangle(80, 0, 16, 16), color, 0.0f, Vector2.Zero, 3f, SpriteEffects.None, 1f); if (yOffset != 560) { // draw seperator line Game1.spriteBatch.Draw(Game1.staminaRect, new Rectangle(checkbox.bounds.X - 50, checkbox.bounds.Y + 72, SocialPanelWidth / 2 - 6, 4), Color.SaddleBrown); Game1.spriteBatch.Draw(Game1.staminaRect, new Rectangle(checkbox.bounds.X - 50, checkbox.bounds.Y + 76, SocialPanelWidth / 2 - 6, 4), Color.BurlyWood); } if (!Game1.options.hardwareCursor) { Game1.spriteBatch.Draw(Game1.mouseCursors, new Vector2(Game1.getMouseX(), Game1.getMouseY()), Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, Game1.mouseCursor, 16, 16), Color.White, 0.0f, Vector2.Zero, Game1.pixelZoom + (Game1.dialogueButtonScale / 150.0f), SpriteEffects.None, 1f); } if (checkbox.bounds.Contains(Game1.getMouseX(), Game1.getMouseY())) { IClickableMenu.drawHoverText(Game1.spriteBatch, "Track on map", Game1.dialogueFont); } } }
private void CheckSelectedBox(ButtonPressedEventArgs e) { int slotPosition = (int)typeof(SocialPage) .GetField("slotPosition", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue(_socialPage); for (int i = slotPosition; i < slotPosition + 5; ++i) { OptionsCheckbox checkbox = _checkboxes[i]; var rect = new Rectangle(checkbox.bounds.X, checkbox.bounds.Y, checkbox.bounds.Width, checkbox.bounds.Height); if (e.Button == SButton.ControllerX) { rect.Width += SocialPanelWidth + Game1.activeClickableMenu.width; } if (rect.Contains((int)Utility.ModifyCoordinateForUIScale(Game1.getMouseX()), (int)Utility.ModifyCoordinateForUIScale(Game1.getMouseY())) && !checkbox.greyedOut) { checkbox.isChecked = !checkbox.isChecked; _options.ShowLocationOfFriends[_friendNames[checkbox.whichOption]] = checkbox.isChecked; Game1.playSound("drumkit6"); } } }
private void InitializeProperties() { if (Game1.activeClickableMenu is GameMenu gameMenu) { foreach (var menu in gameMenu.pages) { if (menu is SocialPage socialPage) { _socialPage = socialPage; _friendNames = _socialPage.names .Select(name => name.ToString()) .ToArray(); break; } } _checkboxes.Clear(); for (int i = 0; i < _friendNames.Length; i++) { var friendName = _friendNames[i]; OptionsCheckbox checkbox = new OptionsCheckbox("", i); if (Game1.player.friendshipData.ContainsKey(friendName)) { // npc checkbox.greyedOut = false; checkbox.isChecked = _options.ShowLocationOfFriends.SafeGet(friendName, true); } else { // player checkbox.greyedOut = true; checkbox.isChecked = true; } _checkboxes.Add(checkbox); } } }
private void ExtendMenuIfNeeded() { if (Game1.activeClickableMenu is GameMenu) { List <IClickableMenu> clickableMenuList = typeof(GameMenu) .GetField("pages", BindingFlags.Instance | BindingFlags.NonPublic) .GetValue(Game1.activeClickableMenu) as List <IClickableMenu>; foreach (var menu in clickableMenuList) { if (menu is SocialPage) { _socialPage = menu as SocialPage; _friendNames = (typeof(SocialPage).GetField("names", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(menu) as List <object>) .Select(name => name.ToString()) .ToArray(); break; } } _townsfolk.Clear(); foreach (var location in Game1.locations) { foreach (var npc in location.characters) { if (Game1.player.friendshipData.ContainsKey(npc.Name)) { _townsfolk.Add(npc); } } } _checkboxes.Clear(); foreach (var friendName in _friendNames) { int hashCode = friendName.GetHashCode(); OptionsCheckbox checkbox = new OptionsCheckbox("", hashCode); _checkboxes.Add(checkbox); //default to on bool optionForThisFriend = true; if (!Game1.player.friendshipData.ContainsKey(friendName)) { checkbox.greyedOut = true; optionForThisFriend = false; } else { String optionValue = _options.SafeGet(hashCode.ToString()); if (String.IsNullOrEmpty(optionValue)) { _options[hashCode.ToString()] = optionForThisFriend.ToString(); } else { optionForThisFriend = optionValue.SafeParseBool(); } } checkbox.isChecked = optionForThisFriend; } } }
public void setCheckBoxToProperValue(OptionsCheckbox checkbox) { switch (checkbox.whichOption) { case 0: checkbox.isChecked = this.autoRun; break; case 3: checkbox.isChecked = this.dialogueTyping; break; case 4: this.windowedBorderlessFullscreen = Control.FromHandle(Program.gamePtr.Window.Handle).FindForm().FormBorderStyle == FormBorderStyle.None; this.fullscreen = Game1.graphics.IsFullScreen || this.windowedBorderlessFullscreen; checkbox.isChecked = this.fullscreen; break; case 5: checkbox.isChecked = this.windowedBorderlessFullscreen; checkbox.greyedOut = !this.fullscreen; break; case 7: checkbox.isChecked = this.showPortraits; break; case 8: checkbox.isChecked = this.showMerchantPortraits; break; case 9: checkbox.isChecked = this.showMenuBackground; break; case 10: checkbox.isChecked = this.playFootstepSounds; break; case 11: checkbox.isChecked = this.alwaysShowToolHitLocation; break; case 12: checkbox.isChecked = this.hideToolHitLocationWhenInMotion; break; case 14: checkbox.isChecked = this.pauseWhenOutOfFocus; break; case 15: checkbox.isChecked = this.pinToolbarToggle; break; case 16: checkbox.isChecked = this.rumble; checkbox.greyedOut = !this.gamepadControls; break; case 17: checkbox.isChecked = this.ambientOnlyToggle; break; case 19: checkbox.isChecked = this.zoomButtons; break; case 22: checkbox.isChecked = this.invertScrollDirection; break; case 24: checkbox.isChecked = this.screenFlash; break; case 26: checkbox.isChecked = this.hardwareCursor; checkbox.greyedOut = this.fullscreen; break; case 27: checkbox.isChecked = this.showPlacementTileForGamepad; checkbox.greyedOut = !this.gamepadControls; break; case 29: checkbox.isChecked = this.snappyMenus; break; } }