]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/minigames/sv_minigames.qc
Merge branch 'master' into TimePath/spawnfunc
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / minigames / sv_minigames.qc
index 1bd9609dede6adfbe57056456d2da92779119485..36c54c18d6858a595a834ad7c726f9c0710eade2 100644 (file)
@@ -163,6 +163,14 @@ int minigame_addplayer(entity minigame_session, entity player)
        return mgteam;
 }
 
+void minigame_frame()
+{
+       entity minig = self;
+
+       minig.minigame_event(minig,"frame");
+       minig.nextthink = time;
+}
+
 entity start_minigame(entity player, string minigame )
 {
        if ( !autocvar_sv_minigames || !IS_REAL_CLIENT(player) )
@@ -175,6 +183,8 @@ entity start_minigame(entity player, string minigame )
                minig.classname = "minigame";
                minig.netname = strzone(strcat(e.netname,"_",ftos(num_for_edict(minig))));
                minig.descriptor = e;
+               minig.think = minigame_frame;
+               minig.nextthink = time;
                minig.minigame_event = e.minigame_event;
                minig.minigame_event(minig,"start");
                GameLogEcho(strcat(":minigame:start:",minig.netname));
@@ -263,25 +273,6 @@ void end_minigames()
        }
 }
 
-void initialize_minigames()
-{
-       entity last_minig = world;
-       entity minig;
-       #define MINIGAME(name,nicename) \
-               minig = spawn(); \
-               minig.classname = "minigame_descriptor"; \
-               minig.netname = #name; \
-               minig.message = nicename; \
-               minig.minigame_event = name##_server_event; \
-               if ( !last_minig ) minigame_descriptors = minig; \
-               else last_minig.list_next = minig; \
-               last_minig = minig;
-
-       REGISTERED_MINIGAMES
-
-       #undef MINIGAME
-}
-
 string invite_minigame(entity inviter, entity player)
 {
        if ( !inviter || !inviter.active_minigame )
@@ -359,9 +350,10 @@ void ClientCommand_minigame(int request, int argc, string command)
                }
                else if ( minig_cmd == "list" )
                {
-                       entity e;
-                       for ( e = minigame_descriptors; e != world; e = e.list_next )
-                               sprint(self,e.netname," (",e.message,") ","\n");
+                       FOREACH(MINIGAMES, true, LAMBDA(
+                       {
+                               sprint(self,it.netname," (",it.message,") ","\n");
+                       }));
                        return;
                }
                else if ( minig_cmd == "list-sessions" )