mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
better mp message boxes
This commit is contained in:
parent
d7acac9227
commit
a0d01656ab
5 changed files with 141 additions and 21 deletions
|
|
@ -117,13 +117,14 @@ class JoinServerGui extends GuiImage {
|
|||
// return;
|
||||
// }
|
||||
|
||||
// MarbleGame.canvas.setContent(new MultiplayerLoadingGui("Connecting"));
|
||||
MarbleGame.canvas.setContent(new MPMessageGui("Please Wait", "Connecting"));
|
||||
var failed = true;
|
||||
haxe.Timer.delay(() -> {
|
||||
if (failed) {
|
||||
MarbleGame.canvas.setContent(new JoinServerGui());
|
||||
MarbleGame.canvas.pushDialog(new MessageBoxOkDlg("Failed to connect to server. Please try again."));
|
||||
Net.disconnect();
|
||||
if (MarbleGame.canvas.content is MPMessageGui) {
|
||||
var loadGui:MPMessageGui = cast MarbleGame.canvas.content;
|
||||
if (loadGui != null) {
|
||||
loadGui.setTexts("Error", "Failed to connect to server");
|
||||
}
|
||||
}
|
||||
}, 15000);
|
||||
Net.joinServer(ourServerList[curSelection].name, "", () -> {
|
||||
|
|
|
|||
106
src/gui/MPMessageGui.hx
Normal file
106
src/gui/MPMessageGui.hx
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
package gui;
|
||||
|
||||
import net.Net;
|
||||
import hxd.res.BitmapFont;
|
||||
import src.ResourceLoader;
|
||||
import h3d.Vector;
|
||||
import src.MarbleGame;
|
||||
import src.Util;
|
||||
import src.Settings;
|
||||
|
||||
class MPMessageGui extends GuiImage {
|
||||
public function new(titleText:String, msgText:String) {
|
||||
function chooseBg() {
|
||||
var rand = Math.random();
|
||||
if (rand >= 0 && rand <= 0.244)
|
||||
return ResourceLoader.getImage('data/ui/backgrounds/gold/${cast (Math.floor(Util.lerp(1, 12, Math.random())), Int)}.jpg');
|
||||
if (rand > 0.244 && rand <= 0.816)
|
||||
return ResourceLoader.getImage('data/ui/backgrounds/platinum/${cast (Math.floor(Util.lerp(1, 28, Math.random())), Int)}.jpg');
|
||||
return ResourceLoader.getImage('data/ui/backgrounds/ultra/${cast (Math.floor(Util.lerp(1, 9, Math.random())), Int)}.jpg');
|
||||
}
|
||||
var img = chooseBg();
|
||||
super(img.resource.toTile());
|
||||
|
||||
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 markerFelt32fontdata = ResourceLoader.getFileEntry("data/font/MarkerFelt.fnt");
|
||||
var markerFelt32b = new BitmapFont(markerFelt32fontdata.entry);
|
||||
@:privateAccess markerFelt32b.loader = ResourceLoader.loader;
|
||||
var markerFelt48 = markerFelt32b.toSdfFont(cast 42 * Settings.uiScale, MultiChannel);
|
||||
var markerFelt28 = markerFelt32b.toSdfFont(cast 26 * Settings.uiScale, MultiChannel);
|
||||
|
||||
this.horizSizing = Width;
|
||||
this.vertSizing = Height;
|
||||
this.position = new Vector(0, 0);
|
||||
this.extent = new Vector(640, 480);
|
||||
|
||||
var container = new GuiControl();
|
||||
container.horizSizing = Center;
|
||||
container.vertSizing = Center;
|
||||
container.position = new Vector(80, 60);
|
||||
container.extent = new Vector(640, 480);
|
||||
|
||||
this.addChild(container);
|
||||
|
||||
var wnd = new GuiImage(ResourceLoader.getResource("data/ui/mp/window.png", ResourceLoader.getImage, this.imageResources).toTile());
|
||||
wnd.position = new Vector(64, 91);
|
||||
wnd.extent = new Vector(511, 297);
|
||||
wnd.horizSizing = Center;
|
||||
wnd.vertSizing = Center;
|
||||
container.addChild(wnd);
|
||||
|
||||
var title = new GuiText(markerFelt48);
|
||||
title.text.text = titleText;
|
||||
title.text.textColor = 0xFFFFFF;
|
||||
title.text.dropShadow = {
|
||||
dx: 1,
|
||||
dy: 1,
|
||||
alpha: 0.5,
|
||||
color: 0
|
||||
};
|
||||
title.horizSizing = Center;
|
||||
title.position = new Vector(47, 26);
|
||||
title.extent = new Vector(416, 14);
|
||||
title.justify = Center;
|
||||
wnd.addChild(title);
|
||||
|
||||
var msg = new GuiText(markerFelt28);
|
||||
msg.text.text = msgText;
|
||||
msg.text.textColor = 0xFFFFFF;
|
||||
msg.text.dropShadow = {
|
||||
dx: 1,
|
||||
dy: 1,
|
||||
alpha: 0.5,
|
||||
color: 0
|
||||
};
|
||||
msg.horizSizing = Relative;
|
||||
msg.vertSizing = Relative;
|
||||
msg.position = new Vector(15, 136);
|
||||
msg.extent = new Vector(483, 65);
|
||||
msg.justify = Center;
|
||||
wnd.addChild(msg);
|
||||
|
||||
var cancelBtn = new GuiButton(loadButtonImages('data/ui/mp/join/cancel'));
|
||||
cancelBtn.position = new Vector(208, 210);
|
||||
cancelBtn.extent = new Vector(94, 45);
|
||||
cancelBtn.horizSizing = Center;
|
||||
cancelBtn.vertSizing = Top;
|
||||
cancelBtn.pressedAction = (e) -> {
|
||||
Net.disconnect();
|
||||
MarbleGame.canvas.setContent(new JoinServerGui());
|
||||
}
|
||||
wnd.addChild(cancelBtn);
|
||||
|
||||
setTexts = (t, m) -> {
|
||||
title.text.text = t;
|
||||
msg.text.text = m;
|
||||
}
|
||||
}
|
||||
|
||||
public dynamic function setTexts(titleText:String, msgText:String) {}
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
package net;
|
||||
|
||||
import gui.MPMessageGui;
|
||||
import gui.JoinServerGui;
|
||||
import gui.MessageBoxOkDlg;
|
||||
import src.MarbleGame;
|
||||
|
|
@ -295,8 +296,12 @@ class MasterServerClient {
|
|||
@:privateAccess Net.client.setRemoteDescription(sdpObj.sdp, sdpObj.type);
|
||||
}
|
||||
if (conts.type == "connectFailed") {
|
||||
MarbleGame.canvas.setContent(new JoinServerGui());
|
||||
MarbleGame.canvas.pushDialog(new MessageBoxOkDlg(conts.reason));
|
||||
if (MarbleGame.canvas.content is MPMessageGui) {
|
||||
var loadGui:MPMessageGui = cast MarbleGame.canvas.content;
|
||||
if (loadGui != null) {
|
||||
loadGui.setTexts("Error", conts.reason);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (conts.type == "turnserver") {
|
||||
Net.turnServer = conts.server; // Turn server!
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package net;
|
||||
|
||||
import gui.MPMessageGui;
|
||||
import gui.MessageBoxOkDlg;
|
||||
import gui.JoinServerGui;
|
||||
import gui.MPPreGameDlg;
|
||||
|
|
@ -214,8 +215,14 @@ class Net {
|
|||
MarbleGame.instance.quitMission();
|
||||
}
|
||||
if (!weLeftOurselves || forceShow) {
|
||||
MarbleGame.canvas.setContent(new JoinServerGui());
|
||||
MarbleGame.canvas.pushDialog(new MessageBoxOkDlg(msg));
|
||||
if (MarbleGame.canvas.content is MPMessageGui) {
|
||||
var loadGui:MPMessageGui = cast MarbleGame.canvas.content;
|
||||
if (loadGui != null) {
|
||||
loadGui.setTexts("Error", msg);
|
||||
}
|
||||
} else {
|
||||
MarbleGame.canvas.setContent(new MPMessageGui("Error", msg));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -289,12 +296,12 @@ class Net {
|
|||
}
|
||||
openFlags |= idx;
|
||||
if (openFlags == 3) {
|
||||
// if (MarbleGame.canvas.content is MultiplayerLoadingGui) {
|
||||
// var loadGui:MultiplayerLoadingGui = cast MarbleGame.canvas.content;
|
||||
// if (loadGui != null) {
|
||||
// loadGui.setLoadingStatus("Handshaking");
|
||||
// }
|
||||
// }
|
||||
if (MarbleGame.canvas.content is MPMessageGui) {
|
||||
var loadGui:MPMessageGui = cast MarbleGame.canvas.content;
|
||||
if (loadGui != null) {
|
||||
loadGui.setTexts("Please Wait", "Handshaking");
|
||||
}
|
||||
}
|
||||
Console.log("Successfully connected!");
|
||||
clients.set(client, new ClientConnection(0, client, clientDatachannel, clientDatachannelUnreliable)); // host is always 0
|
||||
clientIdMap[0] = clients[client];
|
||||
|
|
@ -420,8 +427,10 @@ class Net {
|
|||
if (MarbleGame.instance.world != null) {
|
||||
MarbleGame.instance.quitMission();
|
||||
}
|
||||
MarbleGame.canvas.setContent(new JoinServerGui());
|
||||
MarbleGame.canvas.pushDialog(new MessageBoxOkDlg("Timed out"));
|
||||
if (!(MarbleGame.canvas.content is MPMessageGui)) {
|
||||
var loadGui = new MPMessageGui("Error", "Timed out");
|
||||
MarbleGame.canvas.setContent(loadGui);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package net;
|
||||
|
||||
import gui.MPMessageGui;
|
||||
import gui.MessageBoxOkDlg;
|
||||
import gui.JoinServerGui;
|
||||
import gui.MPExitGameDlg;
|
||||
|
|
@ -270,16 +271,14 @@ class NetCommands {
|
|||
if (MarbleGame.instance.world != null) {
|
||||
MarbleGame.instance.quitMission();
|
||||
}
|
||||
MarbleGame.canvas.setContent(new JoinServerGui());
|
||||
MarbleGame.canvas.pushDialog(new MessageBoxOkDlg("Server closed"));
|
||||
MarbleGame.canvas.setContent(new MPMessageGui("Info", "Server closed"));
|
||||
}
|
||||
}
|
||||
|
||||
@:rpc(server) public static function getKicked() {
|
||||
if (Net.isClient) {
|
||||
Net.disconnect();
|
||||
MarbleGame.canvas.setContent(new JoinServerGui());
|
||||
MarbleGame.canvas.pushDialog(new MessageBoxOkDlg("Kicked from server"));
|
||||
MarbleGame.canvas.setContent(new MPMessageGui("Info", "You have been kicked from the server"));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue