more scrollbar support for ui scaling

This commit is contained in:
RandomityGuy 2022-12-24 00:24:13 +05:30
parent 8df13ea44b
commit 77c3248fe9
2 changed files with 11 additions and 9 deletions

View file

@ -40,7 +40,8 @@ class GuiScrollCtrl extends GuiControl {
this.scrollBottomPressedTile = scrollBar.sub(11, 13, 10, 6); this.scrollBottomPressedTile = scrollBar.sub(11, 13, 10, 6);
this.scrollFillPressedTile = scrollBar.sub(11, 11, 10, 1); this.scrollFillPressedTile = scrollBar.sub(11, 11, 10, 1);
this.scrollBarY = new Graphics(); this.scrollBarY = new Graphics();
this.clickInteractive = new Interactive(10, 1); this.scrollBarY.scale(Settings.uiScale);
this.clickInteractive = new Interactive(10 * Settings.uiScale, 1);
this.clickInteractive.onPush = (e) -> { this.clickInteractive.onPush = (e) -> {
if (!this.pressed) { if (!this.pressed) {
this.pressed = true; this.pressed = true;
@ -57,7 +58,7 @@ class GuiScrollCtrl extends GuiControl {
if (prevEY == null) { if (prevEY == null) {
prevEY = e2.relY; prevEY = e2.relY;
} else { } else {
this.scrollY += e2.relY - prevEY; this.scrollY += (e2.relY - prevEY);
prevEY = e2.relY; prevEY = e2.relY;
this.updateScrollVisual(); this.updateScrollVisual();
} }
@ -111,13 +112,13 @@ class GuiScrollCtrl extends GuiControl {
return; return;
} }
var scrollBarYSize = renderRect.extent.y * renderRect.extent.y / maxScrollY; var scrollBarYSize = renderRect.extent.y * renderRect.extent.y / (maxScrollY * Settings.uiScale);
this.scrollY = Util.clamp(scrollY, 0, renderRect.extent.y - scrollBarYSize); this.scrollY = Util.clamp(scrollY, 0, renderRect.extent.y - scrollBarYSize * Settings.uiScale);
this.scrollBarY.setPosition(renderRect.position.x + renderRect.extent.x - 10, renderRect.position.y + scrollY); this.scrollBarY.setPosition(renderRect.position.x + renderRect.extent.x - 10 * Settings.uiScale, renderRect.position.y + scrollY);
this.clickInteractive.setPosition(renderRect.position.x + renderRect.extent.x - 10, renderRect.position.y); this.clickInteractive.setPosition(renderRect.position.x + renderRect.extent.x - 10 * Settings.uiScale, renderRect.position.y);
this.clickInteractive.height = renderRect.extent.y; this.clickInteractive.height = renderRect.extent.y;

View file

@ -12,6 +12,7 @@ import h2d.Scene;
import h2d.Text; import h2d.Text;
import h2d.Font; import h2d.Font;
import src.MarbleGame; import src.MarbleGame;
import src.Settings;
class GuiTextListCtrl extends GuiControl { class GuiTextListCtrl extends GuiControl {
public var texts:Array<String>; public var texts:Array<String>;
@ -78,7 +79,7 @@ class GuiTextListCtrl extends GuiControl {
for (i in 0...textObjs.length) { for (i in 0...textObjs.length) {
var text = textObjs[i]; var text = textObjs[i];
text.setPosition(Math.floor((!scrollable ? renderRect.position.x : 0) + 5), text.setPosition(Math.floor((!scrollable ? renderRect.position.x : 0) + 5),
Math.floor((!scrollable ? renderRect.position.y : 0) + (i * (text.font.size + 4) + 5 + textYOffset - this.scroll))); Math.floor((!scrollable ? renderRect.position.y : 0) + (i * (text.font.size + 4) + 5 + textYOffset * Settings.uiScale - this.scroll)));
if (_prevSelected == i) { if (_prevSelected == i) {
text.textColor = selectedColor; text.textColor = selectedColor;
@ -126,7 +127,7 @@ class GuiTextListCtrl extends GuiControl {
} }
text.setPosition(Math.floor((!scrollable ? renderRect.position.x : 0) + 5), text.setPosition(Math.floor((!scrollable ? renderRect.position.x : 0) + 5),
Math.floor((!scrollable ? renderRect.position.y : 0) + (i * (text.font.size + 4) + 5 + textYOffset - this.scroll))); Math.floor((!scrollable ? renderRect.position.y : 0) + (i * (text.font.size + 4) + 5 + textYOffset * Settings.uiScale - this.scroll)));
if (_prevSelected == i) { if (_prevSelected == i) {
text.textColor = selectedColor; text.textColor = selectedColor;
@ -257,7 +258,7 @@ class GuiTextListCtrl extends GuiControl {
var hittestrect = this.getHitTestRect(); var hittestrect = this.getHitTestRect();
for (i in 0...textObjs.length) { for (i in 0...textObjs.length) {
var text = textObjs[i]; var text = textObjs[i];
text.y = Math.floor((i * (text.font.size + 4) + 5 + textYOffset - scrollY)); text.y = Math.floor((i * (text.font.size + 4) + 5 + textYOffset * Settings.uiScale - scrollY));
g.y = renderRect.position.y - scrollY; g.y = renderRect.position.y - scrollY;
} }
redrawSelectionRect(hittestrect); redrawSelectionRect(hittestrect);