CnC_Remastered_Collection

Command and Conquer: Red Alert
Log | Files | Refs | README | LICENSE

ISteamMatchmakingResponses.cs (18781B)


      1 // This file is provided under The MIT License as part of Steamworks.NET.
      2 // Copyright (c) 2013-2019 Riley Labrecque
      3 // Please see the included LICENSE.txt for additional information.
      4 
      5 // This file is automatically generated.
      6 // Changes to this file will be reverted when you update Steamworks.NET
      7 
      8 #if UNITY_ANDROID || UNITY_IOS || UNITY_TIZEN || UNITY_TVOS || UNITY_WEBGL || UNITY_WSA || UNITY_PS4 || UNITY_WII || UNITY_XBOXONE || UNITY_SWITCH
      9 #define DISABLESTEAMWORKS
     10 #endif
     11 
     12 #if !DISABLESTEAMWORKS
     13 
     14 // Unity 32bit Mono on Windows crashes with ThisCall for some reason, StdCall without the 'this' ptr is the only thing that works..?
     15 #if (UNITY_EDITOR_WIN && !UNITY_EDITOR_64) || (!UNITY_EDITOR && UNITY_STANDALONE_WIN && !UNITY_64)
     16 	#define NOTHISPTR
     17 #endif
     18 
     19 using System;
     20 using System.Runtime.InteropServices;
     21 
     22 namespace Steamworks {
     23 	//-----------------------------------------------------------------------------
     24 	// Purpose: Callback interface for receiving responses after a server list refresh
     25 	// or an individual server update.
     26 	//
     27 	// Since you get these callbacks after requesting full list refreshes you will
     28 	// usually implement this interface inside an object like CServerBrowser.  If that
     29 	// object is getting destructed you should use ISteamMatchMakingServers()->CancelQuery()
     30 	// to cancel any in-progress queries so you don't get a callback into the destructed
     31 	// object and crash.
     32 	//-----------------------------------------------------------------------------
     33 	public class ISteamMatchmakingServerListResponse {
     34 		// Server has responded ok with updated data
     35 		public delegate void ServerResponded(HServerListRequest hRequest, int iServer);
     36 		// Server has failed to respond
     37 		public delegate void ServerFailedToRespond(HServerListRequest hRequest, int iServer);
     38 		// A list refresh you had initiated is now 100% completed
     39 		public delegate void RefreshComplete(HServerListRequest hRequest, EMatchMakingServerResponse response);
     40 
     41 		private VTable m_VTable;
     42 		private IntPtr m_pVTable;
     43 		private GCHandle m_pGCHandle;
     44 		private ServerResponded m_ServerResponded;
     45 		private ServerFailedToRespond m_ServerFailedToRespond;
     46 		private RefreshComplete m_RefreshComplete;
     47 
     48 		public ISteamMatchmakingServerListResponse(ServerResponded onServerResponded, ServerFailedToRespond onServerFailedToRespond, RefreshComplete onRefreshComplete) {
     49 			if (onServerResponded == null || onServerFailedToRespond == null || onRefreshComplete == null) {
     50 				throw new ArgumentNullException();
     51 			}
     52 			m_ServerResponded = onServerResponded;
     53 			m_ServerFailedToRespond = onServerFailedToRespond;
     54 			m_RefreshComplete = onRefreshComplete;
     55 
     56 			m_VTable = new VTable() {
     57 				m_VTServerResponded = InternalOnServerResponded,
     58 				m_VTServerFailedToRespond = InternalOnServerFailedToRespond,
     59 				m_VTRefreshComplete = InternalOnRefreshComplete
     60 			};
     61 			m_pVTable = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(VTable)));
     62 			Marshal.StructureToPtr(m_VTable, m_pVTable, false);
     63 
     64 			m_pGCHandle = GCHandle.Alloc(m_pVTable, GCHandleType.Pinned);
     65 		}
     66 
     67 		~ISteamMatchmakingServerListResponse() {
     68 			if (m_pVTable != IntPtr.Zero) {
     69 				Marshal.FreeHGlobal(m_pVTable);
     70 			}
     71 
     72 			if (m_pGCHandle.IsAllocated) {
     73 				m_pGCHandle.Free();
     74 			}
     75 		}
     76 		
     77 #if NOTHISPTR
     78 		[UnmanagedFunctionPointer(CallingConvention.StdCall)]
     79 		private delegate void InternalServerResponded(HServerListRequest hRequest, int iServer);
     80 		[UnmanagedFunctionPointer(CallingConvention.StdCall)]
     81 		private delegate void InternalServerFailedToRespond(HServerListRequest hRequest, int iServer);
     82 		[UnmanagedFunctionPointer(CallingConvention.StdCall)]
     83 		private delegate void InternalRefreshComplete(HServerListRequest hRequest, EMatchMakingServerResponse response);
     84 		private void InternalOnServerResponded(HServerListRequest hRequest, int iServer) {
     85 			m_ServerResponded(hRequest, iServer);
     86 		}
     87 		private void InternalOnServerFailedToRespond(HServerListRequest hRequest, int iServer) {
     88 			m_ServerFailedToRespond(hRequest, iServer);
     89 		}
     90 		private void InternalOnRefreshComplete(HServerListRequest hRequest, EMatchMakingServerResponse response) {
     91 			m_RefreshComplete(hRequest, response);
     92 		}
     93 #else
     94 		[UnmanagedFunctionPointer(CallingConvention.ThisCall)]
     95 		private delegate void InternalServerResponded(IntPtr thisptr, HServerListRequest hRequest, int iServer);
     96 		[UnmanagedFunctionPointer(CallingConvention.ThisCall)]
     97 		private delegate void InternalServerFailedToRespond(IntPtr thisptr, HServerListRequest hRequest, int iServer);
     98 		[UnmanagedFunctionPointer(CallingConvention.ThisCall)]
     99 		private delegate void InternalRefreshComplete(IntPtr thisptr, HServerListRequest hRequest, EMatchMakingServerResponse response);
    100 		private void InternalOnServerResponded(IntPtr thisptr, HServerListRequest hRequest, int iServer) {
    101 			m_ServerResponded(hRequest, iServer);
    102 		}
    103 		private void InternalOnServerFailedToRespond(IntPtr thisptr, HServerListRequest hRequest, int iServer) {
    104 			m_ServerFailedToRespond(hRequest, iServer);
    105 		}
    106 		private void InternalOnRefreshComplete(IntPtr thisptr, HServerListRequest hRequest, EMatchMakingServerResponse response) {
    107 			m_RefreshComplete(hRequest, response);
    108 		}
    109 #endif
    110 
    111 		[StructLayout(LayoutKind.Sequential)]
    112 		private class VTable {
    113 			[NonSerialized]
    114 			[MarshalAs(UnmanagedType.FunctionPtr)]
    115 			public InternalServerResponded m_VTServerResponded;
    116 
    117 			[NonSerialized]
    118 			[MarshalAs(UnmanagedType.FunctionPtr)]
    119 			public InternalServerFailedToRespond m_VTServerFailedToRespond;
    120 
    121 			[NonSerialized]
    122 			[MarshalAs(UnmanagedType.FunctionPtr)]
    123 			public InternalRefreshComplete m_VTRefreshComplete;
    124 		}
    125 
    126 		public static explicit operator System.IntPtr(ISteamMatchmakingServerListResponse that) {
    127 			return that.m_pGCHandle.AddrOfPinnedObject();
    128 		}
    129 	};
    130 
    131 	//-----------------------------------------------------------------------------
    132 	// Purpose: Callback interface for receiving responses after pinging an individual server 
    133 	//
    134 	// These callbacks all occur in response to querying an individual server
    135 	// via the ISteamMatchmakingServers()->PingServer() call below.  If you are 
    136 	// destructing an object that implements this interface then you should call 
    137 	// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query
    138 	// which is in progress.  Failure to cancel in progress queries when destructing
    139 	// a callback handler may result in a crash when a callback later occurs.
    140 	//-----------------------------------------------------------------------------
    141 	public class ISteamMatchmakingPingResponse {
    142 		// Server has responded successfully and has updated data
    143 		public delegate void ServerResponded(gameserveritem_t server);
    144 
    145 		// Server failed to respond to the ping request
    146 		public delegate void ServerFailedToRespond();
    147 
    148 		private VTable m_VTable;
    149 		private IntPtr m_pVTable;
    150 		private GCHandle m_pGCHandle;
    151 		private ServerResponded m_ServerResponded;
    152 		private ServerFailedToRespond m_ServerFailedToRespond;
    153 
    154 		public ISteamMatchmakingPingResponse(ServerResponded onServerResponded, ServerFailedToRespond onServerFailedToRespond) {
    155 			if (onServerResponded == null || onServerFailedToRespond == null) {
    156 				throw new ArgumentNullException();
    157 			}
    158 			m_ServerResponded = onServerResponded;
    159 			m_ServerFailedToRespond = onServerFailedToRespond;
    160 
    161 			m_VTable = new VTable() {
    162 				m_VTServerResponded = InternalOnServerResponded,
    163 				m_VTServerFailedToRespond = InternalOnServerFailedToRespond,
    164 			};
    165 			m_pVTable = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(VTable)));
    166 			Marshal.StructureToPtr(m_VTable, m_pVTable, false);
    167 
    168 			m_pGCHandle = GCHandle.Alloc(m_pVTable, GCHandleType.Pinned);
    169 		}
    170 
    171 		~ISteamMatchmakingPingResponse() {
    172 			if (m_pVTable != IntPtr.Zero) {
    173 				Marshal.FreeHGlobal(m_pVTable);
    174 			}
    175 
    176 			if (m_pGCHandle.IsAllocated) {
    177 				m_pGCHandle.Free();
    178 			}
    179 		}
    180 
    181 #if NOTHISPTR
    182 		[UnmanagedFunctionPointer(CallingConvention.StdCall)]
    183 		private delegate void InternalServerResponded(gameserveritem_t server);
    184 		[UnmanagedFunctionPointer(CallingConvention.StdCall)]
    185 		private delegate void InternalServerFailedToRespond();
    186 		private void InternalOnServerResponded(gameserveritem_t server) {
    187 			m_ServerResponded(server);
    188 		}
    189 		private void InternalOnServerFailedToRespond() {
    190 			m_ServerFailedToRespond();
    191 		}
    192 #else
    193 		[UnmanagedFunctionPointer(CallingConvention.ThisCall)]
    194 		private delegate void InternalServerResponded(IntPtr thisptr, gameserveritem_t server);
    195 		[UnmanagedFunctionPointer(CallingConvention.ThisCall)]
    196 		private delegate void InternalServerFailedToRespond(IntPtr thisptr);
    197 		private void InternalOnServerResponded(IntPtr thisptr, gameserveritem_t server) {
    198 			m_ServerResponded(server);
    199 		}
    200 		private void InternalOnServerFailedToRespond(IntPtr thisptr) {
    201 			m_ServerFailedToRespond();
    202 		}
    203 #endif
    204 
    205 		[StructLayout(LayoutKind.Sequential)]
    206 		private class VTable {
    207 			[NonSerialized]
    208 			[MarshalAs(UnmanagedType.FunctionPtr)]
    209 			public InternalServerResponded m_VTServerResponded;
    210 
    211 			[NonSerialized]
    212 			[MarshalAs(UnmanagedType.FunctionPtr)]
    213 			public InternalServerFailedToRespond m_VTServerFailedToRespond;
    214 		}
    215 
    216 		public static explicit operator System.IntPtr(ISteamMatchmakingPingResponse that) {
    217 			return that.m_pGCHandle.AddrOfPinnedObject();
    218 		}
    219 	};
    220 
    221 	//-----------------------------------------------------------------------------
    222 	// Purpose: Callback interface for receiving responses after requesting details on
    223 	// who is playing on a particular server.
    224 	//
    225 	// These callbacks all occur in response to querying an individual server
    226 	// via the ISteamMatchmakingServers()->PlayerDetails() call below.  If you are 
    227 	// destructing an object that implements this interface then you should call 
    228 	// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query
    229 	// which is in progress.  Failure to cancel in progress queries when destructing
    230 	// a callback handler may result in a crash when a callback later occurs.
    231 	//-----------------------------------------------------------------------------
    232 	public class ISteamMatchmakingPlayersResponse {
    233 		// Got data on a new player on the server -- you'll get this callback once per player
    234 		// on the server which you have requested player data on.
    235 		public delegate void AddPlayerToList(string pchName, int nScore, float flTimePlayed);
    236 
    237 		// The server failed to respond to the request for player details
    238 		public delegate void PlayersFailedToRespond();
    239 
    240 		// The server has finished responding to the player details request 
    241 		// (ie, you won't get anymore AddPlayerToList callbacks)
    242 		public delegate void PlayersRefreshComplete();
    243 
    244 		private VTable m_VTable;
    245 		private IntPtr m_pVTable;
    246 		private GCHandle m_pGCHandle;
    247 		private AddPlayerToList m_AddPlayerToList;
    248 		private PlayersFailedToRespond m_PlayersFailedToRespond;
    249 		private PlayersRefreshComplete m_PlayersRefreshComplete;
    250 
    251 		public ISteamMatchmakingPlayersResponse(AddPlayerToList onAddPlayerToList, PlayersFailedToRespond onPlayersFailedToRespond, PlayersRefreshComplete onPlayersRefreshComplete) {
    252 			if (onAddPlayerToList == null || onPlayersFailedToRespond == null || onPlayersRefreshComplete == null) {
    253 				throw new ArgumentNullException();
    254 			}
    255 			m_AddPlayerToList = onAddPlayerToList;
    256 			m_PlayersFailedToRespond = onPlayersFailedToRespond;
    257 			m_PlayersRefreshComplete = onPlayersRefreshComplete;
    258 			
    259 			m_VTable = new VTable() {
    260 				m_VTAddPlayerToList = InternalOnAddPlayerToList,
    261 				m_VTPlayersFailedToRespond = InternalOnPlayersFailedToRespond,
    262 				m_VTPlayersRefreshComplete = InternalOnPlayersRefreshComplete
    263 			};
    264 			m_pVTable = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(VTable)));
    265 			Marshal.StructureToPtr(m_VTable, m_pVTable, false);
    266 
    267 			m_pGCHandle = GCHandle.Alloc(m_pVTable, GCHandleType.Pinned);
    268 		}
    269 
    270 		~ISteamMatchmakingPlayersResponse() {
    271 			if (m_pVTable != IntPtr.Zero) {
    272 				Marshal.FreeHGlobal(m_pVTable);
    273 			}
    274 
    275 			if (m_pGCHandle.IsAllocated) {
    276 				m_pGCHandle.Free();
    277 			}
    278 		}
    279 		
    280 #if NOTHISPTR
    281 		[UnmanagedFunctionPointer(CallingConvention.StdCall)]
    282 		public delegate void InternalAddPlayerToList(IntPtr pchName, int nScore, float flTimePlayed);
    283 		[UnmanagedFunctionPointer(CallingConvention.StdCall)]
    284 		public delegate void InternalPlayersFailedToRespond();
    285 		[UnmanagedFunctionPointer(CallingConvention.StdCall)]
    286 		public delegate void InternalPlayersRefreshComplete();
    287 		private void InternalOnAddPlayerToList(IntPtr pchName, int nScore, float flTimePlayed) {
    288 			m_AddPlayerToList(InteropHelp.PtrToStringUTF8(pchName), nScore, flTimePlayed);
    289 		}
    290 		private void InternalOnPlayersFailedToRespond() {
    291 			m_PlayersFailedToRespond();
    292 		}
    293 		private void InternalOnPlayersRefreshComplete() {
    294 			m_PlayersRefreshComplete();
    295 		}
    296 #else
    297 		[UnmanagedFunctionPointer(CallingConvention.ThisCall)]
    298 		public delegate void InternalAddPlayerToList(IntPtr thisptr, IntPtr pchName, int nScore, float flTimePlayed);
    299 		[UnmanagedFunctionPointer(CallingConvention.ThisCall)]
    300 		public delegate void InternalPlayersFailedToRespond(IntPtr thisptr);
    301 		[UnmanagedFunctionPointer(CallingConvention.ThisCall)]
    302 		public delegate void InternalPlayersRefreshComplete(IntPtr thisptr);
    303 		private void InternalOnAddPlayerToList(IntPtr thisptr, IntPtr pchName, int nScore, float flTimePlayed) {
    304 			m_AddPlayerToList(InteropHelp.PtrToStringUTF8(pchName), nScore, flTimePlayed);
    305 		}
    306 		private void InternalOnPlayersFailedToRespond(IntPtr thisptr) {
    307 			m_PlayersFailedToRespond();
    308 		}
    309 		private void InternalOnPlayersRefreshComplete(IntPtr thisptr) {
    310 			m_PlayersRefreshComplete();
    311 		}
    312 #endif
    313 
    314 		[StructLayout(LayoutKind.Sequential)]
    315 		private class VTable {
    316 			[NonSerialized]
    317 			[MarshalAs(UnmanagedType.FunctionPtr)]
    318 			public InternalAddPlayerToList m_VTAddPlayerToList;
    319 
    320 			[NonSerialized]
    321 			[MarshalAs(UnmanagedType.FunctionPtr)]
    322 			public InternalPlayersFailedToRespond m_VTPlayersFailedToRespond;
    323 
    324 			[NonSerialized]
    325 			[MarshalAs(UnmanagedType.FunctionPtr)]
    326 			public InternalPlayersRefreshComplete m_VTPlayersRefreshComplete;
    327 		}
    328 
    329 		public static explicit operator System.IntPtr(ISteamMatchmakingPlayersResponse that) {
    330 			return that.m_pGCHandle.AddrOfPinnedObject();
    331 		}
    332 	};
    333 
    334 	//-----------------------------------------------------------------------------
    335 	// Purpose: Callback interface for receiving responses after requesting rules
    336 	// details on a particular server.
    337 	//
    338 	// These callbacks all occur in response to querying an individual server
    339 	// via the ISteamMatchmakingServers()->ServerRules() call below.  If you are 
    340 	// destructing an object that implements this interface then you should call 
    341 	// ISteamMatchmakingServers()->CancelServerQuery() passing in the handle to the query
    342 	// which is in progress.  Failure to cancel in progress queries when destructing
    343 	// a callback handler may result in a crash when a callback later occurs.
    344 	//-----------------------------------------------------------------------------
    345 	public class ISteamMatchmakingRulesResponse {
    346 		// Got data on a rule on the server -- you'll get one of these per rule defined on
    347 		// the server you are querying
    348 		public delegate void RulesResponded(string pchRule, string pchValue);
    349 
    350 		// The server failed to respond to the request for rule details
    351 		public delegate void RulesFailedToRespond();
    352 
    353 		// The server has finished responding to the rule details request 
    354 		// (ie, you won't get anymore RulesResponded callbacks)
    355 		public delegate void RulesRefreshComplete();
    356 
    357 		private VTable m_VTable;
    358 		private IntPtr m_pVTable;
    359 		private GCHandle m_pGCHandle;
    360 		private RulesResponded m_RulesResponded;
    361 		private RulesFailedToRespond m_RulesFailedToRespond;
    362 		private RulesRefreshComplete m_RulesRefreshComplete;
    363 
    364 		public ISteamMatchmakingRulesResponse(RulesResponded onRulesResponded, RulesFailedToRespond onRulesFailedToRespond, RulesRefreshComplete onRulesRefreshComplete) {
    365 			if (onRulesResponded == null || onRulesFailedToRespond == null || onRulesRefreshComplete == null) {
    366 				throw new ArgumentNullException();
    367 			}
    368 			m_RulesResponded = onRulesResponded;
    369 			m_RulesFailedToRespond = onRulesFailedToRespond;
    370 			m_RulesRefreshComplete = onRulesRefreshComplete;
    371 
    372 			m_VTable = new VTable() {
    373 				m_VTRulesResponded = InternalOnRulesResponded,
    374 				m_VTRulesFailedToRespond = InternalOnRulesFailedToRespond,
    375 				m_VTRulesRefreshComplete = InternalOnRulesRefreshComplete
    376 			};
    377 			m_pVTable = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(VTable)));
    378 			Marshal.StructureToPtr(m_VTable, m_pVTable, false);
    379 
    380 			m_pGCHandle = GCHandle.Alloc(m_pVTable, GCHandleType.Pinned);
    381 		}
    382 
    383 		~ISteamMatchmakingRulesResponse() {
    384 			if (m_pVTable != IntPtr.Zero) {
    385 				Marshal.FreeHGlobal(m_pVTable);
    386 			}
    387 
    388 			if (m_pGCHandle.IsAllocated) {
    389 				m_pGCHandle.Free();
    390 			}
    391 		}
    392 		
    393 #if NOTHISPTR
    394 		[UnmanagedFunctionPointer(CallingConvention.StdCall)]
    395 		public delegate void InternalRulesResponded(IntPtr pchRule, IntPtr pchValue);
    396 		[UnmanagedFunctionPointer(CallingConvention.StdCall)]
    397 		public delegate void InternalRulesFailedToRespond();
    398 		[UnmanagedFunctionPointer(CallingConvention.StdCall)]
    399 		public delegate void InternalRulesRefreshComplete();
    400 		private void InternalOnRulesResponded(IntPtr pchRule, IntPtr pchValue) {
    401 			m_RulesResponded(InteropHelp.PtrToStringUTF8(pchRule), InteropHelp.PtrToStringUTF8(pchValue));
    402 		}
    403 		private void InternalOnRulesFailedToRespond() {
    404 			m_RulesFailedToRespond();
    405 		}
    406 		private void InternalOnRulesRefreshComplete() {
    407 			m_RulesRefreshComplete();
    408 		}
    409 #else
    410 		[UnmanagedFunctionPointer(CallingConvention.ThisCall)]
    411 		public delegate void InternalRulesResponded(IntPtr thisptr, IntPtr pchRule, IntPtr pchValue);
    412 		[UnmanagedFunctionPointer(CallingConvention.ThisCall)]
    413 		public delegate void InternalRulesFailedToRespond(IntPtr thisptr);
    414 		[UnmanagedFunctionPointer(CallingConvention.ThisCall)]
    415 		public delegate void InternalRulesRefreshComplete(IntPtr thisptr);
    416 		private void InternalOnRulesResponded(IntPtr thisptr, IntPtr pchRule, IntPtr pchValue) {
    417 			m_RulesResponded(InteropHelp.PtrToStringUTF8(pchRule), InteropHelp.PtrToStringUTF8(pchValue));
    418 		}
    419 		private void InternalOnRulesFailedToRespond(IntPtr thisptr) {
    420 			m_RulesFailedToRespond();
    421 		}
    422 		private void InternalOnRulesRefreshComplete(IntPtr thisptr) {
    423 			m_RulesRefreshComplete();
    424 		}
    425 #endif
    426 
    427 		[StructLayout(LayoutKind.Sequential)]
    428 		private class VTable {
    429 			[NonSerialized]
    430 			[MarshalAs(UnmanagedType.FunctionPtr)]
    431 			public InternalRulesResponded m_VTRulesResponded;
    432 
    433 			[NonSerialized]
    434 			[MarshalAs(UnmanagedType.FunctionPtr)]
    435 			public InternalRulesFailedToRespond m_VTRulesFailedToRespond;
    436 
    437 			[NonSerialized]
    438 			[MarshalAs(UnmanagedType.FunctionPtr)]
    439 			public InternalRulesRefreshComplete m_VTRulesRefreshComplete;
    440 		}
    441 
    442 		public static explicit operator System.IntPtr(ISteamMatchmakingRulesResponse that) {
    443 			return that.m_pGCHandle.AddrOfPinnedObject();
    444 		}
    445 	};
    446 }
    447 
    448 #endif // !DISABLESTEAMWORKS