mirror of
https://github.com/Facepunch/Facepunch.Steamworks.git
synced 2024-12-26 06:35:49 +03:00
Addition of SteamNetworkingMessages (WIP)
Update of SteamClient Update of SteamServer
This commit is contained in:
parent
19953587a7
commit
15a9f334e4
107
Backup/Facepunch.Steamworks.sln
Normal file
107
Backup/Facepunch.Steamworks.sln
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 16
|
||||||
|
VisualStudioVersion = 16.0.29009.5
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Generator", "Generator\Generator.csproj", "{B7225D11-2AAA-49D6-AE93-A73696EA35FE}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Facepunch.Steamworks.Win64", "Facepunch.Steamworks\Facepunch.Steamworks.Win64.csproj", "{8C73DA93-73AD-4445-9A2C-15D4A44337D3}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Facepunch.Steamworks.Win32", "Facepunch.Steamworks\Facepunch.Steamworks.Win32.csproj", "{2D6247F6-8AB2-405F-A00E-3A364B808A55}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Facepunch.Steamworks.Posix", "Facepunch.Steamworks\Facepunch.Steamworks.Posix.csproj", "{C62FF421-BE44-4DB0-B99A-E13E007A30B9}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Facepunch.Steamworks.TestWin32", "Facepunch.Steamworks.Test\Facepunch.Steamworks.TestWin32.csproj", "{3F6183AD-D966-44F2-A6EB-42E61E591B49}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Facepunch.Steamworks.TestWin64", "Facepunch.Steamworks.Test\Facepunch.Steamworks.TestWin64.csproj", "{165081E3-BD96-404B-B83E-A635F1AF7CDE}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{B7225D11-2AAA-49D6-AE93-A73696EA35FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{B7225D11-2AAA-49D6-AE93-A73696EA35FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{B7225D11-2AAA-49D6-AE93-A73696EA35FE}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{B7225D11-2AAA-49D6-AE93-A73696EA35FE}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{B7225D11-2AAA-49D6-AE93-A73696EA35FE}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{B7225D11-2AAA-49D6-AE93-A73696EA35FE}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{B7225D11-2AAA-49D6-AE93-A73696EA35FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{B7225D11-2AAA-49D6-AE93-A73696EA35FE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{B7225D11-2AAA-49D6-AE93-A73696EA35FE}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{B7225D11-2AAA-49D6-AE93-A73696EA35FE}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{B7225D11-2AAA-49D6-AE93-A73696EA35FE}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{B7225D11-2AAA-49D6-AE93-A73696EA35FE}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{8C73DA93-73AD-4445-9A2C-15D4A44337D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{8C73DA93-73AD-4445-9A2C-15D4A44337D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{8C73DA93-73AD-4445-9A2C-15D4A44337D3}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{8C73DA93-73AD-4445-9A2C-15D4A44337D3}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{8C73DA93-73AD-4445-9A2C-15D4A44337D3}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{8C73DA93-73AD-4445-9A2C-15D4A44337D3}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{8C73DA93-73AD-4445-9A2C-15D4A44337D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{8C73DA93-73AD-4445-9A2C-15D4A44337D3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{8C73DA93-73AD-4445-9A2C-15D4A44337D3}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{8C73DA93-73AD-4445-9A2C-15D4A44337D3}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{8C73DA93-73AD-4445-9A2C-15D4A44337D3}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{8C73DA93-73AD-4445-9A2C-15D4A44337D3}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{2D6247F6-8AB2-405F-A00E-3A364B808A55}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{2D6247F6-8AB2-405F-A00E-3A364B808A55}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{2D6247F6-8AB2-405F-A00E-3A364B808A55}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{2D6247F6-8AB2-405F-A00E-3A364B808A55}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{2D6247F6-8AB2-405F-A00E-3A364B808A55}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{2D6247F6-8AB2-405F-A00E-3A364B808A55}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{2D6247F6-8AB2-405F-A00E-3A364B808A55}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{2D6247F6-8AB2-405F-A00E-3A364B808A55}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{2D6247F6-8AB2-405F-A00E-3A364B808A55}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{2D6247F6-8AB2-405F-A00E-3A364B808A55}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{2D6247F6-8AB2-405F-A00E-3A364B808A55}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{2D6247F6-8AB2-405F-A00E-3A364B808A55}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{C62FF421-BE44-4DB0-B99A-E13E007A30B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{C62FF421-BE44-4DB0-B99A-E13E007A30B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{C62FF421-BE44-4DB0-B99A-E13E007A30B9}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{C62FF421-BE44-4DB0-B99A-E13E007A30B9}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{C62FF421-BE44-4DB0-B99A-E13E007A30B9}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{C62FF421-BE44-4DB0-B99A-E13E007A30B9}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{C62FF421-BE44-4DB0-B99A-E13E007A30B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{C62FF421-BE44-4DB0-B99A-E13E007A30B9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{C62FF421-BE44-4DB0-B99A-E13E007A30B9}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{C62FF421-BE44-4DB0-B99A-E13E007A30B9}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{C62FF421-BE44-4DB0-B99A-E13E007A30B9}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{C62FF421-BE44-4DB0-B99A-E13E007A30B9}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{3F6183AD-D966-44F2-A6EB-42E61E591B49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{3F6183AD-D966-44F2-A6EB-42E61E591B49}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{3F6183AD-D966-44F2-A6EB-42E61E591B49}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{3F6183AD-D966-44F2-A6EB-42E61E591B49}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{3F6183AD-D966-44F2-A6EB-42E61E591B49}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{3F6183AD-D966-44F2-A6EB-42E61E591B49}.Debug|x86.Build.0 = Debug|x86
|
||||||
|
{3F6183AD-D966-44F2-A6EB-42E61E591B49}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{3F6183AD-D966-44F2-A6EB-42E61E591B49}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{3F6183AD-D966-44F2-A6EB-42E61E591B49}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{3F6183AD-D966-44F2-A6EB-42E61E591B49}.Release|x64.Build.0 = Release|x64
|
||||||
|
{3F6183AD-D966-44F2-A6EB-42E61E591B49}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{3F6183AD-D966-44F2-A6EB-42E61E591B49}.Release|x86.Build.0 = Release|x86
|
||||||
|
{165081E3-BD96-404B-B83E-A635F1AF7CDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{165081E3-BD96-404B-B83E-A635F1AF7CDE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{165081E3-BD96-404B-B83E-A635F1AF7CDE}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{165081E3-BD96-404B-B83E-A635F1AF7CDE}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{165081E3-BD96-404B-B83E-A635F1AF7CDE}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{165081E3-BD96-404B-B83E-A635F1AF7CDE}.Debug|x86.Build.0 = Debug|x86
|
||||||
|
{165081E3-BD96-404B-B83E-A635F1AF7CDE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{165081E3-BD96-404B-B83E-A635F1AF7CDE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{165081E3-BD96-404B-B83E-A635F1AF7CDE}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{165081E3-BD96-404B-B83E-A635F1AF7CDE}.Release|x64.Build.0 = Release|x64
|
||||||
|
{165081E3-BD96-404B-B83E-A635F1AF7CDE}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{165081E3-BD96-404B-B83E-A635F1AF7CDE}.Release|x86.Build.0 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {506FC2EC-38D1-45E2-BAE8-D61584162F7D}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio Version 16
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 16.0.29009.5
|
VisualStudioVersion = 17.6.33801.468
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Generator", "Generator\Generator.csproj", "{B7225D11-2AAA-49D6-AE93-A73696EA35FE}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Generator", "Generator\Generator.csproj", "{B7225D11-2AAA-49D6-AE93-A73696EA35FE}"
|
||||||
EndProject
|
EndProject
|
||||||
|
@ -59,6 +59,7 @@ public static void Init( uint appid, bool asyncCallbacks = true )
|
|||||||
AddInterface<SteamUtils>();
|
AddInterface<SteamUtils>();
|
||||||
AddInterface<SteamVideo>();
|
AddInterface<SteamVideo>();
|
||||||
AddInterface<SteamRemotePlay>();
|
AddInterface<SteamRemotePlay>();
|
||||||
|
AddInterface<SteamNetworkingMessages>();
|
||||||
|
|
||||||
initialized = openInterfaces.Count > 0;
|
initialized = openInterfaces.Count > 0;
|
||||||
|
|
||||||
|
10
Facepunch.Steamworks/SteamNetworkingFakeUDPPort.cs
Normal file
10
Facepunch.Steamworks/SteamNetworkingFakeUDPPort.cs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Steamworks
|
||||||
|
{
|
||||||
|
internal class SteamNetworkingFakeUDPPort
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
122
Facepunch.Steamworks/SteamNetworkingMessages.cs
Normal file
122
Facepunch.Steamworks/SteamNetworkingMessages.cs
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
using Steamworks.Data;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Steamworks
|
||||||
|
{
|
||||||
|
public enum SteamNetworkingOptions
|
||||||
|
{
|
||||||
|
Unreliable = 0,
|
||||||
|
NoNagle = 1,
|
||||||
|
UnreliableNoNagle = Unreliable | NoNagle,
|
||||||
|
NoDelay = 4,
|
||||||
|
UnreliableNoDelay = Unreliable | NoDelay | NoNagle,
|
||||||
|
Reliable = 8,
|
||||||
|
ReliableNoNagle = Reliable | NoNagle
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SteamNetworkingMessages : SteamSharedClass<SteamNetworkingMessages>
|
||||||
|
{
|
||||||
|
internal static ISteamNetworkingMessages Internal => Interface as ISteamNetworkingMessages;
|
||||||
|
|
||||||
|
internal override bool InitializeInterface( bool server )
|
||||||
|
{
|
||||||
|
SetInterface( server, new ISteamNetworkingMessages( server ) );
|
||||||
|
if ( Interface.Self == IntPtr.Zero ) return false;
|
||||||
|
|
||||||
|
InstallEvents( server );
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void InstallEvents( bool server )
|
||||||
|
{
|
||||||
|
Dispatch.Install<SteamNetworkingMessagesSessionRequest_t>( x => OnSessionRequest?.Invoke( x.DentityRemote), server );
|
||||||
|
Dispatch.Install<SteamNetworkingMessagesSessionFailed_t>( x => OnSessionFailed?.Invoke( x.Nfo), server );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Action<NetIdentity> OnSessionRequest;
|
||||||
|
|
||||||
|
public static Action<ConnectionInfo> OnSessionFailed;
|
||||||
|
|
||||||
|
public bool AcceptSessionWithUser( ref NetIdentity identity ) => Internal.AcceptSessionWithUser( ref identity );
|
||||||
|
public bool CloseSessionWithUser( ref NetIdentity identity ) => Internal.CloseSessionWithUser( ref identity );
|
||||||
|
public bool CloseChannelWithUser( ref NetIdentity identity, int channel ) => Internal.CloseChannelWithUser( ref identity, channel );
|
||||||
|
public ConnectionState GetSessionConnectionInfo( ref NetIdentity identity, ref ConnectionInfo info, ref ConnectionStatus status ) => Internal.GetSessionConnectionInfo( ref identity, ref info, ref status );
|
||||||
|
|
||||||
|
public static unsafe Result SendMessageToUser( ref NetIdentity identity, byte[] data, SteamNetworkingOptions flags, int channel)
|
||||||
|
{
|
||||||
|
uint length = (uint)data.Length;
|
||||||
|
fixed ( byte* p = data )
|
||||||
|
{
|
||||||
|
IntPtr[] pubData = new IntPtr[] { (IntPtr)p };
|
||||||
|
|
||||||
|
return Internal.SendMessageToUser( ref identity, pubData, length, (int)flags, channel );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public unsafe static int ReceiveMessagesOnChannel( int channel, Action<byte[], int, long , long , int> callback, int bufferSize = 32, bool receiveToEnd = true )
|
||||||
|
{
|
||||||
|
if ( bufferSize < 1 || bufferSize > 256 ) throw new ArgumentOutOfRangeException( nameof( bufferSize ) );
|
||||||
|
|
||||||
|
int totalProcessed = 0;
|
||||||
|
NetMsg** messageBuffer = stackalloc NetMsg*[bufferSize];
|
||||||
|
|
||||||
|
while ( true )
|
||||||
|
{
|
||||||
|
int processed = Internal.ReceiveMessagesOnChannel(channel, new IntPtr( &messageBuffer[0] ), bufferSize );
|
||||||
|
totalProcessed += processed;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
for ( int i = 0; i < processed; i++ )
|
||||||
|
{
|
||||||
|
ReceiveMessage( ref messageBuffer[i], callback );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
for ( int i = 0; i < processed; i++ )
|
||||||
|
{
|
||||||
|
if ( messageBuffer[i] != null )
|
||||||
|
{
|
||||||
|
NetMsg.InternalRelease( messageBuffer[i] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Keep going if receiveToEnd and we filled the buffer
|
||||||
|
//
|
||||||
|
if ( !receiveToEnd || processed < bufferSize )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return totalProcessed;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal unsafe static void ReceiveMessage( ref NetMsg* msg, Action<byte[], int, long, long, int> callback )
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
byte[] bytes = new byte[msg->DataSize];
|
||||||
|
Marshal.Copy(msg->DataPtr, bytes, 0, msg->DataSize);
|
||||||
|
callback( bytes, msg->DataSize, msg->RecvTime, msg->MessageNumber, msg->Channel );
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Releases the message
|
||||||
|
//
|
||||||
|
NetMsg.InternalRelease( msg );
|
||||||
|
msg = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -287,6 +287,10 @@ public static bool RequestFakeIP( int numFakePorts = 1 )
|
|||||||
return Internal.BeginAsyncRequestFakeIP( numFakePorts );
|
return Internal.BeginAsyncRequestFakeIP( numFakePorts );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static IntPtr CreateFakeUDPPort( int index )
|
||||||
|
{
|
||||||
|
return Internal.CreateFakeUDPPort( index );
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Return info about the FakeIP and port that we have been assigned, if any.
|
/// Return info about the FakeIP and port that we have been assigned, if any.
|
||||||
///
|
///
|
||||||
|
@ -107,6 +107,7 @@ public static void Init( AppId appid, SteamServerInit init, bool asyncCallbacks
|
|||||||
|
|
||||||
AddInterface<SteamNetworkingUtils>();
|
AddInterface<SteamNetworkingUtils>();
|
||||||
AddInterface<SteamNetworkingSockets>();
|
AddInterface<SteamNetworkingSockets>();
|
||||||
|
AddInterface<SteamNetworkingMessages>();
|
||||||
|
|
||||||
//
|
//
|
||||||
// Initial settings
|
// Initial settings
|
||||||
@ -291,6 +292,12 @@ public static void LogOnAnonymous()
|
|||||||
ForceHeartbeat();
|
ForceHeartbeat();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void LogOn(string token)
|
||||||
|
{
|
||||||
|
Internal.LogOn( token );
|
||||||
|
ForceHeartbeat();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Log off of Steam.
|
/// Log off of Steam.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
280
UpgradeLog.htm
Normal file
280
UpgradeLog.htm
Normal file
@ -0,0 +1,280 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- saved from url=(0014)about:internet -->
|
||||||
|
<html xmlns:msxsl="urn:schemas-microsoft-com:xslt"><head><meta content="en-us" http-equiv="Content-Language" /><meta content="text/html; charset=utf-16" http-equiv="Content-Type" /><title _locID="ConversionReport0">
|
||||||
|
Rapport de migration
|
||||||
|
</title><style>
|
||||||
|
/* Body style, for the entire document */
|
||||||
|
body
|
||||||
|
{
|
||||||
|
background: #F3F3F4;
|
||||||
|
color: #1E1E1F;
|
||||||
|
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Header1 style, used for the main title */
|
||||||
|
h1
|
||||||
|
{
|
||||||
|
padding: 10px 0px 10px 10px;
|
||||||
|
font-size: 21pt;
|
||||||
|
background-color: #E2E2E2;
|
||||||
|
border-bottom: 1px #C1C1C2 solid;
|
||||||
|
color: #201F20;
|
||||||
|
margin: 0;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Header2 style, used for "Overview" and other sections */
|
||||||
|
h2
|
||||||
|
{
|
||||||
|
font-size: 18pt;
|
||||||
|
font-weight: normal;
|
||||||
|
padding: 15px 0 5px 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Header3 style, used for sub-sections, such as project name */
|
||||||
|
h3
|
||||||
|
{
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 15pt;
|
||||||
|
margin: 0;
|
||||||
|
padding: 15px 0 5px 0;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Color all hyperlinks one color */
|
||||||
|
a
|
||||||
|
{
|
||||||
|
color: #1382CE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Table styles */
|
||||||
|
table
|
||||||
|
{
|
||||||
|
border-spacing: 0 0;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: 10pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
table th
|
||||||
|
{
|
||||||
|
background: #E7E7E8;
|
||||||
|
text-align: left;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
padding: 3px 6px 3px 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table td
|
||||||
|
{
|
||||||
|
vertical-align: top;
|
||||||
|
padding: 3px 6px 5px 5px;
|
||||||
|
margin: 0px;
|
||||||
|
border: 1px solid #E7E7E8;
|
||||||
|
background: #F7F7F8;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Local link is a style for hyperlinks that link to file:/// content, there are lots so color them as 'normal' text until the user mouse overs */
|
||||||
|
.localLink
|
||||||
|
{
|
||||||
|
color: #1E1E1F;
|
||||||
|
background: #EEEEED;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.localLink:hover
|
||||||
|
{
|
||||||
|
color: #1382CE;
|
||||||
|
background: #FFFF99;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Center text, used in the over views cells that contain message level counts */
|
||||||
|
.textCentered
|
||||||
|
{
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The message cells in message tables should take up all avaliable space */
|
||||||
|
.messageCell
|
||||||
|
{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Padding around the content after the h1 */
|
||||||
|
#content
|
||||||
|
{
|
||||||
|
padding: 0px 12px 12px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The overview table expands to width, with a max width of 97% */
|
||||||
|
#overview table
|
||||||
|
{
|
||||||
|
width: auto;
|
||||||
|
max-width: 75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The messages tables are always 97% width */
|
||||||
|
#messages table
|
||||||
|
{
|
||||||
|
width: 97%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* All Icons */
|
||||||
|
.IconSuccessEncoded, .IconInfoEncoded, .IconWarningEncoded, .IconErrorEncoded
|
||||||
|
{
|
||||||
|
min-width:18px;
|
||||||
|
min-height:18px;
|
||||||
|
background-repeat:no-repeat;
|
||||||
|
background-position:center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Success icon encoded */
|
||||||
|
.IconSuccessEncoded
|
||||||
|
{
|
||||||
|
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
|
||||||
|
/* [---XsltValidateInternal-Base64EncodedImage:IconSuccess#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
|
||||||
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABcElEQVR4Xq2TsUsCURzHv15g8ZJcBWlyiYYgCIWcb9DFRRwMW5TA2c0/QEFwFkxxUQdxVlBwCYWOi6IhWgQhBLHJUCkhLr/BW8S7gvrAg+N+v8/v+x68Z8MGy+XSCyABQAXgBgHGALoASkIIDWSLeLBetdHryMjd5IxQPWT4rn1c/P7+xxp72Cs9m5SZ0Bq2vPnbPFafK2zDvmNHypdC0BPkLlQhxJsCAhQoZwdZU5mwxh720qGo8MzTxTTKZDPCx2HoVzp6lz0Q9tKhyx0kGs8Ny+TkWRKk8lCROwEduhyg9l/6lunOPSfmH3NUH6uQ0KHLAe7JYvJjevm+DAMGJHToKtigE+vwvIidxLamb8IBY9e+C5LiXREkfho3TSd06HJA13/oh6T51MTsfQbHrsMynQ5dDihFjiK8JJAU9AKIWTp76dCVN7HWHrajmUEGvyF9nkbAE6gLIS7kTUyuf2gscLoJrElZo/Mvj+nPz/kLTmfnEwP3tB0AAAAASUVORK5CYII=);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Information icon encoded */
|
||||||
|
.IconInfoEncoded
|
||||||
|
{
|
||||||
|
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
|
||||||
|
/* [---XsltValidateInternal-Base64EncodedImage:IconInformation#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
|
||||||
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHElEQVR4Xs2TsUoDQRRF7wwoziokjZUKadInhdhukR9YP8DMX1hYW+QvdsXa/QHBbcXC7W0CamWTQnclFutceIQJwwaWNLlwm5k5d94M76mmaeCrrmsLYOocY12FcxZFUeozCqKqqgYA8uevv1H6VuPxcwlfk5N92KHBxfFeCSAxxswlYAW/Xr989x/mv9gkhtyMDhcAxgzRsp7flj8B/HF1RsMXq+NZMkopaHe7lbKxQUEIGbKsYNoGn969060hZBkQex/W8oRQwsQaW2o3Ago2SVcJUzAgY3N0lTCZZm+zPS8HB51gMmS1DEYyOz9acKO1D8JWTlafKIMxdhvlfdyT94Vv5h7P8Ky7nQzACmhvKq3zk3PjW9asz9D/1oigecsioooAAAAASUVORK5CYII=);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Warning icon encoded */
|
||||||
|
.IconWarningEncoded
|
||||||
|
{
|
||||||
|
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
|
||||||
|
/* [---XsltValidateInternal-Base64EncodedImage:IconWarning#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
|
||||||
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAx0lEQVR4XpWSMQ7CMAxFf4xAyBMLCxMrO8dhaBcuwdCJS3RJBw7SA/QGTCxdWJgiQYWKXJWKIXHIlyw5lqr34tQgEOdcBsCOx5yZK3hCCKdYXneQkh4pEfqzLfu+wVDSyyzFoJjfz9NB+pAF+eizx2Vruts0k15mPgvS6GYvpVtQhB61IB/dk6AF6fS4Ben0uIX5odtFe8Q/eW1KvFeH4e8khT6+gm5B+t3juyDt7n0jpe+CANTd+oTUjN/U3yVaABnSUjFz/gFq44JaVSCXeQAAAABJRU5ErkJggg==);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Error icon encoded */
|
||||||
|
.IconErrorEncoded
|
||||||
|
{
|
||||||
|
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
|
||||||
|
/* [---XsltValidateInternal-Base64EncodedImage:IconError#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
|
||||||
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABQElEQVR4XqWTvUoEQRCE6wYPZUA80AfwAQz23uCMjA7MDRQEIzPBVEyNTQUFIw00vcQTTMzuAh/AxEQQT8HF/3G/oGGnEUGuoNnd6qoZuqltyKEsyzVJq5I6rnUp6SjGeGhESikzzlc1eL7opfuVbrqbU1Zw9NCgtQMaZpY0eNnaaL2fHusvTK5vKu7sjSS1Y4y3QUA6K3e3Mau5UFDyMP7tYF9o8cAHZv68vipoIJg971PZIZ5HiwdvYGGvFVFHmGmZ2MxwmQYPXubPl9Up0tfoMQGetXd6mRbvhBw+boZ6WF7Mbv1+GsHRk0fQmPAH1GfmZirbCfDJ61tw3Px8/8pZsPAG4jlVhcPgZ7adwNWBB68lkRQWFiTgFlbnLY3DGGM7izIJIyT/jjIvEJw6fdJTc6krDzh6aMwMP9bvDH4ADSsa9uSWVJkAAAAASUVORK5CYII=);
|
||||||
|
}
|
||||||
|
</style><script type="text/javascript" language="javascript">
|
||||||
|
|
||||||
|
// Startup
|
||||||
|
// Hook up the the loaded event for the document/window, to linkify the document content
|
||||||
|
var startupFunction = function() { linkifyElement("messages"); };
|
||||||
|
|
||||||
|
if(window.attachEvent)
|
||||||
|
{
|
||||||
|
window.attachEvent('onload', startupFunction);
|
||||||
|
}
|
||||||
|
else if (window.addEventListener)
|
||||||
|
{
|
||||||
|
window.addEventListener('load', startupFunction, false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
document.addEventListener('load', startupFunction, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Toggles the visibility of table rows with the specified name
|
||||||
|
function toggleTableRowsByName(name)
|
||||||
|
{
|
||||||
|
var allRows = document.getElementsByTagName('tr');
|
||||||
|
for (i=0; i < allRows.length; i++)
|
||||||
|
{
|
||||||
|
var currentName = allRows[i].getAttribute('name');
|
||||||
|
if(!!currentName && currentName.indexOf(name) == 0)
|
||||||
|
{
|
||||||
|
var isVisible = allRows[i].style.display == '';
|
||||||
|
isVisible ? allRows[i].style.display = 'none' : allRows[i].style.display = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function scrollToFirstVisibleRow(name)
|
||||||
|
{
|
||||||
|
var allRows = document.getElementsByTagName('tr');
|
||||||
|
for (i=0; i < allRows.length; i++)
|
||||||
|
{
|
||||||
|
var currentName = allRows[i].getAttribute('name');
|
||||||
|
var isVisible = allRows[i].style.display == '';
|
||||||
|
if(!!currentName && currentName.indexOf(name) == 0 && isVisible)
|
||||||
|
{
|
||||||
|
allRows[i].scrollIntoView(true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Linkifies the specified text content, replaces candidate links with html links
|
||||||
|
function linkify(text)
|
||||||
|
{
|
||||||
|
if(!text || 0 === text.length)
|
||||||
|
{
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find http, https and ftp links and replace them with hyper links
|
||||||
|
var urlLink = /(http|https|ftp)\:\/\/[a-zA-Z0-9\-\.]+(:[a-zA-Z0-9]*)?\/?([a-zA-Z0-9\-\._\?\,\/\\\+&%\$#\=~;\{\}])*/gi;
|
||||||
|
|
||||||
|
return text.replace(urlLink, '<a href="$&">$&</a>') ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Linkifies the specified element by ID
|
||||||
|
function linkifyElement(id)
|
||||||
|
{
|
||||||
|
var element = document.getElementById(id);
|
||||||
|
if(!!element)
|
||||||
|
{
|
||||||
|
element.innerHTML = linkify(element.innerHTML);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function ToggleMessageVisibility(projectName)
|
||||||
|
{
|
||||||
|
if(!projectName || 0 === projectName.length)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleTableRowsByName("MessageRowClass" + projectName);
|
||||||
|
toggleTableRowsByName('MessageRowHeaderShow' + projectName);
|
||||||
|
toggleTableRowsByName('MessageRowHeaderHide' + projectName);
|
||||||
|
}
|
||||||
|
|
||||||
|
function ScrollToFirstVisibleMessage(projectName)
|
||||||
|
{
|
||||||
|
if(!projectName || 0 === projectName.length)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// First try the 'Show messages' row
|
||||||
|
if(!scrollToFirstVisibleRow('MessageRowHeaderShow' + projectName))
|
||||||
|
{
|
||||||
|
// Failed to find a visible row for 'Show messages', try an actual message row
|
||||||
|
scrollToFirstVisibleRow('MessageRowClass' + projectName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script></head><body><h1 _locID="ConversionReport">
|
||||||
|
Rapport de migration - Facepunch.Steamworks</h1><div id="content"><h2 _locID="OverviewTitle">Vue d'ensemble</h2><div id="overview"><table><tr><th></th><th _locID="ProjectTableHeader">Projet</th><th _locID="PathTableHeader">Chemin d'accès</th><th _locID="ErrorsTableHeader">Erreurs</th><th _locID="WarningsTableHeader">Avertissements</th><th _locID="MessagesTableHeader">Messages</th></tr><tr><td class="IconWarningEncoded" /><td><strong><a href="#Solution"><span _locID="OverviewSolutionSpan">Solution</span></a></strong></td><td>Facepunch.Steamworks.sln</td><td class="textCentered"><a>0</a></td><td class="textCentered"><a href="#SolutionWarning">1</a></td><td class="textCentered"><a href="#" onclick="ScrollToFirstVisibleMessage('Solution'); return false;">2</a></td></tr><tr><td class="IconSuccessEncoded" /><td><strong><a href="#Facepunch.Steamworks.Posix">Facepunch.Steamworks.Posix</a></strong></td><td>Facepunch.Steamworks\Facepunch.Steamworks.Posix.csproj</td><td class="textCentered"><a>0</a></td><td class="textCentered"><a>0</a></td><td class="textCentered"><a href="#">0</a></td></tr><tr><td class="IconSuccessEncoded" /><td><strong><a href="#Facepunch.Steamworks.TestWin32">Facepunch.Steamworks.TestWin32</a></strong></td><td>Facepunch.Steamworks.Test\Facepunch.Steamworks.TestWin32.csproj</td><td class="textCentered"><a>0</a></td><td class="textCentered"><a>0</a></td><td class="textCentered"><a href="#">0</a></td></tr><tr><td class="IconSuccessEncoded" /><td><strong><a href="#Facepunch.Steamworks.TestWin64">Facepunch.Steamworks.TestWin64</a></strong></td><td>Facepunch.Steamworks.Test\Facepunch.Steamworks.TestWin64.csproj</td><td class="textCentered"><a>0</a></td><td class="textCentered"><a>0</a></td><td class="textCentered"><a href="#">0</a></td></tr><tr><td class="IconSuccessEncoded" /><td><strong><a href="#Facepunch.Steamworks.Win32">Facepunch.Steamworks.Win32</a></strong></td><td>Facepunch.Steamworks\Facepunch.Steamworks.Win32.csproj</td><td class="textCentered"><a>0</a></td><td class="textCentered"><a>0</a></td><td class="textCentered"><a href="#">0</a></td></tr><tr><td class="IconSuccessEncoded" /><td><strong><a href="#Facepunch.Steamworks.Win64">Facepunch.Steamworks.Win64</a></strong></td><td>Facepunch.Steamworks\Facepunch.Steamworks.Win64.csproj</td><td class="textCentered"><a>0</a></td><td class="textCentered"><a>0</a></td><td class="textCentered"><a href="#">0</a></td></tr><tr><td class="IconSuccessEncoded" /><td><strong><a href="#Generator">Generator</a></strong></td><td>Generator\Generator.csproj</td><td class="textCentered"><a>0</a></td><td class="textCentered"><a>0</a></td><td class="textCentered"><a href="#">0</a></td></tr></table></div><h2 _locID="SolutionAndProjectsTitle">Solution et projets</h2><div id="messages"><a name="Solution" /><h3 _locID="ProjectDisplayNameHeader">Solution</h3><table><tr id="SolutionHeaderRow"><th></th><th class="messageCell" _locID="MessageTableHeader">Message</th></tr><tr name="WarningRowClassSolution"><td class="IconWarningEncoded"><a name="SolutionWarning" /></td><td class="messageCell"><strong>Facepunch.Steamworks.sln:
|
||||||
|
</strong><span>Visual Studio doit apporter des changements non fonctionnels à ce projet pour lui permettre de s'ouvrir dans les versions Release de Visual Studio postérieures à Visual Studio 2010 SP1 sans affecter le comportement du projet.</span></td></tr><tr name="MessageRowHeaderShowSolution"><td class="IconInfoEncoded" /><td class="messageCell"><a _locID="ShowAdditionalMessages" href="#" name="SolutionMessage" onclick="ToggleMessageVisibility('Solution'); return false;">
|
||||||
|
Afficher 2 messages supplémentaires
|
||||||
|
</a></td></tr><tr name="MessageRowClassSolution" style="display: none"><td class="IconInfoEncoded"><a name="SolutionMessage" /></td><td class="messageCell"><strong>Facepunch.Steamworks.sln:
|
||||||
|
</strong><span>Fichier sauvegardé en tant que E:\Facepunch.Steamworks\Backup\Facepunch.Steamworks.sln</span></td></tr><tr name="MessageRowClassSolution" style="display: none"><td class="IconInfoEncoded"><a name="SolutionMessage" /></td><td class="messageCell"><strong>Facepunch.Steamworks.sln:
|
||||||
|
</strong><span>Solution migrée</span></td></tr><tr style="display: none" name="MessageRowHeaderHideSolution"><td class="IconInfoEncoded" /><td class="messageCell"><a _locID="HideAdditionalMessages" href="#" name="SolutionMessage" onclick="ToggleMessageVisibility('Solution'); return false;">
|
||||||
|
Masquer 2 messages supplémentaires
|
||||||
|
</a></td></tr></table><a name="Facepunch.Steamworks.Posix" /><h3>Facepunch.Steamworks.Posix</h3><table><tr id="Facepunch.Steamworks.PosixHeaderRow"><th></th><th class="messageCell" _locID="MessageTableHeader">Message</th></tr><tr><td class="IconInfoEncoded" /><td class="messageCell" _locID="NoMessagesRow">Facepunch.Steamworks.Posix n'a consigné aucun message dans le journal.
|
||||||
|
</td></tr></table><a name="Facepunch.Steamworks.TestWin32" /><h3>Facepunch.Steamworks.TestWin32</h3><table><tr id="Facepunch.Steamworks.TestWin32HeaderRow"><th></th><th class="messageCell" _locID="MessageTableHeader">Message</th></tr><tr><td class="IconInfoEncoded" /><td class="messageCell" _locID="NoMessagesRow">Facepunch.Steamworks.TestWin32 n'a consigné aucun message dans le journal.
|
||||||
|
</td></tr></table><a name="Facepunch.Steamworks.TestWin64" /><h3>Facepunch.Steamworks.TestWin64</h3><table><tr id="Facepunch.Steamworks.TestWin64HeaderRow"><th></th><th class="messageCell" _locID="MessageTableHeader">Message</th></tr><tr><td class="IconInfoEncoded" /><td class="messageCell" _locID="NoMessagesRow">Facepunch.Steamworks.TestWin64 n'a consigné aucun message dans le journal.
|
||||||
|
</td></tr></table><a name="Facepunch.Steamworks.Win32" /><h3>Facepunch.Steamworks.Win32</h3><table><tr id="Facepunch.Steamworks.Win32HeaderRow"><th></th><th class="messageCell" _locID="MessageTableHeader">Message</th></tr><tr><td class="IconInfoEncoded" /><td class="messageCell" _locID="NoMessagesRow">Facepunch.Steamworks.Win32 n'a consigné aucun message dans le journal.
|
||||||
|
</td></tr></table><a name="Facepunch.Steamworks.Win64" /><h3>Facepunch.Steamworks.Win64</h3><table><tr id="Facepunch.Steamworks.Win64HeaderRow"><th></th><th class="messageCell" _locID="MessageTableHeader">Message</th></tr><tr><td class="IconInfoEncoded" /><td class="messageCell" _locID="NoMessagesRow">Facepunch.Steamworks.Win64 n'a consigné aucun message dans le journal.
|
||||||
|
</td></tr></table><a name="Generator" /><h3>Generator</h3><table><tr id="GeneratorHeaderRow"><th></th><th class="messageCell" _locID="MessageTableHeader">Message</th></tr><tr><td class="IconInfoEncoded" /><td class="messageCell" _locID="NoMessagesRow">Generator n'a consigné aucun message dans le journal.
|
||||||
|
</td></tr></table></div></div></body></html>
|
Loading…
Reference in New Issue
Block a user