mirror of
https://github.com/Facepunch/Facepunch.Steamworks.git
synced 2024-12-25 14:15:47 +03:00
Add Friend.Nickname to get Steam nicknames for players
Expose FriendGameInfo.GameID so you can see what appID friends are playing
This commit is contained in:
parent
ee6572a380
commit
520ac1ca51
@ -40,7 +40,7 @@ public override string ToString()
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Return true if this user is playing the game we're running
|
/// Return true if this user is playing the game we're running
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsPlayingThisGame => GameInfo?.GameID == SteamClient.AppId;
|
public bool IsPlayingThisGame => GameInfo?.GameID is { Type: GameIdType.App } && GameInfo.Value.GameID.AppId == SteamClient.AppId;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns true if this friend is online
|
/// Returns true if this friend is online
|
||||||
@ -75,7 +75,26 @@ public async Task RequestInfoAsync()
|
|||||||
|
|
||||||
public Relationship Relationship => SteamFriends.Internal.GetFriendRelationship( Id );
|
public Relationship Relationship => SteamFriends.Internal.GetFriendRelationship( Id );
|
||||||
public FriendState State => SteamFriends.Internal.GetFriendPersonaState( Id );
|
public FriendState State => SteamFriends.Internal.GetFriendPersonaState( Id );
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the player's current Steam name.
|
||||||
|
/// <remarks>
|
||||||
|
/// Steam returns nicknames here if "Append nicknames to friends' names" is disabled in the Steam client.
|
||||||
|
/// </remarks>
|
||||||
|
/// </summary>
|
||||||
public string Name => SteamFriends.Internal.GetFriendPersonaName( Id );
|
public string Name => SteamFriends.Internal.GetFriendPersonaName( Id );
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the nickname that was set for this Steam player, if any.
|
||||||
|
/// <remarks>
|
||||||
|
/// Steam will never return nicknames if "Append nicknames to friends' names" is disabled in the Steam client.
|
||||||
|
/// </remarks>
|
||||||
|
/// </summary>
|
||||||
|
public string Nickname => SteamFriends.Internal.GetPlayerNickname( Id );
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the player's Steam name history.
|
||||||
|
/// </summary>
|
||||||
public IEnumerable<string> NameHistory
|
public IEnumerable<string> NameHistory
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@ -114,10 +133,10 @@ public bool IsIn( SteamId group_or_room )
|
|||||||
|
|
||||||
public struct FriendGameInfo
|
public struct FriendGameInfo
|
||||||
{
|
{
|
||||||
internal ulong GameID; // m_gameID class CGameID
|
|
||||||
internal uint GameIP; // m_unGameIP uint32
|
internal uint GameIP; // m_unGameIP uint32
|
||||||
internal ulong SteamIDLobby; // m_steamIDLobby class CSteamID
|
internal ulong SteamIDLobby; // m_steamIDLobby class CSteamID
|
||||||
|
|
||||||
|
public GameId GameID;
|
||||||
public int ConnectionPort;
|
public int ConnectionPort;
|
||||||
public int QueryPort;
|
public int QueryPort;
|
||||||
|
|
||||||
|
@ -1,25 +1,18 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
|
|
||||||
namespace Steamworks.Data
|
namespace Steamworks.Data
|
||||||
{
|
{
|
||||||
public struct GameId
|
public enum GameIdType : byte
|
||||||
{
|
{
|
||||||
// TODO - Be able to access these vars
|
App = 0,
|
||||||
|
GameMod = 1,
|
||||||
|
Shortcut = 2,
|
||||||
|
P2P = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
public struct GameId : IEquatable<GameId>
|
||||||
|
{
|
||||||
/*
|
/*
|
||||||
|
|
||||||
enum EGameIDType
|
|
||||||
{
|
|
||||||
k_EGameIDTypeApp = 0,
|
|
||||||
k_EGameIDTypeGameMod = 1,
|
|
||||||
k_EGameIDTypeShortcut = 2,
|
|
||||||
k_EGameIDTypeP2P = 3,
|
|
||||||
};
|
|
||||||
|
|
||||||
# ifdef VALVE_BIG_ENDIAN
|
# ifdef VALVE_BIG_ENDIAN
|
||||||
unsigned int m_nModID : 32;
|
unsigned int m_nModID : 32;
|
||||||
unsigned int m_nType : 8;
|
unsigned int m_nType : 8;
|
||||||
@ -30,8 +23,31 @@ enum EGameIDType
|
|||||||
unsigned int m_nModID : 32;
|
unsigned int m_nModID : 32;
|
||||||
#endif
|
#endif
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// 0xAAAAAAAA_BBCCCCCC
|
||||||
|
// A = m_nModID
|
||||||
|
// B = m_nType
|
||||||
|
// C = m_nAppID
|
||||||
public ulong Value;
|
public ulong Value;
|
||||||
|
|
||||||
|
public GameIdType Type
|
||||||
|
{
|
||||||
|
get => (GameIdType)(byte)( Value >> 24 );
|
||||||
|
set => Value = ( Value & 0xFFFFFFFF_00FFFFFF ) | ( (ulong)(byte)value << 24 );
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint AppId
|
||||||
|
{
|
||||||
|
get => (uint)( Value & 0x00000000_00FFFFFF );
|
||||||
|
set => Value = ( Value & 0xFFFFFFFF_FF000000 ) | (value & 0x00000000_00FFFFFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint ModId
|
||||||
|
{
|
||||||
|
get => (uint)( Value >> 32 );
|
||||||
|
set => Value = ( Value & 0x00000000_FFFFFFFF ) | ( (ulong)value << 32 );
|
||||||
|
}
|
||||||
|
|
||||||
public static implicit operator GameId( ulong value )
|
public static implicit operator GameId( ulong value )
|
||||||
{
|
{
|
||||||
return new GameId { Value = value };
|
return new GameId { Value = value };
|
||||||
@ -41,5 +57,30 @@ public static implicit operator ulong( GameId value )
|
|||||||
{
|
{
|
||||||
return value.Value;
|
return value.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool Equals(GameId other)
|
||||||
|
{
|
||||||
|
return Value == other.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Equals(object obj)
|
||||||
|
{
|
||||||
|
return obj is GameId other && Equals(other);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int GetHashCode()
|
||||||
|
{
|
||||||
|
return Value.GetHashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool operator ==(GameId left, GameId right)
|
||||||
|
{
|
||||||
|
return left.Equals(right);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool operator !=(GameId left, GameId right)
|
||||||
|
{
|
||||||
|
return !left.Equals(right);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user