mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
some PMG
This commit is contained in:
parent
ea114423a9
commit
90f67366e0
5 changed files with 165 additions and 14 deletions
25
src/Main.hx
25
src/Main.hx
|
|
@ -65,14 +65,13 @@ class Main extends hxd.App {
|
|||
var mission = new Mission();
|
||||
mission.root = mis.root;
|
||||
|
||||
// canvas = new Canvas(s2d);
|
||||
canvas = new Canvas(s2d);
|
||||
|
||||
// canvas.setContent(new MainMenuGui());
|
||||
canvas.setContent(new MainMenuGui());
|
||||
// world = new MarbleWorld(s3d, s2d, mission);
|
||||
|
||||
world = new MarbleWorld(s3d, s2d, mission);
|
||||
|
||||
world.init();
|
||||
world.start();
|
||||
// world.init();
|
||||
// world.start();
|
||||
|
||||
fpsCounter = new Text(DefaultFont.get(), s2d);
|
||||
fpsCounter.y = 40;
|
||||
|
|
@ -81,17 +80,17 @@ class Main extends hxd.App {
|
|||
|
||||
override function update(dt:Float) {
|
||||
super.update(dt);
|
||||
// var wnd = Window.getInstance();
|
||||
// var mouseState:MouseState = {
|
||||
// position: new Vector(wnd.mouseX, wnd.mouseY)
|
||||
// }
|
||||
// canvas.update(dt, mouseState);
|
||||
world.update(dt);
|
||||
var wnd = Window.getInstance();
|
||||
var mouseState:MouseState = {
|
||||
position: new Vector(wnd.mouseX, wnd.mouseY)
|
||||
}
|
||||
canvas.update(dt, mouseState);
|
||||
// world.update(dt);
|
||||
fpsCounter.text = 'FPS: ${this.engine.fps}';
|
||||
}
|
||||
|
||||
override function render(e:h3d.Engine) {
|
||||
this.world.render(e);
|
||||
// this.world.render(e);
|
||||
super.render(e);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@ class GuiButton extends GuiAnim {
|
|||
// 1 is hover
|
||||
// 2 is pressed
|
||||
// 3 is disabled
|
||||
public var pressedAction:GuiControl->Void = null;
|
||||
|
||||
public function new(anim:Array<Tile>) {
|
||||
super(anim);
|
||||
}
|
||||
|
|
@ -26,4 +28,11 @@ class GuiButton extends GuiAnim {
|
|||
this.anim.currentFrame = 0;
|
||||
super.update(dt, mouseState);
|
||||
}
|
||||
|
||||
public override function onMouseRelease(mouseState:MouseState) {
|
||||
super.onMouseRelease(mouseState);
|
||||
if (this.pressedAction != null) {
|
||||
this.pressedAction(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package gui;
|
||||
|
||||
import hxd.Key;
|
||||
import h2d.Scene;
|
||||
import h2d.col.Bounds;
|
||||
import hxd.Window;
|
||||
|
|
@ -23,6 +24,7 @@ enum VertSizing {
|
|||
|
||||
typedef MouseState = {
|
||||
var position:Vector;
|
||||
var ?button:Int;
|
||||
}
|
||||
|
||||
@:publicFields
|
||||
|
|
@ -46,6 +48,33 @@ class GuiControl {
|
|||
}
|
||||
|
||||
public function update(dt:Float, mouseState:MouseState) {
|
||||
var renderRect = getRenderRectangle();
|
||||
if (renderRect.inRect(mouseState.position)) {
|
||||
if (Key.isPressed(Key.MOUSE_LEFT)) {
|
||||
mouseState.button = Key.MOUSE_LEFT;
|
||||
this.onMousePress(mouseState);
|
||||
}
|
||||
if (Key.isPressed(Key.MOUSE_RIGHT)) {
|
||||
mouseState.button = Key.MOUSE_RIGHT;
|
||||
this.onMousePress(mouseState);
|
||||
}
|
||||
if (Key.isReleased(Key.MOUSE_LEFT)) {
|
||||
mouseState.button = Key.MOUSE_LEFT;
|
||||
this.onMouseRelease(mouseState);
|
||||
}
|
||||
if (Key.isReleased(Key.MOUSE_RIGHT)) {
|
||||
mouseState.button = Key.MOUSE_RIGHT;
|
||||
this.onMouseRelease(mouseState);
|
||||
}
|
||||
if (Key.isDown(Key.MOUSE_LEFT)) {
|
||||
mouseState.button = Key.MOUSE_LEFT;
|
||||
this.onMouseDown(mouseState);
|
||||
}
|
||||
if (Key.isDown(Key.MOUSE_RIGHT)) {
|
||||
mouseState.button = Key.MOUSE_RIGHT;
|
||||
this.onMouseDown(mouseState);
|
||||
}
|
||||
}
|
||||
for (c in children) {
|
||||
c.update(dt, mouseState);
|
||||
}
|
||||
|
|
@ -122,4 +151,10 @@ class GuiControl {
|
|||
}
|
||||
this.children = [];
|
||||
}
|
||||
|
||||
public function onMouseDown(mouseState:MouseState) {}
|
||||
|
||||
public function onMousePress(mouseState:MouseState) {}
|
||||
|
||||
public function onMouseRelease(mouseState:MouseState) {}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package gui;
|
||||
|
||||
import hxd.Window;
|
||||
import gui.GuiControl.MouseState;
|
||||
import hxd.res.BitmapFont;
|
||||
import h3d.Vector;
|
||||
|
|
@ -43,6 +42,9 @@ class MainMenuGui extends GuiImage {
|
|||
var playButton = new GuiButton(loadButtonImages("data/ui/home/play"));
|
||||
playButton.position = new Vector(50, 113);
|
||||
playButton.extent = new Vector(270, 95);
|
||||
playButton.pressedAction = (sender) -> {
|
||||
cast(this.parent, Canvas).setContent(new PlayMissionGui());
|
||||
}
|
||||
homebase.addChild(playButton);
|
||||
|
||||
var helpButton = new GuiButton(loadButtonImages("data/ui/home/help"));
|
||||
|
|
@ -58,6 +60,9 @@ class MainMenuGui extends GuiImage {
|
|||
var exitButton = new GuiButton(loadButtonImages("data/ui/home/exit"));
|
||||
exitButton.position = new Vector(82, 358);
|
||||
exitButton.extent = new Vector(203, 88);
|
||||
exitButton.pressedAction = (sender) -> {
|
||||
Sys.exit(0);
|
||||
};
|
||||
homebase.addChild(exitButton);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
103
src/gui/PlayMissionGui.hx
Normal file
103
src/gui/PlayMissionGui.hx
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
package gui;
|
||||
|
||||
import src.ResourceLoader;
|
||||
import h3d.Vector;
|
||||
|
||||
class PlayMissionGui extends GuiImage {
|
||||
public function new() {
|
||||
super(ResourceLoader.getImage("data/ui/background.jpg").toTile());
|
||||
|
||||
this.horizSizing = Width;
|
||||
this.vertSizing = Height;
|
||||
this.extent = new Vector(640, 480);
|
||||
this.position = new Vector(0, 0);
|
||||
|
||||
var localContainer = new GuiControl();
|
||||
localContainer.horizSizing = Center;
|
||||
localContainer.vertSizing = Center;
|
||||
localContainer.position = new Vector(-1, 44);
|
||||
localContainer.extent = new Vector(651, 392);
|
||||
this.addChild(localContainer);
|
||||
|
||||
function loadButtonImages(path:String) {
|
||||
var normal = ResourceLoader.getImage('${path}_n.png').toTile();
|
||||
var hover = ResourceLoader.getImage('${path}_h.png').toTile();
|
||||
var pressed = ResourceLoader.getImage('${path}_d.png').toTile();
|
||||
return [normal, hover, pressed];
|
||||
}
|
||||
|
||||
var tabAdvanced = new GuiImage(ResourceLoader.getImage("data/ui/play/tab_adv.png").toTile());
|
||||
tabAdvanced.position = new Vector(410, 21);
|
||||
tabAdvanced.extent = new Vector(166, 43);
|
||||
localContainer.addChild(tabAdvanced);
|
||||
|
||||
var tabIntermediate = new GuiImage(ResourceLoader.getImage("data/ui/play/tab_inter.png").toTile());
|
||||
tabIntermediate.position = new Vector(213, 4);
|
||||
tabIntermediate.extent = new Vector(205, 58);
|
||||
localContainer.addChild(tabIntermediate);
|
||||
|
||||
var tabCustom = new GuiImage(ResourceLoader.getImage("data/ui/play/cust_tab.png").toTile());
|
||||
tabCustom.position = new Vector(589, 91);
|
||||
tabCustom.extent = new Vector(52, 198);
|
||||
localContainer.addChild(tabCustom);
|
||||
|
||||
var pmBox = new GuiImage(ResourceLoader.getImage("data/ui/play/playgui.png").toTile());
|
||||
pmBox.position = new Vector(0, 42);
|
||||
pmBox.extent = new Vector(610, 351);
|
||||
pmBox.horizSizing = Right;
|
||||
pmBox.vertSizing = Bottom;
|
||||
localContainer.addChild(pmBox);
|
||||
|
||||
var textWnd = new GuiImage(ResourceLoader.getImage("data/ui/play/text_window.png").toTile());
|
||||
textWnd.horizSizing = Right;
|
||||
textWnd.vertSizing = Bottom;
|
||||
textWnd.position = new Vector(31, 29);
|
||||
textWnd.extent = new Vector(276, 229);
|
||||
pmBox.addChild(textWnd);
|
||||
|
||||
var pmPreview = new GuiImage(ResourceLoader.getImage("data/missions/beginner/superspeed.jpg").toTile());
|
||||
pmPreview.position = new Vector(312, 42);
|
||||
pmPreview.extent = new Vector(258, 193);
|
||||
pmBox.addChild(pmPreview);
|
||||
|
||||
var levelWnd = new GuiImage(ResourceLoader.getImage("data/ui/play/level_window.png").toTile());
|
||||
levelWnd.position = new Vector();
|
||||
levelWnd.extent = new Vector(258, 194);
|
||||
pmPreview.addChild(levelWnd);
|
||||
|
||||
// TODO texts
|
||||
// var levelBkgnd = new GuiText()
|
||||
|
||||
var pmPlay = new GuiButton(loadButtonImages("data/ui/play/play"));
|
||||
pmPlay.position = new Vector(391, 257);
|
||||
pmPlay.extent = new Vector(121, 62);
|
||||
pmBox.addChild(pmPlay);
|
||||
|
||||
var pmPrev = new GuiButton(loadButtonImages("data/ui/play/prev"));
|
||||
pmPrev.position = new Vector(321, 260);
|
||||
pmPrev.extent = new Vector(77, 58);
|
||||
pmBox.addChild(pmPrev);
|
||||
|
||||
var pmNext = new GuiButton(loadButtonImages("data/ui/play/next"));
|
||||
pmNext.position = new Vector(507, 262);
|
||||
pmNext.extent = new Vector(75, 60);
|
||||
pmBox.addChild(pmNext);
|
||||
|
||||
var pmBack = new GuiButton(loadButtonImages("data/ui/play/back"));
|
||||
pmBack.position = new Vector(102, 260);
|
||||
pmBack.extent = new Vector(79, 61);
|
||||
pmBack.pressedAction = (sender) -> {
|
||||
cast(this.parent, Canvas).setContent(new MainMenuGui());
|
||||
};
|
||||
pmBox.addChild(pmBack);
|
||||
|
||||
// TODO Pm description
|
||||
|
||||
var tabBeginner = new GuiImage(ResourceLoader.getImage("data/ui/play/tab_begin.png").toTile());
|
||||
tabBeginner.position = new Vector(29, 2);
|
||||
tabBeginner.extent = new Vector(184, 55);
|
||||
localContainer.addChild(tabBeginner);
|
||||
|
||||
// TODO actual tab buttons
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue