public override void draw(SpriteBatch b) { Vector2 centeringOnScreen = Utility.getTopLeftPositionForCenteringOnScreen(this.width, ((IClickableMenu)this).height - 100, 0, 0); b.Draw(Game1.fadeToBlackRect, Game1.graphics.GraphicsDevice.Viewport.Bounds, Color.Black * 0.75f); IClickableMenu.drawTextureBox(b, Game1.mouseCursors, new Rectangle(473, 36, 24, 24), (int)centeringOnScreen.X, (int)centeringOnScreen.Y, this.width, ((IClickableMenu)this).height - 150, Color.White, 4f, true); int startX = (int)centeringOnScreen.X + 32; int startY = (int)centeringOnScreen.Y + 32; for (int i = 0; i < UpdateMenu.sections.Length; i++) { int xOffset = (i * this.width) / UpdateMenu.sections.Length; if (i != 0) { SpriteText.drawString(b, UpdateMenu.HeaderDivider, startX + xOffset - this.headerDividerDimensions.X, startY, 9999, -1, 9999, 1f, 0.88f, false, -1, "", 4); } xOffset += (this.width / UpdateMenu.sections.Length) / 2 - SpriteText.getWidthOfString(UpdateMenu.sections[i]) / 2; SpriteText.drawString(b, UpdateMenu.sections[i], startX + xOffset, startY, 9999, -1, 9999, 1f, 0.88f, false, -1, "", 4); } SpriteText.drawString(b, this.modDivider, startX, startY + 32, 9999, -1, 9999, 1f, 0.88f, false, -1, "", 4); if (!this.notified) { SpriteText.drawString(b, $"{UpdateMenu.UpdateProgress}{this.GetDots(this.numDots)}", startX + this.width / 2 - this.updateProgressDimensions.X, startY + (((IClickableMenu)this).height - 100) / 2 - this.updateProgressDimensions.Y, 9999, -1, 9999, 1f, 0.88f, false, -1, "", 4); } else if (this.statuses == null) { SpriteText.drawString(b, UpdateMenu.ErrorChecking, startX + this.width / 2 - this.errorCheckingDimensions.X, startY + (((IClickableMenu)this).height - 100) / 2 - this.errorCheckingDimensions.Y, 9999, -1, 9999, 1f, 0.88f, false, -1, "", SpriteText.color_Red); } else { startX += this.headerDividerDimensions.X; int yOffset = startY + 64 + 16; foreach (ModStatus status in this.statuses) { string modName = status.ModName; while (SpriteText.getWidthOfString(modName) > this.width / UpdateMenu.sections.Length) { modName = modName.Substring(0, modName.Length - 1); } if (modName != status.ModName) { modName = modName.Substring(0, modName.Length - 3) + "..."; } SpriteText.drawString(b, modName, startX, yOffset, 9999, -1, 9999, 1f, 0.88f, false, -1, "", 4); SpriteText.drawString(b, status.UpdateStatus.ToString(), startX + this.width / UpdateMenu.sections.Length, yOffset, 9999, -1, 9999, 1f, 0.88f, false, -1, "", UpdateMenu.GetColorForStatus(status.UpdateStatus)); SpriteText.drawString(b, status.UpdateURLType, startX + 2 * this.width / UpdateMenu.sections.Length, yOffset, 9999, -1, 9999, 1f, 0.88f, false, -1, "", 4); yOffset += 64; } if (this.hoverText != null) { int xPos = Game1.getMouseX() + 32; if (xPos > Game1.viewport.Width / 2) { xPos -= this.hoverTextDimensions.X + 32; } IClickableMenu.drawTextureBox(b, Game1.menuTexture, new Rectangle(0, 256, 60, 60), xPos, Game1.getMouseY() + 32, this.hoverTextDimensions.X + 32, this.hoverTextDimensions.Y + 32, Color.White); SpriteText.drawString(b, this.hoverText, xPos + 16, Game1.getMouseY() + 32 + 16, 9999, -1, 9999, 1f, 0.88f, false, -1, "", SpriteText.color_Gray); } } }
public override void draw(SpriteBatch b) { Vector2 centeringOnScreen = Utility.getTopLeftPositionForCenteringOnScreen(this.width, ((IClickableMenu)this).height - 100, 0, 0); b.Draw(Game1.fadeToBlackRect, Game1.graphics.GraphicsDevice.Viewport.Bounds, Color.Black * 0.75f); IClickableMenu.drawTextureBox(b, Game1.mouseCursors, new Rectangle(473, 36, 24, 24), (int)centeringOnScreen.X, (int)centeringOnScreen.Y, this.width, ((IClickableMenu)this).height - 150, Color.White, 4f, true); int startX = (int)centeringOnScreen.X + 32; int startY = (int)centeringOnScreen.Y + 32; for (int i = 0; i < UpdateMenu.sections.Length; i++) { double width = this.GetColumnWidth(i); int xOffset = 0; for (int j = 0; j < i; j++) { xOffset += this.GetColumnWidth(j); } if (i != 0) { SpriteText.drawString(b, UpdateMenu.HeaderDivider, startX + xOffset - this.headerDividerDimensions.X, startY, 9999, -1, 9999, 1f, 0.88f, false, -1, "", 4); } string headerText = UpdateMenu.sections[i] + (this.currentSortColumn == i ? (this.currentSortDirection == 0 ? " A" : " V") : ""); xOffset += (int)(width / 2) - SpriteText.getWidthOfString(UpdateMenu.sections[i]) / 2; SpriteText.drawString(b, headerText, startX + xOffset, startY, 9999, -1, 9999, 1f, 0.88f, false, -1, "", 4); } SpriteText.drawString(b, this.modDivider, startX, startY + 32, 9999, -1, 9999, 1f, 0.88f, false, -1, "", 4); if (!this.notified) { SpriteText.drawString(b, $"{UpdateMenu.UpdateProgress}{this.GetDots(this.numDots)}", startX + this.width / 2 - this.updateProgressDimensions.X, startY + (((IClickableMenu)this).height - 100) / 2 - this.updateProgressDimensions.Y, 9999, -1, 9999, 1f, 0.88f, false, -1, "", 4); } else if (this.statuses == null) { SpriteText.drawString(b, UpdateMenu.ErrorChecking, startX + this.width / 2 - this.errorCheckingDimensions.X, startY + (((IClickableMenu)this).height - 100) / 2 - this.errorCheckingDimensions.Y, 9999, -1, 9999, 1f, 0.88f, false, -1, "", SpriteText.color_Red); } else { startX += this.headerDividerDimensions.X; int yOffset = startY + 64 + 16; foreach (ModStatus status in this.statuses) { string modName = status.ModName; while (SpriteText.getWidthOfString(modName) > this.GetColumnWidth(0)) { modName = modName.Substring(0, modName.Length - 1); } if (modName != status.ModName) { modName = modName.Substring(0, modName.Length - 3) + "..."; } SpriteText.drawString(b, modName, startX, yOffset, 9999, -1, 9999, 1f, 0.88f, false, -1, "", 4); SpriteText.drawString(b, status.UpdateStatus.ToString(), startX + (int)this.GetColumnWidth(0), yOffset, 9999, -1, 9999, 1f, 0.88f, false, -1, "", UpdateMenu.GetColorForStatus(status.UpdateStatus)); SpriteText.drawString(b, status.UpdateURLType, startX + (int)this.GetColumnWidth(0) + (int)this.GetColumnWidth(1), yOffset, 9999, -1, 9999, 1f, 0.88f, false, -1, "", 4); yOffset += 64; } if (this.hoverText != null) { int xPos = Game1.getMouseX() + 32; if (xPos > Game1.viewport.Width / 2) { xPos -= this.hoverTextDimensions.X + 32; } int yPos = Game1.getMouseY() + 32 + 16; if (yPos > Game1.viewport.Height * (3.0 / 4)) { yPos -= this.hoverTextDimensions.Y + 64; } IClickableMenu.drawTextureBox(b, Game1.menuTexture, new Rectangle(0, 256, 60, 60), xPos, yPos - 16, this.hoverTextDimensions.X + 32, this.hoverTextDimensions.Y + 32, Color.White); SpriteText.drawString(b, this.hoverText, xPos + 16, yPos, 9999, -1, 9999, 1f, 0.88f, false, -1, "", SpriteText.color_Gray); } if (this.statuses != null) { int numSteps = this.originalStatuses.Count - this.numDisplayableMods; yOffset = (int)((((float)this.displayIndex) / numSteps) * (((IClickableMenu)this).height - 200 + 16)); drawTextureBox(b, Game1.mouseCursors, new Rectangle(325, 448, 5, 17), (int)centeringOnScreen.X + this.width, (int)centeringOnScreen.Y + yOffset, 16, 32, Color.White, 4f, false); } } }