Files
LuaCsForBarotraumaEP/Libraries/Facepunch.Steamworks/SteamNative/SteamNative.SteamUtils.cs
2019-03-18 20:39:27 +02:00

240 lines
6.6 KiB
C#

using System;
using System.Runtime.InteropServices;
using System.Linq;
namespace SteamNative
{
internal unsafe class SteamUtils : IDisposable
{
//
// Holds a platform specific implentation
//
internal Platform.Interface platform;
internal Facepunch.Steamworks.BaseSteamworks steamworks;
//
// Constructor decides which implementation to use based on current platform
//
internal SteamUtils( Facepunch.Steamworks.BaseSteamworks steamworks, IntPtr pointer )
{
this.steamworks = steamworks;
if ( Platform.IsWindows64 ) platform = new Platform.Win64( pointer );
else if ( Platform.IsWindows32 ) platform = new Platform.Win32( pointer );
else if ( Platform.IsLinux32 ) platform = new Platform.Linux32( pointer );
else if ( Platform.IsLinux64 ) platform = new Platform.Linux64( pointer );
else if ( Platform.IsOsx ) platform = new Platform.Mac( pointer );
}
//
// Class is invalid if we don't have a valid implementation
//
public bool IsValid{ get{ return platform != null && platform.IsValid; } }
//
// When shutting down clear all the internals to avoid accidental use
//
public virtual void Dispose()
{
if ( platform != null )
{
platform.Dispose();
platform = null;
}
}
// bool
public bool BOverlayNeedsPresent()
{
return platform.ISteamUtils_BOverlayNeedsPresent();
}
// SteamAPICall_t
public CallbackHandle CheckFileSignature( string szFileName /*const char **/, Action<CheckFileSignature_t, bool> CallbackFunction = null /*Action<CheckFileSignature_t, bool>*/ )
{
SteamAPICall_t callback = 0;
callback = platform.ISteamUtils_CheckFileSignature( szFileName );
if ( CallbackFunction == null ) return null;
if ( callback == 0 ) return null;
return CheckFileSignature_t.CallResult( steamworks, callback, CallbackFunction );
}
// SteamAPICallFailure
public SteamAPICallFailure GetAPICallFailureReason( SteamAPICall_t hSteamAPICall /*SteamAPICall_t*/ )
{
return platform.ISteamUtils_GetAPICallFailureReason( hSteamAPICall.Value );
}
// bool
public bool GetAPICallResult( SteamAPICall_t hSteamAPICall /*SteamAPICall_t*/, IntPtr pCallback /*void **/, int cubCallback /*int*/, int iCallbackExpected /*int*/, ref bool pbFailed /*bool **/ )
{
return platform.ISteamUtils_GetAPICallResult( hSteamAPICall.Value, (IntPtr) pCallback, cubCallback, iCallbackExpected, ref pbFailed );
}
// uint
public uint GetAppID()
{
return platform.ISteamUtils_GetAppID();
}
// Universe
public Universe GetConnectedUniverse()
{
return platform.ISteamUtils_GetConnectedUniverse();
}
// bool
public bool GetCSERIPPort( out uint unIP /*uint32 **/, out ushort usPort /*uint16 **/ )
{
return platform.ISteamUtils_GetCSERIPPort( out unIP, out usPort );
}
// byte
public byte GetCurrentBatteryPower()
{
return platform.ISteamUtils_GetCurrentBatteryPower();
}
// bool
// with: Detect_StringFetch True
public string GetEnteredGamepadTextInput()
{
bool bSuccess = default( bool );
System.Text.StringBuilder pchText_sb = Helpers.TakeStringBuilder();
uint cchText = 4096;
bSuccess = platform.ISteamUtils_GetEnteredGamepadTextInput( pchText_sb, cchText );
if ( !bSuccess ) return null;
return pchText_sb.ToString();
}
// uint
public uint GetEnteredGamepadTextLength()
{
return platform.ISteamUtils_GetEnteredGamepadTextLength();
}
// bool
public bool GetImageRGBA( int iImage /*int*/, IntPtr pubDest /*uint8 **/, int nDestBufferSize /*int*/ )
{
return platform.ISteamUtils_GetImageRGBA( iImage, (IntPtr) pubDest, nDestBufferSize );
}
// bool
public bool GetImageSize( int iImage /*int*/, out uint pnWidth /*uint32 **/, out uint pnHeight /*uint32 **/ )
{
return platform.ISteamUtils_GetImageSize( iImage, out pnWidth, out pnHeight );
}
// uint
public uint GetIPCCallCount()
{
return platform.ISteamUtils_GetIPCCallCount();
}
// string
// with: Detect_StringReturn
public string GetIPCountry()
{
IntPtr string_pointer;
string_pointer = platform.ISteamUtils_GetIPCountry();
return Marshal.PtrToStringAnsi( string_pointer );
}
// uint
public uint GetSecondsSinceAppActive()
{
return platform.ISteamUtils_GetSecondsSinceAppActive();
}
// uint
public uint GetSecondsSinceComputerActive()
{
return platform.ISteamUtils_GetSecondsSinceComputerActive();
}
// uint
public uint GetServerRealTime()
{
return platform.ISteamUtils_GetServerRealTime();
}
// string
// with: Detect_StringReturn
public string GetSteamUILanguage()
{
IntPtr string_pointer;
string_pointer = platform.ISteamUtils_GetSteamUILanguage();
return Marshal.PtrToStringAnsi( string_pointer );
}
// bool
public bool IsAPICallCompleted( SteamAPICall_t hSteamAPICall /*SteamAPICall_t*/, ref bool pbFailed /*bool **/ )
{
return platform.ISteamUtils_IsAPICallCompleted( hSteamAPICall.Value, ref pbFailed );
}
// bool
public bool IsOverlayEnabled()
{
return platform.ISteamUtils_IsOverlayEnabled();
}
// bool
public bool IsSteamInBigPictureMode()
{
return platform.ISteamUtils_IsSteamInBigPictureMode();
}
// bool
public bool IsSteamRunningInVR()
{
return platform.ISteamUtils_IsSteamRunningInVR();
}
// bool
public bool IsVRHeadsetStreamingEnabled()
{
return platform.ISteamUtils_IsVRHeadsetStreamingEnabled();
}
// void
public void SetOverlayNotificationInset( int nHorizontalInset /*int*/, int nVerticalInset /*int*/ )
{
platform.ISteamUtils_SetOverlayNotificationInset( nHorizontalInset, nVerticalInset );
}
// void
public void SetOverlayNotificationPosition( NotificationPosition eNotificationPosition /*ENotificationPosition*/ )
{
platform.ISteamUtils_SetOverlayNotificationPosition( eNotificationPosition );
}
// void
public void SetVRHeadsetStreamingEnabled( bool bEnabled /*bool*/ )
{
platform.ISteamUtils_SetVRHeadsetStreamingEnabled( bEnabled );
}
// void
public void SetWarningMessageHook( IntPtr pFunction /*SteamAPIWarningMessageHook_t*/ )
{
platform.ISteamUtils_SetWarningMessageHook( (IntPtr) pFunction );
}
// bool
public bool ShowGamepadTextInput( GamepadTextInputMode eInputMode /*EGamepadTextInputMode*/, GamepadTextInputLineMode eLineInputMode /*EGamepadTextInputLineMode*/, string pchDescription /*const char **/, uint unCharMax /*uint32*/, string pchExistingText /*const char **/ )
{
return platform.ISteamUtils_ShowGamepadTextInput( eInputMode, eLineInputMode, pchDescription, unCharMax, pchExistingText );
}
// void
public void StartVRDashboard()
{
platform.ISteamUtils_StartVRDashboard();
}
}
}