#include "xonotic/dialog_hudpanel_centerprint.c"
#include "xonotic/slider_picmip.c"
#include "xonotic/dialog_settings_game_notification.c"
+#include "xonotic/dialog_multiplayer_media_demo_democonfirm.c"
ATTRIB(XonoticDemoBrowserTab, name, string, "DemoBrowser")
ENDCLASS(XonoticDemoBrowserTab)
entity makeXonoticDemoBrowserTab();
+void Demo_Confirm(entity me, entity btn);
#endif
#ifdef IMPLEMENTATION
+void DemoConfirm_Check_Gamestatus(entity me, entity btn)
+{
+ if not(gamestatus & (GAME_CONNECTED | GAME_ISSERVER)) // we're not in a match, lets watch the demo
+ {
+ //TimeDemo_Click;
+ //StartDemo_Click;
+ return;
+ }
+ else // already in a match, player has to confirm
+ {
+ Demo_Confirm(me, btn);
+ }
+}
+
entity makeXonoticDemoBrowserTab()
{
entity me;
me.gotoRC(me, me.rows - 1, 0);
me.TD(me, 1, me.columns / 2, e = makeXonoticButton(_("Timedemo"), '0 0 0'));
- e.onClick = TimeDemo_Click;
+ e.onClick = DemoConfirm_Check_Gamestatus;
e.onClickEntity = dlist;
me.TD(me, 1, me.columns / 2, e = makeXonoticButton(ZCTX(_("DEMO^Play")), '0 0 0'));
- e.onClick = StartDemo_Click;
+ e.onClick = DemoConfirm_Check_Gamestatus;
e.onClickEntity = dlist;
}
#endif
--- /dev/null
+#ifdef INTERFACE
+CLASS(XonoticDemoConfirmDialog) EXTENDS(XonoticDialog)
+ METHOD(XonoticDemoConfirmDialog, fill, void(entity))
+ ATTRIB(XonoticDemoConfirmDialog, title, string, _("Disconnect"))
+ ATTRIB(XonoticDemoConfirmDialog, color, vector, SKINCOLOR_DIALOG_HUDCONFIRM)
+ ATTRIB(XonoticDemoConfirmDialog, intendedWidth, float, 0.5)
+ ATTRIB(XonoticDemoConfirmDialog, rows, float, 4)
+ ATTRIB(XonoticDemoConfirmDialog, columns, float, 2)
+ENDCLASS(XonoticDemoConfirmDialog)
+#endif
+
+#ifdef IMPLEMENTATION
+void Demo_Confirm(entity me, entity btn)
+{
+ if not(gamestatus & (GAME_CONNECTED | GAME_ISSERVER))
+ //me.onClick = TimeDemo_Click;
+ me.onClick = StartDemo_Click;
+ else
+ localcmd("togglemenu 0\n");
+}
+
+void XonoticDemoConfirmDialog_fill(entity me)
+{
+ entity e;
+
+ me.TR(me);
+ me.TD(me, 1, 2, e = makeXonoticTextLabel(0.5, _("Playing a demo will disconnect you from the current match.")));
+ me.TR(me);
+ me.TD(me, 1, 2, e = makeXonoticTextLabel(0.5, _("Do you really wish to disconnect now?")));
+ me.TR(me);
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeXonoticButton(ZCTX(_("DMCNFRM^Yes")), '1 0 0'));
+ e.onClick = Demo_Confirm;
+ e.onClickEntity = me;
+ me.TD(me, 1, 1, e = makeXonoticButton(ZCTX(_("DMCNFRM^No")), '0 1 0'));
+ e.onClick = Dialog_Close;
+ e.onClickEntity = me;
+}
+#endif
ATTRIB(MainWindow, fadedAlpha, float, SKINALPHA_BEHIND)
ATTRIB(MainWindow, dialogToShow, entity, NULL)
ATTRIB(MainWindow, notificationDialog, entity, NULL)
+ ATTRIB(MainWindow, democonfirmDialog, entity, NULL)
ENDCLASS(MainWindow)
#endif
i.configureDialog(i);
me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+ me.democonfirmDialog = i = spawnXonoticDemoConfirmDialog();
+ i.configureDialog(i);
+ me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+
// dialogs used by multiplayer/create
me.mapInfoDialog = i = spawnXonoticMapInfoDialog();