]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
create menu_cmd isdemo
authordrjaska <drjaska83@gmail.com>
Fri, 8 Dec 2023 04:54:17 +0000 (06:54 +0200)
committerdrjaska <drjaska83@gmail.com>
Fri, 8 Dec 2023 04:54:17 +0000 (06:54 +0200)
commands.cfg
qcsrc/menu/command/menu_cmd.qc

index f7cc14eee8221306fbdf41a04c72d673e4293748..6e8e6b617e4137291a78c428c9849b6b7de968e0 100644 (file)
@@ -119,6 +119,7 @@ alias menu_showsandboxtools "menu_cmd directmenu SandboxTools"
 alias menu_showquitdialog "menu_cmd directmenu Quit"
 alias menu_showgamemenudialog "menu_cmd directmenu GameMenu"
 alias menu_showmonstertools "menu_cmd directmenu MonsterTools"
+alias menu_isdemo "menu_cmd isdemo ${* ?}"
 
 // command executed before loading a map by the menu
 // makes sure maxplayers is at least minplayers or minplayers_per_team * 4 or bot_number + 1
index 97deef1d47210678c81f470a22514cd7b7639bfd..b6f471fbfc373ab41f14c995979179a377b666e3 100644 (file)
@@ -54,6 +54,8 @@ void GameCommand(string theCommand)
                LOG_HELP("  'closemenu' closes the menu window named <item> (or the menu window containing an item named <item>)");
                LOG_HELP("   if <item> is not specified it shows the list of available items in the console");
                LOG_HELP("  'dumptree' dumps the state of the menu as a tree to the console");
+               LOG_HELP("  'isdemo' checks if engine is currently running a demo. If given an <item> then 1 / 0 is placed");
+               LOG_HELP("   in a cvar with that name. Otherwise _menu_isdemo cvar is written to.");
 
                LOG_HELP("\nGeneric commands shared by all programs:");
                GenericCommand_macro_help();
@@ -75,21 +77,21 @@ void GameCommand(string theCommand)
                return;
        }
 
-       string cmd = argv(0);
+       string argcmd = argv(0);
        string filter = string_null;
        bool close_mode = false;
-       if (cmd == "closemenu")
+       if (argcmd == "closemenu")
        {
                close_mode = true;
-               cmd = "directmenu";
+               argcmd = "directmenu";
        }
-       else if (cmd == "directpanelhudmenu")
+       else if (argcmd == "directpanelhudmenu")
        {
                filter = "HUD";
-               cmd = "directmenu";
+               argcmd = "directmenu";
        }
 
-       if (cmd == "directmenu")
+       if (argcmd == "directmenu")
        {
                if (argc == 1)
                {
@@ -201,6 +203,25 @@ void GameCommand(string theCommand)
                return;
        }
 
+       if (argv(0) == "isdemo")
+       {
+               if (isdemo())
+               {
+                       if (argv(1) != "")
+                               cvar_set(argv(1), "1");
+                       else
+                               localcmd("\nset _menu_isdemo 1\n");
+               }
+               else
+               {
+                       if (argv(1) != "")
+                               cvar_set(argv(1), "0");
+                       else
+                               localcmd("\nset _menu_isdemo 0\n");
+               }
+               return;
+       }
+
        if(MUTATOR_CALLHOOK(Menu_ConsoleCommand, ss, argc, theCommand)) // handled by a mutator
                return;