This repository was archived by the owner on Mar 10, 2025. It is now read-only.
forked from FoxCouncil/Steamworks.Core
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSteamMusic.cs
More file actions
157 lines (114 loc) · 4.65 KB
/
SteamMusic.cs
File metadata and controls
157 lines (114 loc) · 4.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
// !! // Steamworks.Core - SteamMusic.cs
// *.-". // Created: 2016-10-22 [2:42 PM]
// | | // Copyright 2016 // MIT License // The Fox Council
// Modified by: Fox Diller on 2016-10-22 @ 3:03 PM
#region Usings
using System;
using System.Runtime.InteropServices;
#endregion
namespace Steamworks.Core
{
public class SteamMusic : ISteamMusic
{
private readonly IntPtr m_instancePtr;
public SteamMusic(IntPtr c_instancePtr)
{
m_instancePtr = c_instancePtr;
}
private void CheckIfUsable()
{
if (m_instancePtr == IntPtr.Zero)
{
throw new InvalidOperationException("Steam Music Not Initialized!");
}
}
#region Native Methods
[DllImport(SteamApi.STEAMWORKS_MODULE_NAME, EntryPoint = "SteamAPI_ISteamMusic_BIsEnabled")]
internal static extern bool SteamAPI_ISteamMusic_BIsEnabled(IntPtr c_instancePtr);
[DllImport(SteamApi.STEAMWORKS_MODULE_NAME, EntryPoint = "SteamAPI_ISteamMusic_BIsPlaying")]
internal static extern bool SteamAPI_ISteamMusic_BIsPlaying(IntPtr c_instancePtr);
[DllImport(SteamApi.STEAMWORKS_MODULE_NAME, EntryPoint = "SteamAPI_ISteamMusic_GetPlaybackStatus")]
internal static extern int SteamAPI_ISteamMusic_GetPlaybackStatus(IntPtr c_instancePtr);
[DllImport(SteamApi.STEAMWORKS_MODULE_NAME, EntryPoint = "SteamAPI_ISteamMusic_Play")]
internal static extern void SteamAPI_ISteamMusic_Play(IntPtr c_instancePtr);
[DllImport(SteamApi.STEAMWORKS_MODULE_NAME, EntryPoint = "SteamAPI_ISteamMusic_Pause")]
internal static extern void SteamAPI_ISteamMusic_Pause(IntPtr c_instancePtr);
[DllImport(SteamApi.STEAMWORKS_MODULE_NAME, EntryPoint = "SteamAPI_ISteamMusic_PlayPrevious")]
internal static extern void SteamAPI_ISteamMusic_PlayPrevious(IntPtr c_instancePtr);
[DllImport(SteamApi.STEAMWORKS_MODULE_NAME, EntryPoint = "SteamAPI_ISteamMusic_PlayNext")]
internal static extern void SteamAPI_ISteamMusic_PlayNext(IntPtr c_instancePtr);
[DllImport(SteamApi.STEAMWORKS_MODULE_NAME, EntryPoint = "SteamAPI_ISteamMusic_SetVolume")]
internal static extern void SteamAPI_ISteamMusic_SetVolume(IntPtr c_instancePtr, float c_flVolume);
[DllImport(SteamApi.STEAMWORKS_MODULE_NAME, EntryPoint = "SteamAPI_ISteamMusic_GetVolume")]
internal static extern float SteamAPI_ISteamMusic_GetVolume(IntPtr c_instancePtr);
#endregion
#region Overrides of ISteamMusic
public override IntPtr GetIntPtr()
{
return m_instancePtr;
}
public override bool BIsEnabled()
{
CheckIfUsable();
var a_result = SteamAPI_ISteamMusic_BIsEnabled(m_instancePtr);
return a_result;
}
public override bool BIsPlaying()
{
CheckIfUsable();
var a_result = SteamAPI_ISteamMusic_BIsPlaying(m_instancePtr);
return a_result;
}
public override int GetPlaybackStatus()
{
CheckIfUsable();
var a_result = SteamAPI_ISteamMusic_GetPlaybackStatus(m_instancePtr);
return a_result;
}
public override void Play()
{
CheckIfUsable();
SteamAPI_ISteamMusic_Play(m_instancePtr);
}
public override void Pause()
{
CheckIfUsable();
SteamAPI_ISteamMusic_Pause(m_instancePtr);
}
public override void PlayPrevious()
{
CheckIfUsable();
SteamAPI_ISteamMusic_PlayPrevious(m_instancePtr);
}
public override void PlayNext()
{
CheckIfUsable();
SteamAPI_ISteamMusic_PlayNext(m_instancePtr);
}
public override void SetVolume(float c_flVolume)
{
CheckIfUsable();
SteamAPI_ISteamMusic_SetVolume(m_instancePtr, c_flVolume);
}
public override float GetVolume()
{
CheckIfUsable();
var a_result = SteamAPI_ISteamMusic_GetVolume(m_instancePtr);
return a_result;
}
#endregion
}
public abstract class ISteamMusic
{
public abstract IntPtr GetIntPtr();
public abstract bool BIsEnabled();
public abstract bool BIsPlaying();
public abstract int GetPlaybackStatus();
public abstract void Play();
public abstract void Pause();
public abstract void PlayPrevious();
public abstract void PlayNext();
public abstract void SetVolume(float c_flVolume);
public abstract float GetVolume();
}
}