]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Updates to playerbasic, including status tracking and proper database init
authorSamual Lenks <samual@xonotic.org>
Mon, 17 Feb 2014 02:38:47 +0000 (21:38 -0500)
committerSamual Lenks <samual@xonotic.org>
Mon, 17 Feb 2014 02:38:47 +0000 (21:38 -0500)
qcsrc/common/playerstats.qc
qcsrc/common/playerstats.qh

index cb6e530c631a55e3d15f8ecd35ab704d1ed80435..fb28fd5563c42b14ddaa304d5de01da8f028d540 100644 (file)
@@ -419,33 +419,61 @@ void PlayerStats_GameReport_Handler(entity fh, entity pass, float status)
 
 void PlayerStats_PlayerBasic()
 {
-       entity player;
-       //PS_D_IN_DB = -1;
-       //PS_D_IN_DB = db_create();
+       if(autocvar_g_playerstats_playerbasic_uri != "")
+       {
+               entity player;
+               
+               // create the database if it doesn't already exist
+               if(PS_B_IN_DB < 0)
+               {
+                       PS_B_IN_DB = -1;
+                       PS_B_IN_DB = db_create();
+               }
 
-       //if(PS_D_IN_DB < 0) { return; }
+               FOR_EACH_REALCLIENT(player)
+               {
+                       string uri = autocvar_g_playerstats_playerbasic_uri;
+                       if((uri != "") && (player.crypto_idfp != ""))
+                       {
+                               uri = strcat(uri, "/player/", uri_escape(uri_escape(player.crypto_idfp)), "/elo.txt");
+                               print("Retrieving playerstats from URL: ", uri, "\n");
+                               url_single_fopen(
+                                       uri,
+                                       FILE_APPEND,
+                                       PlayerStats_PlayerBasic_Handler,
+                                       player
+                               );
+                       }
+
+                       /*p.crypto_idfp != "")
+                       {
+                               uri = strcat(uri, "/elo/", uri_escape(p.crypto_idfp));
+                               print("Retrieving playerstats from URL: ", uri, "\n");
+                               url_single_fopen(uri, FILE_READ, PlayerInfo_ready, p);
+                       }*/
+               }
 
-       FOR_EACH_REALCLIENT(player)
+               if(PlayerStats_PlayerBasic_Status == PS_B_STATUS_RECEIVED)
+               {
+                       // database still contains useful information, so don't clear it of a useful status
+                       PlayerStats_PlayerBasic_Status = PS_B_STATUS_UPDATING;
+               }
+               else
+               {
+                       // database was previously empty or never hit received status for some reason
+                       PlayerStats_PlayerBasic_Status = PS_B_STATUS_WAITING;
+               }
+       }
+       else
        {
-               string uri = autocvar_g_playerstats_playerbasic_uri;
-               if((uri != "") && (player.crypto_idfp != ""))
+               // player has this disabled, kill the DB and set status to idle
+               if(PS_B_IN_DB >= 0)
                {
-                       uri = strcat(uri, "/player/", uri_escape(uri_escape(player.crypto_idfp)), "/elo.txt");
-                       print("Retrieving playerstats from URL: ", uri, "\n");
-                       url_single_fopen(
-                               uri,
-                               FILE_APPEND,
-                               PlayerStats_PlayerBasic_Handler,
-                               player
-                       );
+                       db_close(PS_B_IN_DB);
+                       PS_B_IN_DB = -1;
                }
 
-               /*p.crypto_idfp != "")
-               {
-                       uri = strcat(uri, "/elo/", uri_escape(p.crypto_idfp));
-                       print("Retrieving playerstats from URL: ", uri, "\n");
-                       url_single_fopen(uri, FILE_READ, PlayerInfo_ready, p);
-               }*/
+               PlayerStats_PlayerBasic_Status = PS_B_STATUS_IDLE;
        }
 }
 
index 71c0029db4c96983d1660ea5de582cc255c5756e..3e794c102515fb49a5c20a9ea78c7c73c68a8823 100644 (file)
@@ -2,7 +2,7 @@
 //float PS_PM_IN_DB;   // playerstats_prematch_in_db      // db for info COLLECTED at the beginning of a match
 float PS_GR_OUT_DB;  // playerstats_gamereport_out_db   // db of info SENT at the end of a match
 //float PS_GR_IN_DB;   // playerstats_gamereport_in_db    // db for info COLLECTED at the end of a match
-//float PS_B_IN_DB;    // playerstats_playerbasic_in_db   // db for info COLLECTED for basic player info (ELO)
+float PS_B_IN_DB;    // playerstats_playerbasic_in_db   // db for info COLLECTED for basic player info (ELO)
 // http://stats.xonotic.org/player/GgXRw6piDtFIbMArMuiAi8JG4tiin8VLjZgsKB60Uds=/elo.txt -- this works, 
 // http://stats.xonotic.org/player/ENkUjf83vKMVZcNm%2F6Ao1EmXEj1apQ6XvdQTxwELvmA%3D/elo.txt -- but this doesn't?!?
 // ENkUjf83vKMVZcNm/6Ao1EmXEj1apQ6XvdQTxwELvmA=
@@ -90,6 +90,13 @@ void PlayerStats_GameReport_Handler(entity fh, entity pass, float status);
 
 string autocvar_g_playerstats_gamereport_ladder;
 var string autocvar_g_playerstats_gamereport_uri = "http://stats.xonotic.org/stats/submit";
+
+#define PS_B_STATUS_ERROR -2
+#define PS_B_STATUS_IDLE -1
+#define PS_B_STATUS_WAITING 0
+#define PS_B_STATUS_RECEIVED 1
+#define PS_B_STATUS_UPDATING 2
+var float PlayerStats_PlayerBasic_Status = PS_B_STATUS_IDLE;
 var string autocvar_g_playerstats_playerbasic_uri = "http://stats.xonotic.org";
 
 void PlayerStats_PlayerBasic();