static void Postfix(OptionsCheckbox checkbox)
 {
     if (checkbox.whichOption == 33)
     {
         checkbox.isChecked = OptionHolder.enableDebugMode;
     }
 }
Exemple #2
0
        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;
                }
            }
        }
Exemple #5
0
        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;
                }
            }
        }
Exemple #6
0
        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");
                }
            }
        }
Exemple #7
0
        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);
                }
            }
        }
Exemple #8
0
        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");
                }
            }
        }
Exemple #9
0
        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;
                }
            }
        }
Exemple #11
0
        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;
            }
        }