]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/minigames/sv_minigames.qc
Merge branch 'master' into terencehill/translate_colors_2
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / minigames / sv_minigames.qc
index 73ad876cfe2da65435350ddb5718f46bcb99d7cc..7c19c43dd6f4f2d037ac56dc7c0aa9ee54d601bb 100644 (file)
@@ -25,7 +25,7 @@ void minigame_rmplayer(entity minigame_session, entity player)
                }
                minigame_session.minigame_event(minigame_session,"part",player);
                GameLogEcho(strcat(":minigame:part:",minigame_session.netname,":",
-                       ftos(num_for_edict(player)),":",player.netname));
+                       ftos(etof(player)),":",player.netname));
                minigame_session.minigame_players = p.list_next;
                remove ( p );
                player_clear_minigame(player);
@@ -38,7 +38,7 @@ void minigame_rmplayer(entity minigame_session, entity player)
                        {
                                minigame_session.minigame_event(minigame_session,"part",player);
                                GameLogEcho(strcat(":minigame:part:",minigame_session.netname,":",
-                                       ftos(num_for_edict(player)),":",player.netname));
+                                       ftos(etof(player)),":",player.netname));
                                p.list_next = e.list_next;
                                remove(e);
                                player_clear_minigame(player);
@@ -51,8 +51,6 @@ void minigame_rmplayer(entity minigame_session, entity player)
 
 
 #define FIELD(Flags, Type,Name) if ( sf & (Flags) ) Write##Type(MSG_ENTITY, self.Name);
-#define WriteVector(to,Name) WriteCoord(to,Name##_x); WriteCoord(to,Name##_y); WriteCoord(to,Name##_z)
-#define WriteVector2D(to,Name) WriteCoord(to,Name##_x); WriteCoord(to,Name##_y)
 #define MSLE(Name,Fields) \
        else if ( self.classname == #Name ) { \
                if ( sf & MINIG_SF_CREATE ) WriteString(MSG_ENTITY,self.owner.netname); \
@@ -60,9 +58,9 @@ void minigame_rmplayer(entity minigame_session, entity player)
 
 // Send an entity to a client
 // only use on minigame entities or entities with a minigame owner
-bool minigame_SendEntity(entity to, int sf)
-{SELFPARAM();
-       WriteByte(MSG_ENTITY, ENT_CLIENT_MINIGAME);
+bool minigame_SendEntity(entity this, entity to, int sf)
+{
+       WriteHeader(MSG_ENTITY, ENT_CLIENT_MINIGAME);
        WriteByte(MSG_ENTITY, sf);
 
        if ( sf & MINIG_SF_CREATE )
@@ -88,7 +86,7 @@ bool minigame_SendEntity(entity to, int sf)
                if ( sf & MINIG_SF_CREATE )
                {
                        WriteString(MSG_ENTITY,self.owner.netname);
-                       WriteLong(MSG_ENTITY,num_for_edict(self.minigame_players));
+                       WriteLong(MSG_ENTITY,etof(self.minigame_players));
                }
                if ( sf & MINIG_SF_UPDATE )
                        WriteByte(MSG_ENTITY,self.team);
@@ -131,13 +129,11 @@ int minigame_addplayer(entity minigame_session, entity player)
                        return 0;
                minigame_rmplayer(player.active_minigame,player);
        }
-
-       int mgteam = minigame_session.minigame_event(minigame_session,"join",player);
+       entity player_pointer = new(minigame_player);
+       int mgteam = minigame_session.minigame_event(minigame_session,"join",player,player_pointer);
 
        if ( mgteam )
        {
-               entity player_pointer = spawn();
-               player_pointer.classname = "minigame_player";
                player_pointer.owner = minigame_session;
                player_pointer.minigame_players = player;
                player_pointer.team = mgteam;
@@ -157,20 +153,13 @@ int minigame_addplayer(entity minigame_session, entity player)
 
                minigame_resend(minigame_session);
        }
+       else { remove(player_pointer); }
        GameLogEcho(strcat(":minigame:join",(mgteam?"":"fail"),":",minigame_session.netname,":",
-               ftos(num_for_edict(player)),":",player.netname));
+               ftos(etof(player)),":",player.netname));
 
        return mgteam;
 }
 
-void minigame_frame()
-{
-       entity minig = self;
-
-       minig.minigame_event(minig,"frame");
-       minig.nextthink = time + 0.1;
-}
-
 entity start_minigame(entity player, string minigame )
 {
        if ( !autocvar_sv_minigames || !IS_REAL_CLIENT(player) )
@@ -179,12 +168,9 @@ entity start_minigame(entity player, string minigame )
        entity e = minigame_get_descriptor(minigame);
        if ( e )
        {
-               entity minig = spawn();
-               minig.classname = "minigame";
-               minig.netname = strzone(strcat(e.netname,"_",ftos(num_for_edict(minig))));
+               entity minig = new(minigame);
+               minig.netname = strzone(strcat(e.netname,"_",ftos(etof(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));
@@ -249,7 +235,7 @@ void end_minigame(entity minigame_session)
        while( (e = findentity(e, owner, minigame_session)) )
                if ( e.minigame_autoclean )
                {
-                       LOG_TRACE("SV Auto-cleaned: ",ftos(num_for_edict(e)), " (",e.classname,")\n");
+                       LOG_TRACE("SV Auto-cleaned: ",ftos(etof(e)), " (",e.classname,")\n");
                        remove(e);
                }
 
@@ -288,7 +274,7 @@ string invite_minigame(entity inviter, entity player)
                inviter.active_minigame.netname, inviter.netname );
 
        GameLogEcho(strcat(":minigame:invite:",inviter.active_minigame.netname,":",
-               ftos(num_for_edict(player)),":",player.netname));
+               ftos(etof(player)),":",player.netname));
 
        return "";
 }
@@ -304,12 +290,13 @@ entity minigame_find_player(entity client)
        return world;
 }
 
-bool MinigameImpulse(int imp)
-{SELFPARAM();
-       entity e = minigame_find_player(self);
-       if ( imp && self.active_minigame && e )
+bool MinigameImpulse(entity this, int imp)
+{
+       if (!this.active_minigame) return false;
+       entity e = minigame_find_player(this);
+       if ( imp && this.active_minigame && e )
        {
-               return self.active_minigame.minigame_event(self.active_minigame,"impulse",e,imp);
+               return this.active_minigame.minigame_event(this.active_minigame,"impulse",e,imp);
        }
        return false;
 }
@@ -350,10 +337,7 @@ void ClientCommand_minigame(int request, int argc, string command)
                }
                else if ( minig_cmd == "list" )
                {
-                       FOREACH(MINIGAMES, true, LAMBDA(
-                       {
-                               sprint(self,it.netname," (",it.message,") ","\n");
-                       }));
+                       FOREACH(Minigames, true, sprint(self, it.netname, " (", it.message, ") ", "\n"));
                        return;
                }
                else if ( minig_cmd == "list-sessions" )