diff --git a/src/Main.hx b/src/Main.hx index 79059212..856c6cc7 100644 --- a/src/Main.hx +++ b/src/Main.hx @@ -1,5 +1,6 @@ package; +import gui.PresentsGui; import src.Debug; import src.Marbleland; import src.Console; @@ -81,11 +82,12 @@ class Main extends hxd.App { Settings.init(); Gamepad.init(); ResourceLoader.init(s2d, () -> { - MissionList.buildMissionList(); // Yeah pls AudioManager.init(); AudioManager.playShell(); Marbleland.init(); marbleGame = new MarbleGame(s2d, s3d); + MarbleGame.canvas.setContent(new PresentsGui()); + MissionList.buildMissionList(); // Yeah pls marbleGame.startPreviewWorld(() -> { marbleGame.setPreviewMission('urban', () -> { MarbleGame.canvas.setContent(new MainMenuGui()); diff --git a/src/gui/DifficultySelectGui.hx b/src/gui/DifficultySelectGui.hx new file mode 100644 index 00000000..e3e44c79 --- /dev/null +++ b/src/gui/DifficultySelectGui.hx @@ -0,0 +1,79 @@ +package gui; + +import h2d.filter.DropShadow; +import src.MarbleGame; +import gui.GuiControl.MouseState; +import hxd.res.BitmapFont; +import h3d.Vector; +import src.ResourceLoader; +import src.Settings; + +class DifficultySelectGui extends GuiImage { + public function new() { + var res = ResourceLoader.getImage("data/ui/xbox/BG_fadeOutSoftEdge.png").resource.toTile(); + super(res); + var domcasual32fontdata = ResourceLoader.getFileEntry("data/font/DomCasualD.fnt"); + var domcasual32b = new BitmapFont(domcasual32fontdata.entry); + @:privateAccess domcasual32b.loader = ResourceLoader.loader; + var domcasual32 = domcasual32b.toSdfFont(cast 42 * Settings.uiScale, MultiChannel); + + this.horizSizing = Width; + this.vertSizing = Height; + this.position = new Vector(); + this.extent = new Vector(640, 480); + + var scene2d = MarbleGame.canvas.scene2d; + + var offsetX = (scene2d.width - 1280) / 2; + var offsetY = (scene2d.height - 720) / 2; + + var subX = 640 - (scene2d.width - offsetX) * 640 / scene2d.width; + var subY = 480 - (scene2d.height - offsetY) * 480 / scene2d.height; + + var innerCtrl = new GuiControl(); + innerCtrl.position = new Vector(offsetX, offsetY); + innerCtrl.extent = new Vector(640 - subX, 480 - subY); + innerCtrl.horizSizing = Width; + innerCtrl.vertSizing = Height; + this.addChild(innerCtrl); + + var coliseumfontdata = ResourceLoader.getFileEntry("data/font/ColiseumRR.fnt"); + var coliseumb = new BitmapFont(coliseumfontdata.entry); + @:privateAccess coliseumb.loader = ResourceLoader.loader; + var coliseum = coliseumb.toSdfFont(cast 44 * Settings.uiScale, MultiChannel); + + var rootTitle = new GuiText(coliseum); + rootTitle.position = new Vector(100, 30); + rootTitle.extent = new Vector(1120, 80); + rootTitle.text.textColor = 0xFFFFFF; + rootTitle.text.text = "SELECT DIFFICULTY"; + rootTitle.text.alpha = 0.5; + innerCtrl.addChild(rootTitle); + + var btnList = new GuiXboxList(); + btnList.position = new Vector(70 - offsetX, 165); + btnList.horizSizing = Left; + btnList.extent = new Vector(502, 500); + innerCtrl.addChild(btnList); + + btnList.addButton(0, 'Beginner Levels', (e) -> {}); + btnList.addButton(0, 'Intermediate Levels', (e) -> {}); + btnList.addButton(0, 'Advanced Levels', (e) -> {}); + btnList.addButton(0, 'Gem Hunt', (e) -> {}, 20); + + var bottomBar = new GuiControl(); + bottomBar.position = new Vector(0, innerCtrl.extent.x * 590 / 480); + bottomBar.extent = new Vector(640, 200); + bottomBar.horizSizing = Width; + bottomBar.vertSizing = Bottom; + this.addChild(bottomBar); + + var backButton = new GuiXboxButton("Back", 160); + backButton.position = new Vector(-240, 0); + backButton.vertSizing = Bottom; + backButton.horizSizing = Left; + backButton.gamepadAccelerator = ["B"]; + backButton.pressedAction = (e) -> MarbleGame.canvas.setContent(new MainMenuGui()); + bottomBar.addChild(backButton); + } +} diff --git a/src/gui/MainMenuGui.hx b/src/gui/MainMenuGui.hx index e8b69ad9..8adeb804 100644 --- a/src/gui/MainMenuGui.hx +++ b/src/gui/MainMenuGui.hx @@ -12,11 +12,10 @@ import src.Replay; import src.Marbleland; import src.MissionList; -class MainMenuGui extends GuiControl { +class MainMenuGui extends GuiImage { public function new() { - // var img = ResourceLoader.getImage('data/ui/EngineSplashBG.jpg'); - // super(img.resource.toTile()); - super(); + var res = ResourceLoader.getImage("data/ui/xbox/BG_fadeOutSoftEdge.png").resource.toTile(); + super(res); var domcasual32fontdata = ResourceLoader.getFileEntry("data/font/DomCasualD.fnt"); var domcasual32b = new BitmapFont(domcasual32fontdata.entry); @:privateAccess domcasual32b.loader = ResourceLoader.loader; @@ -59,7 +58,7 @@ class MainMenuGui extends GuiControl { innerCtrl.addChild(btnList); btnList.addButton(0, "Single Player Game", (sender) -> { - cast(this.parent, Canvas).setContent(new PlayMissionGui()); + cast(this.parent, Canvas).setContent(new DifficultySelectGui()); }); btnList.addButton(2, "Leaderboards", (e) -> {}, 20); btnList.addButton(2, "Achievements", (e) -> {}); diff --git a/src/gui/PresentsGui.hx b/src/gui/PresentsGui.hx new file mode 100644 index 00000000..cd20573a --- /dev/null +++ b/src/gui/PresentsGui.hx @@ -0,0 +1,24 @@ +package gui; + +import h3d.Vector; +import src.ResourceLoader; +import gui.GuiImage; + +class PresentsGui extends GuiImage { + public function new() { + var img = ResourceLoader.getImage('data/ui/EngineSplashBG.jpg'); + super(img.resource.toTile()); + + this.horizSizing = Width; + this.vertSizing = Height; + this.position = new Vector(); + this.extent = new Vector(640, 480); + + var ggLogo = new GuiImage(ResourceLoader.getResource('data/ui/GG_logo.png', ResourceLoader.getImage, this.imageResources).toTile()); + ggLogo.horizSizing = Center; + ggLogo.vertSizing = Center; + ggLogo.position = new Vector(69, 99); + ggLogo.extent = new Vector(500, 383); + this.addChild(ggLogo); + } +}