From 3e24a57682cfa5c787fe04bc760b18b78c6a2c98 Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Tue, 4 Jul 2023 00:06:37 +0530 Subject: [PATCH] exit dlg flow --- src/gui/ExitGameDlg.hx | 12 ++++-- src/gui/MessageBoxYesNoDlg.hx | 75 ++++++++++++++--------------------- src/gui/ReplayNameDlg.hx | 37 +---------------- 3 files changed, 40 insertions(+), 84 deletions(-) diff --git a/src/gui/ExitGameDlg.hx b/src/gui/ExitGameDlg.hx index 897e04e8..5fe8c39a 100644 --- a/src/gui/ExitGameDlg.hx +++ b/src/gui/ExitGameDlg.hx @@ -75,7 +75,10 @@ class ExitGameDlg extends GuiImage { btnList.addButton(0, "Resume", (evt) -> noFunc(btnList)); btnList.addButton(0, "Restart", (evt) -> restartFunc(btnList)); - btnList.addButton(4, "Exit Level", (evt) -> yesFunc(btnList)); + btnList.addButton(4, "Exit Level", (evt) -> { + MarbleGame.canvas.pushDialog(new MessageBoxYesNoDlg("Are you sure you want to exit this level? You will lose your current level progress.", + () -> yesFunc(btnList), () -> {})); + }); btnList.addButton(3, "Help & Options", (evt) -> { MarbleGame.canvas.popDialog(this); MarbleGame.canvas.pushDialog(new OptionsListGui(true)); @@ -86,8 +89,11 @@ class ExitGameDlg extends GuiImage { MarbleGame.canvas.pushDialog(new AchievementsGui(true)); }); btnList.addButton(4, "Main Menu", (evt) -> { - yesFunc(btnList); - MarbleGame.canvas.setContent(new MainMenuGui()); + MarbleGame.canvas.pushDialog(new MessageBoxYesNoDlg("Are you sure you want to exit this level? You will lose your current level progress.", + () -> { + yesFunc(btnList); + MarbleGame.canvas.setContent(new MainMenuGui()); + }, () -> {})); }); } diff --git a/src/gui/MessageBoxYesNoDlg.hx b/src/gui/MessageBoxYesNoDlg.hx index f85e98c0..c46df13b 100644 --- a/src/gui/MessageBoxYesNoDlg.hx +++ b/src/gui/MessageBoxYesNoDlg.hx @@ -6,71 +6,56 @@ import h3d.Vector; import src.ResourceLoader; import src.Settings; -class MessageBoxYesNoDlg extends GuiControl { +class MessageBoxYesNoDlg extends GuiImage { public function new(text:String, yesFunc:Void->Void, noFunc:Void->Void) { - super(); + var res = ResourceLoader.getImage("data/ui/xbox/roundedBG.png").resource.toTile(); + super(res); this.horizSizing = Width; this.vertSizing = Height; this.position = new Vector(); this.extent = new Vector(640, 480); - var domcasual24fontdata = ResourceLoader.getFileEntry("data/font/DomCasualD.fnt"); - var domcasual24b = new BitmapFont(domcasual24fontdata.entry); - @:privateAccess domcasual24b.loader = ResourceLoader.loader; - var domcasual24 = domcasual24b.toSdfFont(cast 20 * Settings.uiScale, MultiChannel); + var arial14fontdata = ResourceLoader.getFileEntry("data/font/Arial Bold.fnt"); + var arial14b = new BitmapFont(arial14fontdata.entry); + @:privateAccess arial14b.loader = ResourceLoader.loader; + var arial14 = arial14b.toSdfFont(cast 21 * Settings.uiScale, h2d.Font.SDFChannel.MultiChannel); - function loadButtonImages(path:String) { - var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile(); - var hover = ResourceLoader.getResource('${path}_h.png', ResourceLoader.getImage, this.imageResources).toTile(); - var pressed = ResourceLoader.getResource('${path}_d.png', ResourceLoader.getImage, this.imageResources).toTile(); - return [normal, hover, pressed]; - } - - var yesNoFrame = new GuiImage(ResourceLoader.getResource("data/ui/common/dialog.png", ResourceLoader.getImage, this.imageResources).toTile()); + var yesNoFrame = new GuiImage(ResourceLoader.getResource("data/ui/xbox/popupGUI.png", ResourceLoader.getImage, this.imageResources).toTile()); yesNoFrame.horizSizing = Center; yesNoFrame.vertSizing = Center; - yesNoFrame.position = new Vector(187, 156); - yesNoFrame.extent = new Vector(265, 167); + yesNoFrame.position = new Vector(70, 30); + yesNoFrame.extent = new Vector(512, 400); this.addChild(yesNoFrame); - var yesNoText = new GuiMLText(domcasual24, null); - yesNoText.position = new Vector(33, 46); - yesNoText.horizSizing = Center; - yesNoText.extent = new Vector(198, 23); + var yesNoText = new GuiMLText(arial14, null); + yesNoText.position = new Vector(103, 85); + yesNoText.extent = new Vector(313, 186); yesNoText.text.text = text; - yesNoText.text.textColor = 0; - yesNoText.text.maxWidth = 198; + yesNoText.text.textColor = 0xEBEBEB; yesNoFrame.addChild(yesNoText); - var yesButton = new GuiButton(loadButtonImages("data/ui/common/yes")); - yesButton.position = new Vector(44, 94); - yesButton.extent = new Vector(82, 35); - yesButton.vertSizing = Top; - yesButton.accelerator = hxd.Key.ENTER; - yesButton.gamepadAccelerator = ["A"]; - yesButton.pressedAction = (sender) -> { + var okButton = new GuiXboxButton("Yes", 120); + okButton.position = new Vector(211, 248); + okButton.extent = new Vector(120, 94); + okButton.vertSizing = Top; + okButton.accelerator = hxd.Key.ENTER; + okButton.gamepadAccelerator = ["A"]; + okButton.pressedAction = (sender) -> { MarbleGame.canvas.popDialog(this); yesFunc(); } - yesNoFrame.addChild(yesButton); + yesNoFrame.addChild(okButton); - var noButton = new GuiButton(loadButtonImages("data/ui/common/no")); - noButton.position = new Vector(151, 94); - noButton.extent = new Vector(75, 35); - noButton.vertSizing = Top; - noButton.accelerator = hxd.Key.ESCAPE; - noButton.gamepadAccelerator = ["B"]; - noButton.pressedAction = (sender) -> { + var cancelButton = new GuiXboxButton("No", 120); + cancelButton.position = new Vector(321, 248); + cancelButton.extent = new Vector(120, 94); + cancelButton.vertSizing = Top; + cancelButton.accelerator = hxd.Key.ENTER; + cancelButton.gamepadAccelerator = ["A"]; + cancelButton.pressedAction = (sender) -> { MarbleGame.canvas.popDialog(this); noFunc(); } - yesNoFrame.addChild(noButton); - - if (yesNoText.text.getBounds().yMax > yesNoText.extent.y) { - var diff = yesNoText.text.getBounds().yMax - yesNoText.extent.y; - yesNoFrame.extent.y += diff; - yesButton.position.y += diff; - noButton.position.y += diff; - } + yesNoFrame.addChild(cancelButton); } } diff --git a/src/gui/ReplayNameDlg.hx b/src/gui/ReplayNameDlg.hx index 1ba1b05f..cfb63fbb 100644 --- a/src/gui/ReplayNameDlg.hx +++ b/src/gui/ReplayNameDlg.hx @@ -56,7 +56,7 @@ class ReplayNameDlg extends GuiImage { if (MarbleGame.instance.world.finishTime == null) { textInput.text.text += " Unfinished Run"; } else { - textInput.text.text += " " + MarbleGame.instance.world.finishTime.gameplayClock; + textInput.text.text += " " + MarbleGame.instance.world.gameMode.getFinishScore(); } var okButton = new GuiXboxButton("Ok", 120); @@ -86,40 +86,5 @@ class ReplayNameDlg extends GuiImage { callback(); } yesNoFrame.addChild(cancelButton); - - // var yesButton = new GuiButton(loadButtonImages("data/ui/common/ok")); - // yesButton.position = new Vector(171, 124); - // yesButton.extent = new Vector(95, 45); - // yesButton.vertSizing = Top; - // yesButton.accelerator = hxd.Key.ENTER; - // yesButton.gamepadAccelerator = ["A"]; - // yesButton.pressedAction = (sender) -> { - // if (StringTools.trim(textInput.text.text) != "") { - // MarbleGame.instance.recordingName = textInput.text.text; - // MarbleGame.canvas.popDialog(this); - // MarbleGame.instance.world.saveReplay(); - // callback(); - // } - // } - // yesNoFrame.addChild(yesButton); - - // var noButton = new GuiButton(loadButtonImages("data/ui/common/cancel")); - // noButton.position = new Vector(44, 124); - // noButton.extent = new Vector(88, 41); - // noButton.vertSizing = Top; - // noButton.accelerator = hxd.Key.ESCAPE; - // noButton.gamepadAccelerator = ["B"]; - // noButton.pressedAction = (sender) -> { - // MarbleGame.canvas.popDialog(this); - // callback(); - // } - // yesNoFrame.addChild(noButton); - - // if (yesNoText.text.getBounds().yMax > yesNoText.extent.y) { - // var diff = yesNoText.text.getBounds().yMax - yesNoText.extent.y; - // yesNoFrame.extent.y += diff; - // yesButton.position.y += diff; - // noButton.position.y += diff; - // } } }