// Host_Map_f // // handle a // map <servername> // command from the console. Active clients are kicked off. static void Map_f() { if (Cmd.Source != cmd_source_t.src_command) { return; } Client.cls.demonum = -1; // stop demo loop in case this fails Client.Disconnect(); ShutdownServer(false); Key.Destination = keydest_t.key_game; // remove console or menu Scr.BeginLoadingPlaque(); Client.cls.mapstring = Cmd.JoinArgv() + "\n"; Server.svs.serverflags = 0; // haven't completed an episode yet string name = Cmd.Argv(1); Server.SpawnServer(name); if (!Server.IsActive) { return; } if (Client.cls.state != cactive_t.ca_dedicated) { Client.cls.spawnparms = Cmd.JoinArgv(); Cmd.ExecuteString("connect local", cmd_source_t.src_command); } }
/// <summary> /// CL_NextDemo /// /// Called to play the next demo in the demo loop /// </summary> public static void NextDemo() { if (cls.demonum == -1) { return; // don't play demos } Scr.BeginLoadingPlaque(); if (String.IsNullOrEmpty(cls.demos[cls.demonum]) || cls.demonum == MAX_DEMOS) { cls.demonum = 0; if (String.IsNullOrEmpty(cls.demos[cls.demonum])) { Con.Print("No demos listed with startdemos\n"); cls.demonum = -1; return; } } Cbuf.InsertText(String.Format("playdemo {0}\n", cls.demos[cls.demonum])); cls.demonum++; }
/// <summary> /// Host_Reconnect_f /// This command causes the client to wait for the signon messages again. /// This is sent just before a server changes levels /// </summary> static void Reconnect_f() { Scr.BeginLoadingPlaque(); Client.cls.signon = 0; // need new connection messages }