mirror of
https://github.com/Facepunch/Facepunch.Steamworks.git
synced 2024-12-24 13:45:37 +03:00
Renamed Server file
This commit is contained in:
parent
b2db9b5304
commit
22cfc740b1
@ -292,7 +292,7 @@ public void CustomList()
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void PlayerList()
|
||||
public void Rules()
|
||||
{
|
||||
using ( var client = new Facepunch.Steamworks.Client( 252490 ) )
|
||||
{
|
||||
@ -309,7 +309,7 @@ public void PlayerList()
|
||||
client.Update();
|
||||
System.Threading.Thread.Sleep( 10 );
|
||||
|
||||
if ( query.Responded.Count > 0 && query.Responded.Any( x => x.Players > 5 ) )
|
||||
if ( query.Responded.Count > 20 )
|
||||
break;
|
||||
|
||||
if ( query.Finished )
|
||||
@ -318,14 +318,32 @@ public void PlayerList()
|
||||
|
||||
query.Dispose();
|
||||
|
||||
// var server = query.Responded.First( x => x.Players > 5 );
|
||||
// server.UpdateRules();
|
||||
|
||||
// foreach ( var rule in server.Rules )
|
||||
foreach ( var server in query.Responded.Take( 20 ) )
|
||||
{
|
||||
// Console.WriteLine( rule.Key + " = " + rule.Value );
|
||||
server.FetchRules();
|
||||
|
||||
int i = 0;
|
||||
while ( !server.HasRules )
|
||||
{
|
||||
i++;
|
||||
client.Update();
|
||||
System.Threading.Thread.Sleep( 2 );
|
||||
|
||||
if ( i > 100 )
|
||||
break;
|
||||
}
|
||||
|
||||
if ( server.HasRules )
|
||||
{
|
||||
foreach ( var rule in server.Rules )
|
||||
{
|
||||
Console.WriteLine( rule.Key + " = " + rule.Value );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -161,11 +161,11 @@ private void OnServer( gameserveritem_t info )
|
||||
{
|
||||
if ( info.m_bHadSuccessfulResponse )
|
||||
{
|
||||
Responded.Add( Server.FromSteam( info ) );
|
||||
Responded.Add( Server.FromSteam( client, info ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
Unresponsive.Add( Server.FromSteam( info ) );
|
||||
Unresponsive.Add( Server.FromSteam( client, info ) );
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ namespace Facepunch.Steamworks
|
||||
{
|
||||
public partial class ServerList
|
||||
{
|
||||
public struct Server
|
||||
public class Server
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public int Ping { get; set; }
|
||||
@ -26,13 +26,12 @@ public struct Server
|
||||
public int Version { get; set; }
|
||||
public string[] Tags { get; set; }
|
||||
public ulong SteamId { get; set; }
|
||||
|
||||
public uint Address { get; set; }
|
||||
|
||||
public int ConnectionPort { get; set; }
|
||||
|
||||
public int QueryPort { get; set; }
|
||||
|
||||
internal Client Client;
|
||||
|
||||
public string AddressString
|
||||
{
|
||||
get
|
||||
@ -48,10 +47,11 @@ public string ConnectionAddress
|
||||
}
|
||||
}
|
||||
|
||||
internal static Server FromSteam( gameserveritem_t item )
|
||||
internal static Server FromSteam( Client client, gameserveritem_t item )
|
||||
{
|
||||
return new Server()
|
||||
{
|
||||
Client = client,
|
||||
Address = item.m_NetAdr.m_unIP,
|
||||
ConnectionPort = item.m_NetAdr.m_usConnectionPort,
|
||||
QueryPort = item.m_NetAdr.m_usQueryPort,
|
||||
@ -72,6 +72,45 @@ internal static Server FromSteam( gameserveritem_t item )
|
||||
SteamId = item.m_steamID
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Callback when rules are receieved.
|
||||
/// The bool is true if server responded properly.
|
||||
/// </summary>
|
||||
public Action<bool> OnReceivedRules;
|
||||
|
||||
/// <summary>
|
||||
/// List of server rules. Use HasRules to see if this is safe to access.
|
||||
/// </summary>
|
||||
public Dictionary<string, string> Rules;
|
||||
|
||||
/// <summary>
|
||||
/// Returns true if this server has rules
|
||||
/// </summary>
|
||||
public bool HasRules { get { return Rules != null && Rules.Count > 0; } }
|
||||
|
||||
internal Interop.ServerRules RulesRequest;
|
||||
|
||||
/// <summary>
|
||||
/// Populates Rules for this server
|
||||
/// </summary>
|
||||
public void FetchRules()
|
||||
{
|
||||
if ( RulesRequest != null )
|
||||
return;
|
||||
|
||||
Rules = new Dictionary<string, string>();
|
||||
|
||||
RulesRequest = new Interop.ServerRules( this, Address, QueryPort );
|
||||
}
|
||||
|
||||
internal void OnServerRulesReceiveFinished( bool Success )
|
||||
{
|
||||
RulesRequest = null;
|
||||
|
||||
if ( OnReceivedRules != null )
|
||||
OnReceivedRules( Success );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -128,7 +128,6 @@ private void UpdateRequest()
|
||||
if ( status == Valve.Steamworks.EResult.k_EResultOK || status == Valve.Steamworks.EResult.k_EResultExpired )
|
||||
{
|
||||
RetrieveInventory();
|
||||
DestroyResult();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -187,6 +186,11 @@ private unsafe void RetrieveInventory()
|
||||
|
||||
SerializedExpireTime = DateTime.Now.Add( TimeSpan.FromMinutes( 60 ) );
|
||||
|
||||
//
|
||||
// Finished with this result, don't call it again
|
||||
//
|
||||
DestroyResult();
|
||||
|
||||
//
|
||||
// Tell everyone we've got new items!
|
||||
//
|
||||
|
Loading…
Reference in New Issue
Block a user