diff --git a/src/Main.hx b/src/Main.hx index c3e61845..e6e983be 100644 --- a/src/Main.hx +++ b/src/Main.hx @@ -38,6 +38,8 @@ class Main extends hxd.App { override function init() { super.init(); + hxd.Timer.smoothFactor = 0; + s3d.renderer = new Renderer(); #if debug s3d.checkPasses = false; diff --git a/src/Renderer.hx b/src/Renderer.hx index ec70099d..0522c855 100644 --- a/src/Renderer.hx +++ b/src/Renderer.hx @@ -75,6 +75,10 @@ class Renderer extends h3d.scene.Renderer { #if js pixelRatio = js.Browser.window.devicePixelRatio / Math.min(Settings.optionsSettings.maxPixelRatio, js.Browser.window.devicePixelRatio); #end + #if hl + pixelRatio = hxd.Window.getInstance() + .windowToPixelRatio / Math.min(Settings.optionsSettings.maxPixelRatio, hxd.Window.getInstance().windowToPixelRatio); + #end } override function getPassByName(name:String):h3d.pass.Base { diff --git a/src/Settings.hx b/src/Settings.hx index 8ef2137f..68662b5c 100644 --- a/src/Settings.hx +++ b/src/Settings.hx @@ -207,7 +207,7 @@ class Settings { #if hl #if MACOS_BUNDLE - public static var settingsDir = Path.join([Sys.getEnv("HOME"), "Library", "Application Support", "MBHaxe-MBP"]); + public static var settingsDir = Path.join([Sys.getEnv("HOME"), "Library", "Application Support", "MBHaxe-MBU"]); #else public static var settingsDir = "."; #end @@ -448,6 +448,7 @@ class Settings { #end #if js Window.getInstance().propagateKeyEvents = true; + uiScale = 2; #end // @:privateAccess Window.getInstance().window.center(); diff --git a/src/gui/AboutMenuOptionsGui.hx b/src/gui/AboutMenuOptionsGui.hx index 0fc5eb4f..35990406 100644 --- a/src/gui/AboutMenuOptionsGui.hx +++ b/src/gui/AboutMenuOptionsGui.hx @@ -24,7 +24,7 @@ class AboutMenuOptionsGui extends GuiImage { this.position = new Vector(); this.extent = new Vector(640, 480); - var scene2d = MarbleGame.canvas.scene2d; + var scene2d = hxd.Window.getInstance(); var offsetX = (scene2d.width - 1280) / 2; var offsetY = (scene2d.height - 720) / 2; diff --git a/src/gui/AchievementsGui.hx b/src/gui/AchievementsGui.hx index 352136fd..a12c9729 100644 --- a/src/gui/AchievementsGui.hx +++ b/src/gui/AchievementsGui.hx @@ -25,7 +25,7 @@ class AchievementsGui extends GuiImage { this.position = new Vector(); this.extent = new Vector(640, 480); - var scene2d = MarbleGame.canvas.scene2d; + var scene2d = hxd.Window.getInstance(); var offsetX = (scene2d.width - 1280) / 2; var offsetY = (scene2d.height - 720) / 2; diff --git a/src/gui/Canvas.hx b/src/gui/Canvas.hx index f598955c..3ef38796 100644 --- a/src/gui/Canvas.hx +++ b/src/gui/Canvas.hx @@ -25,6 +25,7 @@ class Canvas extends GuiControl { Window.getInstance().addResizeEvent(() -> { var wnd = Window.getInstance(); onResize(wnd.width, wnd.height); + Console.log('Window resized to ${wnd.width} x ${wnd.height}, scene ${scene2d.width} x ${scene2d.height}'); }); } diff --git a/src/gui/DifficultySelectGui.hx b/src/gui/DifficultySelectGui.hx index 011e277f..e72d57b0 100644 --- a/src/gui/DifficultySelectGui.hx +++ b/src/gui/DifficultySelectGui.hx @@ -25,7 +25,7 @@ class DifficultySelectGui extends GuiImage { this.position = new Vector(); this.extent = new Vector(640, 480); - var scene2d = MarbleGame.canvas.scene2d; + var scene2d = hxd.Window.getInstance(); var offsetX = (scene2d.width - 1280) / 2; var offsetY = (scene2d.height - 720) / 2; diff --git a/src/gui/EndGameGui.hx b/src/gui/EndGameGui.hx index e10a4e23..609b5ea6 100644 --- a/src/gui/EndGameGui.hx +++ b/src/gui/EndGameGui.hx @@ -39,7 +39,7 @@ class EndGameGui extends GuiImage { return [normal, hover, pressed]; } - var scene2d = MarbleGame.canvas.scene2d; + var scene2d = hxd.Window.getInstance(); var offsetX = (scene2d.width - 1280) / 2; var offsetY = (scene2d.height - 720) / 2; diff --git a/src/gui/ExitGameDlg.hx b/src/gui/ExitGameDlg.hx index d3341e02..5ec53654 100644 --- a/src/gui/ExitGameDlg.hx +++ b/src/gui/ExitGameDlg.hx @@ -32,7 +32,7 @@ class ExitGameDlg extends GuiImage { return [normal, hover, pressed]; } - var scene2d = MarbleGame.canvas.scene2d; + var scene2d = hxd.Window.getInstance(); var offsetX = (scene2d.width - 1280) / 2; var offsetY = (scene2d.height - 720) / 2; diff --git a/src/gui/GuiConsoleScrollCtrl.hx b/src/gui/GuiConsoleScrollCtrl.hx index 7f956f39..6e1973ba 100644 --- a/src/gui/GuiConsoleScrollCtrl.hx +++ b/src/gui/GuiConsoleScrollCtrl.hx @@ -148,7 +148,7 @@ class GuiConsoleScrollCtrl extends GuiControl { public override function render(scene2d:Scene, ?parent:h2d.Flow) { this.dirty = true; - this.scrollTrack.position = new Vector(extent.x - 18 * Settings.uiScale, 0); + this.scrollTrack.position = new Vector(extent.x - 18, 0); this.scrollTrack.extent = new Vector(18, this.extent.y); scrollUpButton.position = new Vector(this.extent.x - 18, 0); diff --git a/src/gui/GuiXboxListButton.hx b/src/gui/GuiXboxListButton.hx index a6ac058b..23b5bb8e 100644 --- a/src/gui/GuiXboxListButton.hx +++ b/src/gui/GuiXboxListButton.hx @@ -73,8 +73,8 @@ class GuiXboxListButton extends GuiControl { public override function update(dt:Float, mouseState:MouseState) { var renderRect = getHitTestRect(); - renderRect.position = renderRect.position.add(new Vector(24, 20)); // Offset - renderRect.extent.set(439, 53); + renderRect.position = renderRect.position.add(new Vector(24 * Settings.uiScale, 20 * Settings.uiScale)); // Offset + renderRect.extent.set(439 * Settings.uiScale, 53 * Settings.uiScale); if (renderRect.inRect(mouseState.position) && !disabled) { if (buttonSounds && Key.isPressed(Key.MOUSE_LEFT)) { AudioManager.playSound(ResourceLoader.getResource("data/sound/buttonpress.wav", ResourceLoader.getAudio, this.soundResources)); @@ -132,8 +132,8 @@ class GuiXboxListButton extends GuiControl { public override function onMouseRelease(mouseState:MouseState) { var renderRect = getHitTestRect(); - renderRect.position = renderRect.position.add(new Vector(24, 20)); // Offset - renderRect.extent.set(439, 53); + renderRect.position = renderRect.position.add(new Vector(24 * Settings.uiScale, 20 * Settings.uiScale)); // Offset + renderRect.extent.set(439 * Settings.uiScale, 53 * Settings.uiScale); if (!renderRect.inRect(mouseState.position)) return; @@ -145,8 +145,8 @@ class GuiXboxListButton extends GuiControl { public override function onMouseEnter(mouseState:MouseState) { var renderRect = getHitTestRect(); - renderRect.position = renderRect.position.add(new Vector(24, 20)); // Offset - renderRect.extent.set(439, 53); + renderRect.position = renderRect.position.add(new Vector(24 * Settings.uiScale, 20 * Settings.uiScale)); // Offset + renderRect.extent.set(439 * Settings.uiScale, 53 * Settings.uiScale); if (!renderRect.inRect(mouseState.position)) return; diff --git a/src/gui/GuiXboxOptionsList.hx b/src/gui/GuiXboxOptionsList.hx index 4bbfc5dd..263a2238 100644 --- a/src/gui/GuiXboxOptionsList.hx +++ b/src/gui/GuiXboxOptionsList.hx @@ -118,8 +118,8 @@ class GuiXboxOptionsList extends GuiControl { optionText.text.textColor = 0x101010; } else { var htr = this.getHitTestRect(); - htr.position = htr.position.add(new Vector(24, 20)); - htr.extent.set(776, 53); + htr.position = htr.position.add(new Vector(24 * Settings.uiScale, 20 * Settings.uiScale)); + htr.extent.set(776 * Settings.uiScale, 53 * Settings.uiScale); if (_prevMousePos == null || !_prevMousePos.equals(mouseState.position)) { if (htr.inRect(mouseState.position) && !selected) { @@ -148,11 +148,11 @@ class GuiXboxOptionsList extends GuiControl { } } var leftBtnRect = leftButton.getHitTestRect(); - leftBtnRect.position = leftBtnRect.position.add(new Vector(15, 21)); - leftBtnRect.extent.set(83, 53); + leftBtnRect.position = leftBtnRect.position.add(new Vector(15 * Settings.uiScale, 21 * Settings.uiScale)); + leftBtnRect.extent.set(83 * Settings.uiScale, 53 * Settings.uiScale); var rightBtnRect = rightButton.getHitTestRect(); - rightBtnRect.position = rightBtnRect.position.add(new Vector(15, 21)); - rightBtnRect.extent.set(83, 53); + rightBtnRect.position = rightBtnRect.position.add(new Vector(15 * Settings.uiScale, 21 * Settings.uiScale)); + rightBtnRect.extent.set(83 * Settings.uiScale, 53 * Settings.uiScale); if (leftBtnRect.inRect(mouseState.position) || rightBtnRect.inRect(mouseState.position)) { if (Key.isPressed(Key.MOUSE_LEFT)) { AudioManager.playSound(ResourceLoader.getResource("data/sound/buttonpress.wav", ResourceLoader.getAudio, this.soundResources)); diff --git a/src/gui/HelpCreditsGui.hx b/src/gui/HelpCreditsGui.hx index a023daa4..e49dc7c8 100644 --- a/src/gui/HelpCreditsGui.hx +++ b/src/gui/HelpCreditsGui.hx @@ -33,7 +33,7 @@ class HelpCreditsGui extends GuiImage { this.position = new Vector(); this.extent = new Vector(640, 480); - var scene2d = MarbleGame.canvas.scene2d; + var scene2d = hxd.Window.getInstance(); var offsetX = (scene2d.width - 1280) / 2; var offsetY = (scene2d.height - 720) / 2; diff --git a/src/gui/InputOptionsGui.hx b/src/gui/InputOptionsGui.hx index 52821ba5..2b2012c0 100644 --- a/src/gui/InputOptionsGui.hx +++ b/src/gui/InputOptionsGui.hx @@ -24,7 +24,7 @@ class InputOptionsGui extends GuiImage { this.position = new Vector(); this.extent = new Vector(640, 480); - var scene2d = MarbleGame.canvas.scene2d; + var scene2d = hxd.Window.getInstance(); var offsetX = (scene2d.width - 1280) / 2; var offsetY = (scene2d.height - 720) / 2; diff --git a/src/gui/KeyBindingsGui.hx b/src/gui/KeyBindingsGui.hx index 8ea03c39..cd791ff5 100644 --- a/src/gui/KeyBindingsGui.hx +++ b/src/gui/KeyBindingsGui.hx @@ -84,7 +84,7 @@ class KeyBindingsGui extends GuiImage { } } - var scene2d = MarbleGame.canvas.scene2d; + var scene2d = hxd.Window.getInstance(); var offsetX = (scene2d.width - 1280) / 2; var offsetY = (scene2d.height - 720) / 2; diff --git a/src/gui/LevelSelectGui.hx b/src/gui/LevelSelectGui.hx index db3f8d7d..17ed2e08 100644 --- a/src/gui/LevelSelectGui.hx +++ b/src/gui/LevelSelectGui.hx @@ -99,7 +99,7 @@ class LevelSelectGui extends GuiImage { this.vertSizing = Height; this.position = new Vector(); this.extent = new Vector(640, 480); - var scene2d = MarbleGame.canvas.scene2d; + var scene2d = hxd.Window.getInstance(); var offsetX = (scene2d.width - 1280) / 2; var offsetY = (scene2d.height - 720) / 2; diff --git a/src/gui/MainMenuGui.hx b/src/gui/MainMenuGui.hx index ce09ae76..711f400b 100644 --- a/src/gui/MainMenuGui.hx +++ b/src/gui/MainMenuGui.hx @@ -29,7 +29,7 @@ class MainMenuGui extends GuiImage { this.position = new Vector(); this.extent = new Vector(640, 480); - var scene2d = MarbleGame.canvas.scene2d; + var scene2d = hxd.Window.getInstance(); var offsetX = (scene2d.width - 1280) / 2; var offsetY = (scene2d.height - 720) / 2; diff --git a/src/gui/MarblePickerGui.hx b/src/gui/MarblePickerGui.hx index 4dff60d9..565b3624 100644 --- a/src/gui/MarblePickerGui.hx +++ b/src/gui/MarblePickerGui.hx @@ -245,7 +245,7 @@ class MarblePickerGui extends GuiImage { this.position = new Vector(); this.extent = new Vector(640, 480); - var scene2d = MarbleGame.canvas.scene2d; + var scene2d = hxd.Window.getInstance(); var offsetX = (scene2d.width - 1280) / 2; var offsetY = (scene2d.height - 720) / 2; diff --git a/src/gui/MiscOptionsGui.hx b/src/gui/MiscOptionsGui.hx index 7ed0295c..b24db32d 100644 --- a/src/gui/MiscOptionsGui.hx +++ b/src/gui/MiscOptionsGui.hx @@ -23,7 +23,7 @@ class MiscOptionsGui extends GuiImage { this.position = new Vector(); this.extent = new Vector(640, 480); - var scene2d = MarbleGame.canvas.scene2d; + var scene2d = hxd.Window.getInstance(); var offsetX = (scene2d.width - 1280) / 2; var offsetY = (scene2d.height - 720) / 2; diff --git a/src/gui/OptionsListGui.hx b/src/gui/OptionsListGui.hx index 6d3f9360..a5ea3352 100644 --- a/src/gui/OptionsListGui.hx +++ b/src/gui/OptionsListGui.hx @@ -23,7 +23,7 @@ class OptionsListGui extends GuiImage { this.position = new Vector(); this.extent = new Vector(640, 480); - var scene2d = MarbleGame.canvas.scene2d; + var scene2d = hxd.Window.getInstance(); var offsetX = (scene2d.width - 1280) / 2; var offsetY = (scene2d.height - 720) / 2; diff --git a/src/gui/PlayGui.hx b/src/gui/PlayGui.hx index 87535a2a..d70ded2f 100644 --- a/src/gui/PlayGui.hx +++ b/src/gui/PlayGui.hx @@ -111,14 +111,16 @@ class PlayGui { playGuiCtrlOuter.horizSizing = Width; playGuiCtrlOuter.vertSizing = Height; - var safeVerMargin = 1 + (scene2d.height * 0.15) / 2; - var safeHorMargin = 1 + (scene2d.width * 0.15) / 2; + var wnd = hxd.Window.getInstance(); + + var safeVerMargin = 1 + (wnd.height * 0.15) / 2; + var safeHorMargin = 1 + (wnd.width * 0.15) / 2; playGuiCtrl = new GuiControl(); playGuiCtrl.position = new Vector(safeHorMargin, safeVerMargin); - var subX = 640 - (scene2d.width - safeHorMargin * 2) * 640 / scene2d.width; - var subY = 480 - (scene2d.height - safeVerMargin * 2) * 480 / scene2d.height; + var subX = 640 - (wnd.width - safeHorMargin * 2) * 640 / wnd.width; + var subY = 480 - (wnd.height - safeVerMargin * 2) * 480 / wnd.height; playGuiCtrl.extent = new Vector(640 - subX, 480 - subY); playGuiCtrl.horizSizing = Width; @@ -144,8 +146,8 @@ class PlayGui { if (game == 'ultra') initBlastBar(); initTexts(); - if (Settings.optionsSettings.frameRateVis) - initFPSMeter(); + // if (Settings.optionsSettings.frameRateVis) + // initFPSMeter(); if (Util.isTouchDevice()) { MarbleGame.instance.touchInput.showControls(this.playGuiCtrlOuter, game == 'ultra'); @@ -154,12 +156,12 @@ class PlayGui { playGuiCtrlOuter.render(scene2d); resizeEv = () -> { - var safeVerMargin = 1 + (scene2d.height * 0.15) / 2; - var safeHorMargin = 1 + (scene2d.width * 0.15) / 2; + var safeVerMargin = 1 + (wnd.height * 0.15) / 2; + var safeHorMargin = 1 + (wnd.width * 0.15) / 2; playGuiCtrl.position = new Vector(safeHorMargin, safeVerMargin); - var subX = 640 - (scene2d.width - safeHorMargin * 2) * 640 / scene2d.width; - var subY = 480 - (scene2d.height - safeVerMargin * 2) * 480 / scene2d.height; + var subX = 640 - (wnd.width - safeHorMargin * 2) * 640 / wnd.width; + var subY = 480 - (wnd.height - safeVerMargin * 2) * 480 / wnd.height; playGuiCtrl.extent = new Vector(640 - subX, 480 - subY); resizeControls(); @@ -179,6 +181,7 @@ class PlayGui { } public function initTimer() { + var scene2d = hxd.Window.getInstance(); var safeVerMargin = 1 + (scene2d.height * 0.15) / 2; var timerCtrl = new GuiImage(ResourceLoader.getResource('data/ui/game/timebackdrop0.png', ResourceLoader.getImage, this.imageResources).toTile()); @@ -284,6 +287,7 @@ class PlayGui { } public function initGemCounter() { + var scene2d = hxd.Window.getInstance(); var safeVerMargin = 1 + (scene2d.height * 0.15) / 2; var gemBox = new GuiControl(); @@ -370,6 +374,7 @@ class PlayGui { } function initPowerupBox() { + var scene2d = hxd.Window.getInstance(); var safeVerMargin = 1 + (scene2d.height * 0.15) / 2; var powerupImgs = [ @@ -521,6 +526,7 @@ class PlayGui { } function initBlastBar() { + var scene2d = hxd.Window.getInstance(); var safeVerMargin = 1 + (scene2d.height * 0.15) / 2; blastBar = new GuiControl(); diff --git a/src/gui/ReplayCenterGui.hx b/src/gui/ReplayCenterGui.hx index 84f233cf..206153a5 100644 --- a/src/gui/ReplayCenterGui.hx +++ b/src/gui/ReplayCenterGui.hx @@ -29,7 +29,7 @@ class ReplayCenterGui extends GuiImage { this.position = new Vector(); this.extent = new Vector(640, 480); - var scene2d = MarbleGame.canvas.scene2d; + var scene2d = hxd.Window.getInstance(); var offsetX = (scene2d.width - 1280) / 2; var offsetY = (scene2d.height - 720) / 2; diff --git a/src/gui/TouchCtrlsEditGui.hx b/src/gui/TouchCtrlsEditGui.hx index b280a396..6e758523 100644 --- a/src/gui/TouchCtrlsEditGui.hx +++ b/src/gui/TouchCtrlsEditGui.hx @@ -21,7 +21,7 @@ class TouchCtrlsEditGui extends GuiImage { this.position = new Vector(); this.extent = new Vector(640, 480); - var scene2d = MarbleGame.canvas.scene2d; + var scene2d = hxd.Window.getInstance(); var offsetX = (scene2d.width - 1280) / 2; var offsetY = (scene2d.height - 720) / 2; diff --git a/src/gui/VersionGui.hx b/src/gui/VersionGui.hx index 85c80bcd..789db995 100644 --- a/src/gui/VersionGui.hx +++ b/src/gui/VersionGui.hx @@ -19,7 +19,7 @@ class VersionGui extends GuiImage { this.position = new Vector(); this.extent = new Vector(640, 480); - var scene2d = MarbleGame.canvas.scene2d; + var scene2d = hxd.Window.getInstance(); var offsetX = (scene2d.width - 1280) / 2; var offsetY = (scene2d.height - 720) / 2; diff --git a/src/gui/VideoOptionsGui.hx b/src/gui/VideoOptionsGui.hx index 3818a096..3695374a 100644 --- a/src/gui/VideoOptionsGui.hx +++ b/src/gui/VideoOptionsGui.hx @@ -23,7 +23,7 @@ class VideoOptionsGui extends GuiImage { this.position = new Vector(); this.extent = new Vector(640, 480); - var scene2d = MarbleGame.canvas.scene2d; + var scene2d = hxd.Window.getInstance(); var offsetX = (scene2d.width - 1280) / 2; var offsetY = (scene2d.height - 720) / 2; @@ -132,7 +132,7 @@ class VideoOptionsGui extends GuiImage { }, 0.35); rfOpt.setCurrentOption(Settings.optionsSettings.reflectionDetail); - #if js + #if (js || MACOS_BUNDLE) var pxOpt = optionCollection.addOption(1, "Pixel Ratio", ["Max 0.5", "Max 1", "Max 1.5", "Max 2", "Max Infinity"], (idx) -> { if (idx == 0) Settings.optionsSettings.maxPixelRatio = 0.5;