exit dlg flow

This commit is contained in:
RandomityGuy 2023-07-04 00:06:37 +05:30
parent 198f6da696
commit 3e24a57682
3 changed files with 40 additions and 84 deletions

View file

@ -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());
}, () -> {}));
});
}

View file

@ -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);
}
}

View file

@ -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;
// }
}
}