]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
starting to add a warning for the demo dialog
authorDebugger <pyngot@hotmail.com>
Tue, 20 Aug 2013 18:12:02 +0000 (20:12 +0200)
committerDebugger <pyngot@hotmail.com>
Tue, 20 Aug 2013 18:12:02 +0000 (20:12 +0200)
qcsrc/menu/classes.c
qcsrc/menu/xonotic/dialog_multiplayer_media_demo.c
qcsrc/menu/xonotic/dialog_multiplayer_media_demo_democonfirm.c [new file with mode: 0644]
qcsrc/menu/xonotic/mainwindow.c

index 1a8d93bf79f951b7411a174cb2915ed2329b950f..f5fcfeda59790fbbfeda528083c374fc00f6cc10 100644 (file)
 #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"
index d25d787a9c2a9deeae7f9429fd8b1e55600aac50..0004ce477e893bf5c68516fe9ba8bc01f3d977eb 100644 (file)
@@ -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 (file)
index 0000000..c51e065
--- /dev/null
@@ -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
index d7707340b31bc5bc30806246c8c5ea2207b21e08..a82e07458c5992e3f9f3292a87be13ba191f5dc4 100644 (file)
@@ -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();