From: Debugger Date: Tue, 20 Aug 2013 18:12:02 +0000 (+0200) Subject: starting to add a warning for the demo dialog X-Git-Tag: xonotic-v0.8.0~139^2~1^2~146 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=177b9cbb5146b1f0e0cfba837c3f18bcbc6f7a3d;p=xonotic%2Fxonotic-data.pk3dir.git starting to add a warning for the demo dialog --- diff --git a/qcsrc/menu/classes.c b/qcsrc/menu/classes.c index 1a8d93bf7..f5fcfeda5 100644 --- a/qcsrc/menu/classes.c +++ b/qcsrc/menu/classes.c @@ -117,3 +117,4 @@ #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" diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_media_demo.c b/qcsrc/menu/xonotic/dialog_multiplayer_media_demo.c index d25d787a9..0004ce477 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_media_demo.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_media_demo.c @@ -8,9 +8,24 @@ CLASS(XonoticDemoBrowserTab) EXTENDS(XonoticTab) 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; @@ -38,10 +53,10 @@ void XonoticDemoBrowserTab_fill(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 diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_media_demo_democonfirm.c b/qcsrc/menu/xonotic/dialog_multiplayer_media_demo_democonfirm.c new file mode 100644 index 000000000..c51e065bb --- /dev/null +++ b/qcsrc/menu/xonotic/dialog_multiplayer_media_demo_democonfirm.c @@ -0,0 +1,39 @@ +#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 diff --git a/qcsrc/menu/xonotic/mainwindow.c b/qcsrc/menu/xonotic/mainwindow.c index d7707340b..a82e07458 100644 --- a/qcsrc/menu/xonotic/mainwindow.c +++ b/qcsrc/menu/xonotic/mainwindow.c @@ -21,6 +21,7 @@ CLASS(MainWindow) EXTENDS(ModalController) ATTRIB(MainWindow, fadedAlpha, float, SKINALPHA_BEHIND) ATTRIB(MainWindow, dialogToShow, entity, NULL) ATTRIB(MainWindow, notificationDialog, entity, NULL) + ATTRIB(MainWindow, democonfirmDialog, entity, NULL) ENDCLASS(MainWindow) #endif @@ -153,6 +154,10 @@ void MainWindow_configureMainWindow(entity me) 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();