/// <summary>Perform the action associated with a component.</summary> /// <param name="cpt">The component.</param> /// <return>whether the component action is processed</return> public override bool handleLeftClick(IAutoComponent cpt) { switch (cpt.m_name) { case "Save": if (m_currentFav > -1) { m_farmerMakeup.SaveFavorite(m_currentFav + 1); m_extraFavButtons[m_currentFav - 6].sourceRect.Y = 26; m_alerts.Add(new Alert(Game1.mouseCursors, new Rectangle(310, 392, 16, 16), Game1.viewport.Width / 2 - (700 + IClickableMenu.borderWidth * 2) / 2, Game1.viewport.Height / 2 - (500 + IClickableMenu.borderWidth * 2) / 2, "Favorite Saved To Slot " + (m_currentFav + 1) + " .", 1200, false)); Game1.playSound("purchase"); } return(true); case "Load": if (m_currentFav > -1) { if (m_farmerMakeup.LoadFavorite(m_currentFav + 1)) { Game1.playSound("yoba"); } else { m_alerts.Add(new Alert(Game1.mouseCursors, new Rectangle(268, 470, 16, 16), Game1.viewport.Width / 2 - (700 + IClickableMenu.borderWidth * 2) / 2, Game1.viewport.Height / 2 - (500 + IClickableMenu.borderWidth * 2) / 2, "Uh oh! No Favorite is Set!", 1000, false)); } } return(true); case "Fav": ClickableTextureButton btn = (ClickableTextureButton)cpt; int i = btn.m_par; if (m_currentFav == -1) { m_selectFavLabel.visible = false; m_saveLabel.visible = true; m_loadLabel.visible = true; m_saveFavButton.visible = true; m_loadFavButton.visible = true; } else { m_extraFavButtons[m_currentFav - 6].drawShadow = false; } m_extraFavButtons[i].drawShadow = true; m_currentFav = i + 6; m_saveLabel.label = "Currently selected: " + (m_currentFav + 1) + "."; return(true); default: return(false); } }
/// <summary>Perform the action associated with a component.</summary> /// <param name="cpt">The component.</param> /// <return>whether the component action is processed</return> public override bool handleLeftClick(IAutoComponent cpt) { switch (cpt.m_name) { case "QFav": ClickableTextureButton btn = (ClickableTextureButton)cpt; m_farmerMakeup.SaveFavorite(btn.m_par + 1); this.m_alerts.Add(new Alert(Game1.mouseCursors, new Rectangle(310, 392, 16, 16), Game1.viewport.Width / 2 - (700 + IClickableMenu.borderWidth * 2) / 2, Game1.viewport.Height / 2 - (500 + IClickableMenu.borderWidth * 2) / 2, "New Favorite Saved.", 1200, false)); Game1.playSound("purchase"); return(true); default: return(false); } }
/// <summary>construct a ganeral value selector.</summary> private void selectorLayout(int xBase, int[] selectorOffset, int y, string name, string label, string value) { ClickableTextureButton b; b = new ClickableTextureButton(name, new Rectangle(xBase + selectorOffset[0], y, Game1.tileSize, Game1.tileSize), "", "", Game1.mouseCursors, Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, 44), 0.75f) { m_par = -1, m_hoverScale = 0.1f }; m_components.Add(b); LabelComponent l; l = new LabelComponent(new Rectangle(xBase + selectorOffset[1], y, selectorOffset[2] - selectorOffset[1], 1), label) { m_baseX = xBase + selectorOffset[1] }; l.centerLabelX(); m_components.Add(l); l = new LabelComponent(new Rectangle(xBase + selectorOffset[1], y + Game1.tileSize / 2, selectorOffset[2] - selectorOffset[1], 1), value) { m_baseX = xBase + selectorOffset[1] }; if (value.Length > 3) { l.centerLabelX(); } else { l.rightCenterLabelX((int)Game1.smallFont.MeasureString("0").X); } m_selectValueLabels[name] = l; m_components.Add(l); b = new ClickableTextureButton(name, new Rectangle(xBase + selectorOffset[2], y, Game1.tileSize, Game1.tileSize), "", "", Game1.mouseCursors, Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, 33), 0.75f) { m_par = 1, m_hoverScale = 0.1f }; m_components.Add(b); }
/// <summary>Update the menu layout for a change in the zoom level or viewport size.</summary> public override void updateLayout() { // reset window position this.xPositionOnScreen = (Game1.viewport.Width - this.width) / 2; this.yPositionOnScreen = (Game1.viewport.Height - this.height) / 2; this.yPositionOnScreen += Game1.tileSize / 2; Texture2D menuTextures = Game1.content.Load <Texture2D>(ContentHelper.s_MenuTextureKey); // reset current components ans status m_alerts.Clear(); m_components.Clear(); m_extraFavButtons.Clear(); m_currentFav = -1; //constants const int firstExtraFavIndex = 7; const int nRow = 3, nCol = 10; const float facBtnZoom = 4.5f; const int extraFavTextureW = 8, extraFavTextureH = 8; const int xGapForExtraFav = 50, yGapForExtraFav = 50; const int extraFavBtnW = (int)(facBtnZoom * extraFavTextureW), extraFavBtnH = (int)(facBtnZoom * extraFavTextureH); int xOffset = xPositionOnScreen + IClickableMenu.borderWidth; int yOffset = yPositionOnScreen + IClickableMenu.borderWidth; // portrait m_components.Add(new PortraitComponent(xOffset + Game1.tileSize * 8, yOffset + +Game1.tileSize / 2)); // hint labels m_components.Add(new LabelComponent(new Rectangle(xOffset, yOffset, 1, 1), "You can set up to 30 additional favorite appearance")); m_components.Add(new LabelComponent(new Rectangle(xOffset, yOffset + 25, 1, 1), "configurations for each character.")); m_components.Add(new LabelComponent(new Rectangle(xOffset, yOffset + 110, 1, 1), "Your current appearance is shown on")); m_components.Add(new LabelComponent(new Rectangle(xOffset, yOffset + 135, 1, 1), "the right, select a favorite below to")); m_components.Add(new LabelComponent(new Rectangle(xOffset, yOffset + 160, 1, 1), "save your appearance in it or load the")); m_components.Add(new LabelComponent(new Rectangle(xOffset, yOffset + 185, 1, 1), "appearance saved in it :")); xOffset = this.xPositionOnScreen + (this.width - (nCol - 1) * xGapForExtraFav - extraFavBtnW) / 2; yOffset += Game1.tileSize * 6; // save load buttons m_loadFavButton = new ClickableTextureButton("Load", new Rectangle(xOffset + Game1.tileSize * 6, yOffset - 100, Game1.pixelZoom * 20, Game1.pixelZoom * 10), menuTextures, new Rectangle(0, 207, 26, 11), 3f) { m_hoverScale = 0.25f }; m_loadFavButton.visible = m_currentFav != -1; m_components.Add(m_loadFavButton); m_saveFavButton = new ClickableTextureButton("Save", new Rectangle(xOffset + Game1.tileSize * 6, yOffset - 50, Game1.pixelZoom * 20, Game1.pixelZoom * 10), menuTextures, new Rectangle(0, 193, 26, 11), 3f) { m_hoverScale = 0.25f }; m_saveFavButton.visible = m_currentFav != -1; m_components.Add(m_saveFavButton); m_selectFavLabel = new LabelComponent(new Rectangle(xOffset, yOffset - 100, 1, 1), "Please select a favorite..."); m_selectFavLabel.visible = m_currentFav == -1; m_components.Add(m_selectFavLabel); m_saveLabel = new LabelComponent(new Rectangle(xOffset, yOffset - 100, 1, 1), ""); m_saveLabel.visible = m_currentFav != -1; m_components.Add(m_saveLabel); m_loadLabel = new LabelComponent(new Rectangle(xOffset, yOffset - 50, 1, 1), "Overwrite Fav. Slot"); m_loadLabel.visible = m_currentFav != -1; m_components.Add(m_loadLabel); // extra favorites buttons for (int i = 0; i < nRow; i++) { for (int j = 0; j < nCol; j++) { int y = m_farmerMakeup.m_config.HasFavSlot(i * nCol + j + firstExtraFavIndex) ? 26 : 67; ClickableTextureButton c = new ClickableTextureButton("Fav", new Rectangle(xOffset + j * xGapForExtraFav, yOffset + i * yGapForExtraFav, extraFavBtnW, extraFavBtnH), menuTextures, new Rectangle(0, y, extraFavTextureW, extraFavTextureH), facBtnZoom) { m_par = j + i * nCol }; m_extraFavButtons.Add(c); m_components.Add(c); } } }
/// <summary>Update the menu layout for a change in the zoom level or viewport size.</summary> public override void updateLayout() { // reset window position this.xPositionOnScreen = (Game1.viewport.Width - this.width) / 2; this.yPositionOnScreen = (Game1.viewport.Height - this.height) / 2; this.yPositionOnScreen += Game1.tileSize / 2; m_alerts.Clear(); m_components.Clear(); // info int yOffset = this.yPositionOnScreen + IClickableMenu.borderWidth; int xOffset = this.xPositionOnScreen + IClickableMenu.borderWidth; m_components.Add(new LabelComponent(xOffset, yOffset, "Kisekae") { m_isTitle = true }); yOffset += 50; m_components.Add(new LabelComponent(xOffset, yOffset, "A modified version of Get Dressed to work with SDV 1.3")); m_components.Add(new LabelComponent(xOffset, yOffset + 26, $"You are using version: {m_env.ModManifest.Version}")); yOffset += 60; m_components.Add(new LabelComponent(xOffset, yOffset, "Settings:") { m_isTitle = true }); m_components.Add(new LabelComponent(xOffset, yOffset + 60, "Face Types (M-F): " + m_globalConfig.MaleFaceTypes + "-" + m_globalConfig.FemaleFaceTypes)); m_components.Add(new LabelComponent(xOffset + 300, yOffset + 60, "Nose Types (M-F): " + m_globalConfig.MaleNoseTypes + "-" + m_globalConfig.FemaleNoseTypes)); m_components.Add(new LabelComponent(xOffset, yOffset + 110, "Shoes Types (M-F): " + m_globalConfig.MaleShoeTypes + "-" + m_globalConfig.FemaleShoeTypes)); m_bottomNumberLabel = new LabelComponent(xOffset + 300, yOffset + 110, "Bottoms Types (M-F): " + (m_globalConfig.HideMaleSkirts ? 2 : m_globalConfig.MaleBottomsTypes) + "-" + m_globalConfig.FemaleBottomsTypes); m_components.Add(m_bottomNumberLabel); m_components.Add(new LabelComponent(xOffset, yOffset + 160, "Stove in Corner: " + m_globalConfig.StoveInCorner)); m_showDresserLabel = new LabelComponent(xOffset + 300, yOffset + 160, "Show Dresser: " + m_globalConfig.ShowDresser); m_components.Add(m_showDresserLabel); m_components.Add(new ClickableTextureButton("SetDresser", new Rectangle(xOffset + 560, yOffset + 160, Game1.pixelZoom * 15, Game1.pixelZoom * 10), Game1.mouseCursors, new Rectangle(294, 428, 21, 11), 3f) { m_hoverScale = 0.25f }); // set menu access key m_accessKeyLabel = new LabelComponent(xOffset, yOffset + 210, "Open Menu Key: " + m_globalConfig.MenuAccessKey); m_components.Add(m_accessKeyLabel); m_components.Add(new ClickableTextureButton("ClearAccessKey", new Rectangle(xOffset + 510, yOffset + 208, 30, 30), m_menuTextures, new Rectangle(50, 146, 12, 12), 3f) { m_hoverScale = 0.25f }); m_components.Add(new ClickableTextureButton("SetAccessKey", new Rectangle(xOffset + 560, yOffset + 210, 21 * 3, 11 * 3), Game1.mouseCursors, new Rectangle(294, 428, 21, 11), 3f) { m_hoverScale = 0.25f }); // toggle skirs for male characters m_components.Add(new LabelComponent(xOffset, yOffset + 260, "Toggle Skirts for Male Characters")); m_components.Add(new ClickableTextureButton("SetMaleShirt", new Rectangle(xOffset + 560, yOffset + 260, Game1.pixelZoom * 15, Game1.pixelZoom * 10), Game1.mouseCursors, new Rectangle(294, 428, 21, 11), 3f) { m_hoverScale = 0.25f }); // set gender change m_components.Add(new LabelComponent(xOffset, yOffset + 310, "Can Change Gender")); m_components.Add(new ClickableTextureButton("SetGenderButton", new Rectangle(xOffset + 560, yOffset + 310, Game1.pixelZoom * 15, Game1.pixelZoom * 10), Game1.mouseCursors, new Rectangle(294, 428, 21, 11), 3f) { m_hoverScale = 0.25f }); // set zoom level int zoomValue = (int)Math.Round((double)Game1.options.zoomLevel * 100.0); bool canZoomOut = (m_globalConfig.MenuZoomLock && !m_globalConfig.MenuZoomOut) || (!m_globalConfig.MenuZoomLock && zoomValue > 75); bool canZoomIn = (m_globalConfig.MenuZoomLock && m_globalConfig.MenuZoomOut) || (!m_globalConfig.MenuZoomLock && zoomValue < 125); m_zoomLevelLabel = new LabelComponent(xOffset, yOffset + 360, (m_globalConfig.MenuZoomLock ? "Independent Zoom Level: ": "Game Zoom Level: ") + (zoomValue) + "%"); m_components.Add(m_zoomLevelLabel); m_zoomOutButton = new ClickableTextureButton("ZoomOut", new Rectangle(xOffset + 530, yOffset + 360, Game1.pixelZoom * 10, Game1.pixelZoom * 10), m_menuTextures, new Rectangle(0, canZoomOut ? 167 : 177, 7, 9), 3f) { m_hoverScale = canZoomOut ? 0.25f : 0f }; m_zoomLockButton = new ClickableTextureButton("ZoomLock", new Rectangle(xOffset + 575, yOffset + 360 - 4, (int)(12 * 2.5), (int)(14 * 2.5)), m_menuTextures, new Rectangle(m_globalConfig.MenuZoomLock ? 178:162, m_globalConfig.MenuZoomLock ? 145 : 161, 12, 14), 2.5f) { m_hoverScale = 0.25f }; m_zoomInButton = new ClickableTextureButton("ZoomIn", new Rectangle(xOffset + 630, yOffset + 360, Game1.pixelZoom * 10, Game1.pixelZoom * 10), m_menuTextures, new Rectangle(10, canZoomIn ? 167 : 177, 7, 9), 3f) { m_hoverScale = canZoomIn ? 0.25f : 0f }; m_components.Add(m_zoomOutButton); m_components.Add(m_zoomInButton); m_components.Add(m_zoomLockButton); // reset config options m_components.Add(new LabelComponent(xOffset, yOffset + 410, "Reset Options to Default")); m_components.Add(new ClickableTextureButton("Reset", new Rectangle(xOffset + 560, yOffset + 410, Game1.pixelZoom * 15, Game1.pixelZoom * 10), Game1.mouseCursors, new Rectangle(294, 428, 21, 11), 3f) { m_hoverScale = 0.25f }); }
/// <summary>Perform the action associated with a component.</summary> /// <param name="cpt">The component.</param> /// <return>whether the component action is processed</return> public override bool handleLeftClick(IAutoComponent cpt) { AutoColorPicker p = null; ClickableTextureButton btn = null; if (cpt is ClickableTextureButton) { btn = (ClickableTextureButton)cpt; } else if (cpt is AutoColorPicker) { p = (AutoColorPicker)cpt; } switch (cpt.m_name) { case "Male": m_farmerMakeup.ChangeGender(true); m_farmerMakeup.ChangeHairStyle(0); m_maleOutlineButton.m_visible = true; m_femaleOutlineButton.m_visible = false; refreshLabelAttrs(); break; case "Female": m_farmerMakeup.ChangeGender(false); m_farmerMakeup.ChangeHairStyle(16); m_maleOutlineButton.m_visible = false; m_femaleOutlineButton.m_visible = true; refreshLabelAttrs(); break; case "Direction": Game1.player.faceDirection((Game1.player.facingDirection - btn.m_par + 4) % 4); Game1.player.FarmerSprite.StopAnimation(); Game1.player.completelyStopAnimatingOrDoingAction(); Game1.playSound("pickUpItem"); btn.scale = Math.Max(0.75f, btn.scale - 0.25f); return(true); case "OK": if (m_parent != null) { m_parent.exitThisMenuNoSound(); } else { exitThisMenuNoSound(); } break; case "Random": this.randomiseCharacter(); btn.scale = Game1.pixelZoom - 0.5f; this.m_eyeColorPicker.setColor(Game1.player.newEyeColor); this.m_hairColorPicker.setColor(Game1.player.hairstyleColor); this.m_pantsColorPicker.setColor(Game1.player.pantsColor); refreshLabelAttrs(); return(true); case "MultiplayerFix": m_farmerMakeup.TougleMultiplayerFix(); btn.sourceRect.X = btn.sourceRect.X == 227 ? 236 : 227; Game1.playSound("drumkit6"); return(true); case "EyeColorPicker": m_farmerMakeup.ChangeEyeColor(p.click(Game1.getOldMouseX(), Game1.getOldMouseY())); m_lastHeldColorPicker = p; return(true); case "HairColorPicker": m_farmerMakeup.ChangeHairColor(p.click(Game1.getOldMouseX(), Game1.getOldMouseY())); m_lastHeldColorPicker = p; return(true); case "PantsColorPicker": m_farmerMakeup.ChangeBottomsColor(p.click(Game1.getOldMouseX(), Game1.getOldMouseY())); m_lastHeldColorPicker = p; return(true); case "Fav": int i = btn.m_par; if (m_farmerMakeup.LoadFavorite(i + 1)) { Game1.playSound("yoba"); this.m_eyeColorPicker.setColor(Game1.player.newEyeColor); this.m_hairColorPicker.setColor(Game1.player.hairstyleColor); this.m_pantsColorPicker.setColor(Game1.player.pantsColor); refreshLabelAttrs(); } else { m_alerts.Add(new Alert(Game1.mouseCursors, new Rectangle(268, 470, 16, 16), Game1.viewport.Width / 2 - (700 + IClickableMenu.borderWidth * 2) / 2, Game1.viewport.Height / 2 - (500 + IClickableMenu.borderWidth * 2) / 2, "Uh oh! No Favorite is Set!", 1000, false)); if (m_parent is MenuFarmerMakeup mk) { mk.ShowFavTabArrow = true; } } return(true); default: if (btn != null) { btn.scale = Math.Max(0.75f, btn.scale - 2.5f); return(this.handleSelectorChange(btn.name, btn.m_par)); } return(false); } Game1.playSound("coin"); return(true); }
/// <summary>Update the menu layout for a change in the zoom level or viewport size.</summary> public override void updateLayout() { // reset window position this.xPositionOnScreen = (Game1.viewport.Width - this.width) / 2; this.yPositionOnScreen = (Game1.viewport.Height - this.height) / 2; this.yPositionOnScreen += Game1.tileSize / 2; int xBase = xPositionOnScreen + IClickableMenu.borderWidth; int yBase = yPositionOnScreen + IClickableMenu.borderWidth; m_alerts.Clear(); m_components.Clear(); m_selectValueLabels.Clear(); // random button m_components.Add(new ClickableTextureButton("Random", new Rectangle(xBase, yBase, Game1.pixelZoom * 10, Game1.pixelZoom * 10), null, "Random", Game1.mouseCursors, new Rectangle(381, 361, 10, 10), Game1.pixelZoom) { m_hoverScale = 0.25f }); // portrait m_components.Add(new PortraitComponent(xBase + Game1.tileSize * 3 / 4, yBase)); // direction buttons int xOffset = xBase + Game1.tileSize / 4; int yOffset = yBase + Game1.tileSize / 4 + Game1.tileSize * 2; m_components.Add(new ClickableTextureButton("Direction", new Rectangle(xOffset, yOffset, Game1.tileSize, Game1.tileSize), "", "", Game1.mouseCursors, Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, 44), 1f) { m_par = -1, m_hoverScale = 0.1f }); m_components.Add(new ClickableTextureButton("Direction", new Rectangle(xOffset + Game1.tileSize * 2, yOffset, Game1.tileSize, Game1.tileSize), "", "", Game1.mouseCursors, Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, 33), 1f) { m_par = 1, m_hoverScale = 0.1f }); // gender buttons if (m_globalConfig.CanChangeGender) { int scale = Game1.pixelZoom / 2; m_components.Add(new ClickableTextureButton("Male", new Rectangle(xBase + Game1.tileSize * 3, yBase, Game1.tileSize, Game1.tileSize), null, "Male", Game1.mouseCursors, new Rectangle(128, 192, 16, 16), scale)); m_components.Add(new ClickableTextureButton("Female", new Rectangle(xBase + Game1.tileSize * 3, yBase + Game1.tileSize, Game1.tileSize, Game1.tileSize), null, "Female", Game1.mouseCursors, new Rectangle(144, 192, 16, 16), scale)); this.m_maleOutlineButton = new ClickableTextureButton("", new Rectangle( xBase + Game1.tileSize * 3 - 3, yBase - 3, Game1.tileSize, Game1.tileSize), "", "", m_menuTextures, new Rectangle(19, 38, 19, 19), scale) { m_visible = Game1.player.isMale }; this.m_femaleOutlineButton = new ClickableTextureButton("", new Rectangle( xBase + Game1.tileSize * 3 - 3, yBase + Game1.tileSize - 3, Game1.tileSize, Game1.tileSize), "", "", m_menuTextures, new Rectangle(19, 38, 19, 19), scale) { m_visible = !Game1.player.isMale }; m_components.Add(m_maleOutlineButton); m_components.Add(m_femaleOutlineButton); } // color pickers { // eye color xOffset = xBase + Game1.tileSize * 4 + Game1.tileSize / 4; yOffset = yBase; int xPickerOffset = Game1.tileSize * 3 - Game1.tileSize / 4; int yLabelOffset = 16; m_components.Add(new LabelComponent(new Rectangle(xOffset, yOffset + yLabelOffset, 1, 1), "Eye Color:")); this.m_eyeColorPicker = new AutoColorPicker("EyeColorPicker", xOffset + xPickerOffset, yOffset); this.m_eyeColorPicker.setColor(Game1.player.newEyeColor); m_components.Add(m_eyeColorPicker); // hair color yOffset += Game1.tileSize + 8; m_components.Add(new LabelComponent(new Rectangle(xOffset, yOffset + yLabelOffset, 1, 1), "Hair Color:")); this.m_hairColorPicker = new AutoColorPicker("HairColorPicker", xOffset + xPickerOffset, yOffset); this.m_hairColorPicker.setColor(Game1.player.hairstyleColor); m_components.Add(m_hairColorPicker); // pants color yOffset += Game1.tileSize + 8; m_components.Add(new LabelComponent(new Rectangle(xOffset, yOffset + yLabelOffset, 1, 1), "Pants Color:")); this.m_pantsColorPicker = new AutoColorPicker("PantsColorPicker", xOffset + xPickerOffset, yOffset); this.m_pantsColorPicker.setColor(Game1.player.pantsColor); m_components.Add(m_pantsColorPicker); } // type selectors { xOffset = xBase + Game1.tileSize / 4; yOffset = yBase + Game1.tileSize * 3 + Game1.tileSize / 2; int xGap = xBase + Game1.tileSize * 4 - Game1.tileSize / 4; int[] xSelectorOffset = new int[] { Game1.tileSize / 4, Game1.tileSize, Game1.tileSize * 2 }; int[] xSelectorRightOffset = new int[] { Game1.tileSize / 4, Game1.tileSize + 8, Game1.tileSize * 3 }; selectorLayout(xOffset, xSelectorOffset, yOffset, Attr.Hair); m_components.Add(new ClickableTextureButton("MultiplayerFix", new Rectangle( xGap + xSelectorRightOffset[0] + 5, yOffset + Game1.tileSize / 4, 36, 36), null, null, Game1.mouseCursors, new Rectangle(m_farmerMakeup.m_config.MutiplayerFix ? 236 : 227, 425, 9, 9), 4f, false)); m_components.Add(new LabelComponent(new Rectangle(xGap + xSelectorRightOffset[1], yOffset + Game1.tileSize / 4, 1, 1), "Multiplayer Fix")); yOffset += Game1.tileSize + 4; selectorLayout(xOffset, xSelectorOffset, yOffset, Attr.Skin); selectorLayout(xGap, xSelectorRightOffset, yOffset, Attr.Face); yOffset += Game1.tileSize + 4; selectorLayout(xOffset, xSelectorOffset, yOffset, Attr.Shirt); selectorLayout(xGap, xSelectorRightOffset, yOffset, Attr.Nose); yOffset += Game1.tileSize + 4; selectorLayout(xOffset, xSelectorOffset, yOffset, Attr.ShoeColor); selectorLayout(xGap, xSelectorRightOffset, yOffset, Attr.Bottoms); yOffset += Game1.tileSize + 4; selectorLayout(xOffset, xSelectorOffset, yOffset, Attr.Accessory); selectorLayout(xGap, xSelectorRightOffset, yOffset, Attr.Shoes); } // quick favorite star buttons { xOffset = xBase + Game1.tileSize * 8 + Game1.tileSize / 2; yOffset = yBase + Game1.tileSize * 3 + Game1.tileSize / 2; // text above quick favorite buttons m_components.Add(new LabelComponent(new Rectangle( xOffset + 10, yOffset, 1, 1), "Load")); m_components.Add(new LabelComponent(new Rectangle( xOffset - Game1.tileSize / 4 + 5, yOffset + 25, 1, 1), "Favorite")); yOffset += 75; int size = Game1.pixelZoom * 10; int zoom = Game1.pixelZoom; int y1 = m_farmerMakeup.m_config.HasFavSlot(1) ? 26 : 67; int y2 = m_farmerMakeup.m_config.HasFavSlot(2) ? 26 : 67; int y3 = m_farmerMakeup.m_config.HasFavSlot(3) ? 26 : 67; int y4 = m_farmerMakeup.m_config.HasFavSlot(4) ? 26 : 67; int y5 = m_farmerMakeup.m_config.HasFavSlot(5) ? 26 : 67; int y6 = m_farmerMakeup.m_config.HasFavSlot(6) ? 26 : 67; this.m_quickLoadFavButtons = new[] { new ClickableTextureButton("Fav", new Rectangle(xOffset + 0, yOffset + 0, size, size), m_menuTextures, new Rectangle(24, y1, 8, 8), zoom) { m_par = 0, m_hoverScale = 0.2f }, new ClickableTextureButton("Fav", new Rectangle(xOffset + 0, yOffset + Game1.tileSize + 4, size, size), m_menuTextures, new Rectangle(8, y2, 8, 8), zoom) { m_par = 1, m_hoverScale = 0.2f }, new ClickableTextureButton("Fav", new Rectangle(xOffset + 0, yOffset + (Game1.tileSize + 4) * 2, size, size), m_menuTextures, new Rectangle(0, y3, 8, 8), zoom) { m_par = 2, m_hoverScale = 0.2f }, new ClickableTextureButton("Fav", new Rectangle(xOffset + 45, yOffset + 0, size, size), m_menuTextures, new Rectangle(24, y4, 8, 8), zoom) { m_par = 3, m_hoverScale = 0.2f }, new ClickableTextureButton("Fav", new Rectangle(xOffset + 45, yOffset + Game1.tileSize + 4, size, size), m_menuTextures, new Rectangle(8, y5, 8, 8), zoom) { m_par = 4, m_hoverScale = 0.2f }, new ClickableTextureButton("Fav", new Rectangle(xOffset + 45, yOffset + (Game1.tileSize + 4) * 2, size, size), m_menuTextures, new Rectangle(0, y6, 8, 8), zoom) { m_par = 5, m_hoverScale = 0.2f } }; for (int i = 0; i < m_quickLoadFavButtons.Length; ++i) { m_components.Add(m_quickLoadFavButtons[i]); } m_components.Add(new ClickableTextureButton("OK", new Rectangle(xOffset + 8, yOffset + (Game1.tileSize + 4) * 3 - Game1.tileSize / 4, Game1.tileSize, Game1.tileSize), null, null, Game1.mouseCursors, Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, 46), 1f) { m_hoverScale = 0.1f }); } }