remove references to glide in master
[carveJwlIkooP6JGAAIwe30JlM.git] / gameserver.c
index e641256c2ddc7f292afd0ef9f0c970b0ee07c48b..a93d705abc32204e2c5218f000f6545dec92c94b 100644 (file)
@@ -11,7 +11,6 @@ volatile sig_atomic_t sig_stop;
 
 #include "gameserver.h" 
 #include "highscores.c"
-#include "servermonitor_server.c"
 #include "vg/vg_opt.h"
 #include "network_common.h"
 #include "gameserver_db.h"
@@ -92,6 +91,9 @@ static void gameserver_player_join( int index ){
       alloca( sizeof(netmsg_playeritem) + ADDON_UID_MAX );
    item->inetmsg_id = k_inetmsg_playeritem;
 
+   netmsg_region *region = alloca( sizeof(netmsg_region) + NETWORK_REGION_MAX );
+   region->inetmsg_id = k_inetmsg_region;
+
    for( int i=0; i<vg_list_size(gameserver.clients); i++ ){
       struct gameserver_client *client = &gameserver.clients[i];
 
@@ -124,6 +126,17 @@ static void gameserver_player_join( int index ){
          gameserver_send_to_client( index, item, size,
                                     k_nSteamNetworkingSend_Reliable );
       }
+
+      /* region */
+      
+      region->client = i;
+      region->flags = client->region_flags;
+      u32 l = vg_strncpy( client->region, region->loc, NETWORK_REGION_MAX, 
+                          k_strncpy_always_add_null );
+      size = sizeof(netmsg_region) + l + 1;
+
+      gameserver_send_to_client( index, region, size,
+                                 k_nSteamNetworkingSend_Reliable );
    }
 }
 
@@ -626,6 +639,26 @@ static void gameserver_rx_200_300( SteamNetworkingMessage_t *msg ){
       gameserver_send_to_all( client_id, prop, sizeof(netmsg_chat)+l+1, 
                               k_nSteamNetworkingSend_Reliable );
    }
+   else if( tmp->inetmsg_id == k_inetmsg_region ){
+      netmsg_region *region = msg->m_pData,
+                    *prop = alloca( sizeof(netmsg_region) + NETWORK_REGION_MAX );
+
+      prop->inetmsg_id = k_inetmsg_region;
+      prop->client = client_id;
+      prop->flags = region->flags;
+
+      u32 l = network_msgstring( 
+            region->loc, msg->m_cbSize, sizeof(netmsg_region),
+            client->region, NETWORK_REGION_MAX );
+      client->region_flags = region->flags;
+
+      l = vg_strncpy( client->region, prop->loc, NETWORK_REGION_MAX, 
+                      k_strncpy_always_add_null );
+
+      gameserver_send_to_all( client_id, prop, sizeof(netmsg_region)+l+1, 
+                              k_nSteamNetworkingSend_Reliable );
+      vg_info( "client %d moved to region: %s\n", client_id, client->region );
+   }
    else {
       vg_warn( "Unknown inetmsg_id recieved from client. (%u)\n",
                tmp->inetmsg_id );
@@ -673,7 +706,7 @@ static enum request_status gameserver_cat_table(
    vg_strnull( &q, buf, 512 );
    vg_strcat( &q, "SELECT * FROM \"" );
    vg_strcat( &q, table_name );
-   vg_strcat( &q, "\" ORDER BY time DESC LIMIT 10;" );
+   vg_strcat( &q, "\" ORDER BY time ASC LIMIT 10;" );
    if( !vg_strgood(&q) )
       return k_request_status_out_of_memory;
 
@@ -889,19 +922,6 @@ static u64 seconds_to_server_ticks( double s ){
    return s / 0.01;
 }
 
-static void test_runner( db_request *req ){
-   vg_warn( "RUNNER\n" );
-   char table[DB_TABLE_UID_MAX];
-   if( db_get_highscore_table_name( "sr002-local-mp_mtzero", 
-                                    "Coastal Run", 0, table ) ){
-      if( db_writeusertime( table, 76561198072130043, 232, 1 ) ){
-         vg_success( "Written time\n" );
-         i32 v = db_readusertime( table, 76561198072130043 );
-         vg_success( "Returned time: %u\n", v );
-      }
-   }
-}
-
 int main( int argc, char *argv[] ){
    signal( SIGINT, inthandler );
    signal( SIGQUIT, inthandler );
@@ -911,21 +931,11 @@ int main( int argc, char *argv[] ){
    while( vg_argp( argc, argv ) ){
       if( vg_long_opt( "noauth" ) )
          gameserver.auth_mode = eServerModeNoAuthentication;
-
-      /* TODO: Options to override, ammend, remove etc */
    }
    
    vg_set_mem_quota( 80*1024*1024 );
    vg_alloc_quota();
-
    db_init();
-   db_request *req = db_alloc_request(0);
-   if( req ){
-      req->handler = test_runner;
-      db_send_request(req);
-   }
-
-   monitor_start_server(); /* UNIX socket monitor */
 
    /* steamworks init 
     * --------------------------------------------------------------- */
@@ -976,23 +986,15 @@ int main( int argc, char *argv[] ){
 
    u64 server_ticks = 8000,
        last_record_save = 8000,
-       last_scoreboard_gen = 0,
-       last_monitor_heartbeat = 0;
+       last_scoreboard_gen = 0;
 
    while( !sig_stop ){
-      monitor_event_loop();
       steamworks_event_loop( hsteampipe );
       poll_connections();
 
       usleep(10000);
       server_ticks ++;
 
-      if( server_ticks > 
-            (last_monitor_heartbeat + seconds_to_server_ticks(10.0))){
-         last_monitor_heartbeat = server_ticks;
-         monitor_heartbeat();
-      }
-
       if( db_killed() )
          break;
    }