2
3
mirror of https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git synced 2025-07-14 14:37:41 +00:00

Compare commits

...

7 Commits

Author SHA1 Message Date
101ebbd717 Stub out the Auth2Cli ServerCaps message
This allows an OpenUru client to connect to a DIRTSAND server for
testing.

Co-Authored-By: Adam Johnson <AdamJohnso@gmail.com>
2024-08-12 12:58:16 -07:00
0717a9e792 Add server.ini support to Internal builds
Co-Authored-By: Michael Hansen <zrax0111@gmail.com>
Co-Authored-By: Adam Johnson <AdamJohnso@gmail.com>
Co-Authored-By: Florian Meißner <developer@mystler.eu>
2024-08-12 12:58:16 -07:00
f293e06ade Allow building with VS2010 Express 2024-08-10 20:11:38 -07:00
93491a7df4 Fix wrong include in pnDispatchCreatable.h 2024-08-10 20:11:38 -07:00
6725fc49f0 Fix Debug_Internal config for pfMoviePlayer 2024-08-10 20:11:37 -07:00
e9786f9990 Build SoundDecompress as part of AllClient 2024-08-10 20:11:37 -07:00
147f47e31c Add SoundDecompress tool 2024-08-10 20:11:37 -07:00
31 changed files with 1532 additions and 260 deletions

View File

@ -228,6 +228,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pfMoviePlayer", "FeatureLib
{B2270EDB-6E92-332F-60C8-255E8AF2CFFC} = {B2270EDB-6E92-332F-60C8-255E8AF2CFFC}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SoundDecompress", "Apps\SoundDecompress\SoundDecompress.vcxproj", "{885DFDA6-A470-4770-9035-64F6BAD39CE7}"
ProjectSection(ProjectDependencies) = postProject
{59197414-421B-457E-A559-F6D875379603} = {59197414-421B-457E-A559-F6D875379603}
{EEFE2438-9F93-4C5C-B85D-6FDD431A1CF1} = {EEFE2438-9F93-4C5C-B85D-6FDD431A1CF1}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug_Internal|Win32 = Debug_Internal|Win32
@ -1028,14 +1034,22 @@ Global
{84868043-5563-435A-A176-76A059653D5C}.Release_Internal|Win32.Build.0 = Release_Internal|Win32
{84868043-5563-435A-A176-76A059653D5C}.Release|Win32.ActiveCfg = Release|Win32
{84868043-5563-435A-A176-76A059653D5C}.Release|Win32.Build.0 = Release|Win32
{90045C91-576B-4639-8C2F-A6B5B70EC6A1}.Debug_Internal|Win32.ActiveCfg = Debug|Win32
{90045C91-576B-4639-8C2F-A6B5B70EC6A1}.Debug_Internal|Win32.Build.0 = Debug|Win32
{90045C91-576B-4639-8C2F-A6B5B70EC6A1}.Debug_Internal|Win32.ActiveCfg = Debug_Internal|Win32
{90045C91-576B-4639-8C2F-A6B5B70EC6A1}.Debug_Internal|Win32.Build.0 = Debug_Internal|Win32
{90045C91-576B-4639-8C2F-A6B5B70EC6A1}.Debug|Win32.ActiveCfg = Debug|Win32
{90045C91-576B-4639-8C2F-A6B5B70EC6A1}.Debug|Win32.Build.0 = Debug|Win32
{90045C91-576B-4639-8C2F-A6B5B70EC6A1}.Release_Internal|Win32.ActiveCfg = Release_Internal|Win32
{90045C91-576B-4639-8C2F-A6B5B70EC6A1}.Release_Internal|Win32.Build.0 = Release_Internal|Win32
{90045C91-576B-4639-8C2F-A6B5B70EC6A1}.Release|Win32.ActiveCfg = Release|Win32
{90045C91-576B-4639-8C2F-A6B5B70EC6A1}.Release|Win32.Build.0 = Release|Win32
{885DFDA6-A470-4770-9035-64F6BAD39CE7}.Debug_Internal|Win32.ActiveCfg = Debug_Internal|Win32
{885DFDA6-A470-4770-9035-64F6BAD39CE7}.Debug_Internal|Win32.Build.0 = Debug_Internal|Win32
{885DFDA6-A470-4770-9035-64F6BAD39CE7}.Debug|Win32.ActiveCfg = Debug|Win32
{885DFDA6-A470-4770-9035-64F6BAD39CE7}.Debug|Win32.Build.0 = Debug|Win32
{885DFDA6-A470-4770-9035-64F6BAD39CE7}.Release_Internal|Win32.ActiveCfg = Release_Internal|Win32
{885DFDA6-A470-4770-9035-64F6BAD39CE7}.Release_Internal|Win32.Build.0 = Release_Internal|Win32
{885DFDA6-A470-4770-9035-64F6BAD39CE7}.Release|Win32.ActiveCfg = Release|Win32
{885DFDA6-A470-4770-9035-64F6BAD39CE7}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -111,6 +111,10 @@
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="..\SoundDecompress\SoundDecompress.vcxproj">
<Project>{885DFDA6-A470-4770-9035-64F6BAD39CE7}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">

View File

@ -0,0 +1,418 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug_Internal|Win32">
<Configuration>Debug_Internal</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release_Internal|Win32">
<Configuration>Release_Internal</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{885DFDA6-A470-4770-9035-64F6BAD39CE7}</ProjectGuid>
<SccProjectName />
<SccLocalPath />
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Internal|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Internal|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Internal|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Internal|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release_Internal|Win32'">$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release_Internal|Win32'">$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release_Internal|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</OutDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_Internal|Win32'">$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_Internal|Win32'">$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_Internal|Win32'">false</LinkIncremental>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)_dbg</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug_Internal|Win32'">$(ProjectName)_dbg</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Internal|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../../../../../Sources/Plasma/CoreLib;../../../../../Sources/Plasma/NucleusLib/inc;../../../../../Sources/Plasma/PubUtilLib/inc;../../../StaticSDKs/XPlatform/OpenSSL/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<PrecompiledHeaderOutputFile>
</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
<ObjectFileName>$(IntDir)</ObjectFileName>
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<DisableSpecificWarnings>4800</DisableSpecificWarnings>
<StringPooling>true</StringPooling>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;Rpcrt4.lib;dxerr.lib;libogg_static.lib;libvorbis_static.lib;libvorbisfile_static.lib;zlibd.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\StaticSDKs\Win32\DX9.0c\Lib\x86;..\..\..\StaticSDKs\XPlatform\oggvorbis\libogg\win32\VS2010\Win32\Debug;..\..\..\StaticSDKs\XPlatform\oggvorbis\libvorbis\win32\VS2010\Win32\Debug;..\..\..\StaticSDKs\XPlatform\zlib\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libci.lib;libcid.lib;libcmtd.lib;libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AssemblyDebug>true</AssemblyDebug>
<ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
<OptimizeReferences>true</OptimizeReferences>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(OutDir)$(TargetName).map</MapFileName>
<MapExports>true</MapExports>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link>
<Midl>
<TypeLibraryName>$(OutDir)$(TargetName).tlb</TypeLibraryName>
<HeaderFileName>
</HeaderFileName>
</Midl>
<PostBuildEvent>
<Message>Copy to Tools directory</Message>
<Command>xcopy /Y /I "$(TargetPath)" ..\..\..\..\tools\</Command>
</PostBuildEvent>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../../../../../Sources/Plasma/CoreLib;../../../../../Sources/Plasma/NucleusLib/inc;../../../../../Sources/Plasma/PubUtilLib/inc;../../../StaticSDKs/XPlatform/OpenSSL/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;PLASMA_EXTERNAL_RELEASE;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BufferSecurityCheck>true</BufferSecurityCheck>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<PrecompiledHeaderOutputFile>
</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
<ObjectFileName>$(IntDir)</ObjectFileName>
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<DisableSpecificWarnings>4800</DisableSpecificWarnings>
<StringPooling>true</StringPooling>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;Rpcrt4.lib;dxerr.lib;libogg_static.lib;libvorbis_static.lib;libvorbisfile_static.lib;zlibd.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\StaticSDKs\Win32\DX9.0c\Lib\x86;..\..\..\StaticSDKs\XPlatform\oggvorbis\libogg\win32\VS2010\Win32\Debug;..\..\..\StaticSDKs\XPlatform\oggvorbis\libvorbis\win32\VS2010\Win32\Debug;..\..\..\StaticSDKs\XPlatform\zlib\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<IgnoreSpecificDefaultLibraries>libc.lib;libcd.lib;libci.lib;libcid.lib;libcmtd.lib;libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AssemblyDebug>true</AssemblyDebug>
<ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
<OptimizeReferences>true</OptimizeReferences>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(OutDir)$(TargetName).map</MapFileName>
<MapExports>true</MapExports>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link>
<Midl>
<TypeLibraryName>$(OutDir)$(TargetName).tlb</TypeLibraryName>
<HeaderFileName>
</HeaderFileName>
</Midl>
<PostBuildEvent>
<Message>Copy to Tools directory</Message>
<Command>xcopy /Y /I "$(TargetPath)" ..\..\..\..\tools\</Command>
</PostBuildEvent>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Internal|Win32'">
<ClCompile>
<Optimization>Full</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>../../../../../Sources/Plasma/CoreLib;../../../../../Sources/Plasma/NucleusLib/inc;../../../../../Sources/Plasma/PubUtilLib/inc;../../../StaticSDKs/XPlatform/OpenSSL/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<PrecompiledHeaderOutputFile>
</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
<ObjectFileName>$(IntDir)</ObjectFileName>
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
<BrowseInformation>false</BrowseInformation>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>
</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<IntrinsicFunctions>true</IntrinsicFunctions>
<DisableSpecificWarnings>4800</DisableSpecificWarnings>
<BufferSecurityCheck>true</BufferSecurityCheck>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;Rpcrt4.lib;dxerr.lib;libogg_static.lib;libvorbis_static.lib;libvorbisfile_static.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\StaticSDKs\Win32\DX9.0c\Lib\x86;..\..\..\StaticSDKs\XPlatform\oggvorbis\libogg\win32\VS2010\Win32\Release;..\..\..\StaticSDKs\XPlatform\oggvorbis\libvorbis\win32\VS2010\Win32\Release;..\..\..\StaticSDKs\XPlatform\zlib\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<IgnoreSpecificDefaultLibraries>libc.lib;libci.lib;libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AssemblyDebug>false</AssemblyDebug>
<ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(OutDir)$(TargetName).map</MapFileName>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<TargetMachine>MachineX86</TargetMachine>
<MapExports>true</MapExports>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link>
<Midl>
<TypeLibraryName>$(OutDir)$(TargetName).tlb</TypeLibraryName>
<HeaderFileName>
</HeaderFileName>
</Midl>
<PostBuildEvent>
<Message>Copy to Tools directory</Message>
<Command>xcopy /Y /I "$(TargetPath)" ..\..\..\..\tools\</Command>
</PostBuildEvent>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>Full</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>../../../../../Sources/Plasma/CoreLib;../../../../../Sources/Plasma/NucleusLib/inc;../../../../../Sources/Plasma/PubUtilLib/inc;../../../StaticSDKs/XPlatform/OpenSSL/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;PLASMA_EXTERNAL_RELEASE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;MS_NO_COREDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>
</FunctionLevelLinking>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderOutputFile>
</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
<ObjectFileName>$(IntDir)</ObjectFileName>
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<CompileAs>Default</CompileAs>
<DebugInformationFormat>
</DebugInformationFormat>
<IntrinsicFunctions>true</IntrinsicFunctions>
</ClCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;Rpcrt4.lib;dxerr.lib;libogg_static.lib;libvorbis_static.lib;libvorbisfile_static.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>..\..\..\StaticSDKs\Win32\DX9.0c\Lib\x86;..\..\..\StaticSDKs\XPlatform\oggvorbis\libogg\win32\VS2010\Win32\Release;..\..\..\StaticSDKs\XPlatform\oggvorbis\libvorbis\win32\VS2010\Win32\Release;..\..\..\StaticSDKs\XPlatform\zlib\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<IgnoreSpecificDefaultLibraries>libc.lib;libci.lib;libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AssemblyDebug>false</AssemblyDebug>
<ProgramDatabaseFile>$(OutDir)$(TargetName).pdb</ProgramDatabaseFile>
<GenerateMapFile>true</GenerateMapFile>
<MapFileName>$(OutDir)$(TargetName).map</MapFileName>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<TargetMachine>MachineX86</TargetMachine>
<MapExports>true</MapExports>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link>
<Midl>
<TypeLibraryName>$(OutDir)$(TargetName).tlb</TypeLibraryName>
<HeaderFileName>
</HeaderFileName>
</Midl>
<PostBuildEvent>
<Message>Copy to Tools directory</Message>
<Command>xcopy /Y /I "$(TargetPath)" ..\..\..\..\tools\</Command>
</PostBuildEvent>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\..\..\Sources\Plasma\Apps\SoundDecompress\main.cpp">
<Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
<Optimization Condition="'$(Configuration)|$(Platform)'=='Debug_Internal|Win32'">Disabled</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_Internal|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_Internal|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
<BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug_Internal|Win32'">EnableFastChecks</BasicRuntimeChecks>
<Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
<Optimization Condition="'$(Configuration)|$(Platform)'=='Release_Internal|Win32'">MaxSpeed</Optimization>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_Internal|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_Internal|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\CoreLibExe\CoreLibExe.vcxproj">
<Project>{4054c94f-866a-4aa7-874b-2afcfef23a71}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\CoreLib\CoreLib.vcxproj">
<Project>{83a96477-baef-4db7-8134-aeadf4b2e63f}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\NucleusLib\pnAddrInfo\pnAddrInfo.vcxproj">
<Project>{af37952c-0c38-4057-8d59-eaa18f28da26}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\NucleusLib\pnDispatch\pnDispatch.vcxproj">
<Project>{e609c4f6-52a0-45c6-958a-8b41680ad809}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\NucleusLib\pnFactory\pnFactory.vcxproj">
<Project>{7c9680f1-6d8c-429d-a3a9-0cd36d9aea0c}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\NucleusLib\pnKeyedObject\pnKeyedObject.vcxproj">
<Project>{4f020dd6-7d46-49e1-bfc1-082d5f979dac}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\NucleusLib\pnMessage\pnMessage.vcxproj">
<Project>{633286c6-e4e8-428f-b1ee-d48cdacc0490}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\NucleusLib\pnModifier\pnModifier.vcxproj">
<Project>{b4752dfb-c7f8-4864-a23b-5f15bc64a7a0}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\NucleusLib\pnNetCommon\pnNetCommon.vcxproj">
<Project>{90da3776-6b7c-48a0-8cec-1a60db5be61f}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\NucleusLib\pnNucleusInc\pnNucleusInc.vcxproj">
<Project>{f2635bc2-a8ba-4d43-807a-ea91307dbf93}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\NucleusLib\pnProduct\pnProduct.vcxproj">
<Project>{ca208971-6c77-47f6-aa4b-fb6ecc071132}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\NucleusLib\pnSceneObject\pnSceneObject.vcxproj">
<Project>{c0e5499c-1b5b-49a2-9047-95ab6a6c2b13}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\NucleusLib\pnTimer\pnTimer.vcxproj">
<Project>{59197414-421b-457e-a559-f6d875379603}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\NucleusLib\pnUtilsExe\pnUtilsExe.vcxproj">
<Project>{08eb4dcb-75f7-419e-a212-0bead6a10ff1}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\NucleusLib\pnUtils\pnUtils.vcxproj">
<Project>{89316659-f4a9-4e92-8200-c36288a61b9b}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\PubUtilLib\plAgeDescription\plAgeDescription.vcxproj">
<Project>{7147ce72-97c7-48d9-b3be-e0fca3fba83c}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\PubUtilLib\plAudioCore\plAudioCore.vcxproj">
<Project>{99445121-67ba-4696-8904-f2fc13c928bb}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\PubUtilLib\plCompression\plCompression.vcxproj">
<Project>{7d696f05-8019-4029-a6e5-1225619ed40a}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\PubUtilLib\plFile\plFile.vcxproj">
<Project>{eefe2438-9f93-4c5c-b85d-6fdd431a1cf1}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\PubUtilLib\plNetCommon\plNetCommon.vcxproj">
<Project>{050ac8c8-a537-46fe-afee-bd3f9cb98f69}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\PubUtilLib\plMessage\plMessage.vcxproj">
<Project>{05ab7d6b-5c79-4aa2-bee0-b7f9cbfb976a}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\PubUtilLib\plResMgr\plResMgr.vcxproj">
<Project>{e157e0e4-ac35-4435-95a6-9179aab66436}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\PubUtilLib\plStatusLog\plStatusLog.vcxproj">
<Project>{21694294-7039-4c2a-b332-08dcad747f05}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\PubUtilLib\plUnifiedTime\plUnifiedTime.vcxproj">
<Project>{fe69f407-565e-4c33-a91a-fba622d59c18}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\PubUtilLib\plUUID\plUUID.vcxproj">
<Project>{bbdf8302-be9c-43ec-aaf8-912e601515b3}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\..\..\Sources\Plasma\Apps\SoundDecompress\main.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@ -167,20 +167,18 @@
<ItemGroup>
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Intern.h" />
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Pch.h" />
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\pnNbAuthKey.hpp" />
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\pnNbCsrKey.hpp" />
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\pnNbGameKey.hpp" />
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\pnNbGateKeeperKey.hpp" />
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\pnNetBase.h" />
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Private\pnNbAllIncludes.h" />
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\pnNbConst.h" />
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Private\pnNbEchoMsgs.h" />
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Private\pnNbError.h" />
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Private\pnNbKeys.h" />
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Private\pnNbProtocol.h" />
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Private\pnNbSrvs.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Private\pnNbError.cpp" />
<ClCompile Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Private\pnNbKeys.cpp" />
<ClCompile Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Private\pnNbProtocol.cpp" />
<ClCompile Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Private\pnNbSrvs.cpp" />
</ItemGroup>

View File

@ -20,18 +20,6 @@
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Pch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\pnNbAuthKey.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\pnNbCsrKey.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\pnNbGameKey.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\pnNbGateKeeperKey.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\pnNetBase.h">
<Filter>Header Files</Filter>
</ClInclude>
@ -53,6 +41,9 @@
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Private\pnNbSrvs.h">
<Filter>Private</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Private\pnNbKeys.h">
<Filter>Private</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Private\pnNbError.cpp">
@ -64,5 +55,8 @@
<ClCompile Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Private\pnNbSrvs.cpp">
<Filter>Private</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\..\Sources\Plasma\NucleusLib\pnNetBase\Private\pnNbKeys.cpp">
<Filter>Private</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@ -0,0 +1,261 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Additional permissions under GNU GPL version 3 section 7
If you modify this Program, or any covered work, by linking or
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
(or a modified version of those libraries),
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
licensors of this Program grant you additional
permission to convey the resulting work. Corresponding Source for a
non-source form of such a combination shall include the source code for
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
work.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
#include <utility>
#include "../plResMgr/plResManager.h"
#include "../plResMgr/plResMgrSettings.h"
#include "../plResMgr/plRegistryHelpers.h"
#include "../plResMgr/plRegistryNode.h"
#include "../plAgeDescription/plAgeManifest.h"
#include "../plAudioCore/plSoundBuffer.h"
#include "hsUtils.h"
#include "../plFile/hsFiles.h"
#include "../plFile/plFileUtils.h"
#define NO_AV_MSGS
#include "pnNucleusCreatables.h"
#include "../pnDispatch/pnDispatchCreatable.h"
#include "../pnKeyedObject/pnKeyedObjectCreatable.h"
#include "../pnMessage/pnMessageCreatable.h"
#include "../pnNetCommon/pnNetCommonCreatable.h"
#include "../pnSceneObject/pnSceneObjectCreatable.h"
#include "../pnTimer/pnTimerCreatable.h"
#include "../plAudioCore/plAudioCoreCreatable.h"
#include "../plNetCommon/plNetCommonCreatable.h"
#include "../plMessage/plMessageCreatable.h"
#include "../plResMgr/plResMgrCreatable.h"
typedef std::set<std::pair<std::string, unsigned short>> SoundSet;
enum OutputStyle
{
kSilent,
kProgress,
kVerbose
};
//// plSoundBufferCollector //////////////////////////////////////////////////
// Page iterator that collects all the plSoundBuffers in all of our pages
class plSoundBufferCollector : public plRegistryPageIterator, public plKeyCollector
{
public:
plSoundBufferCollector(std::set<plKey>& keyArray)
: plKeyCollector(keyArray) {}
hsBool EatPage(plRegistryPageNode* page)
{
if (page->IsValid())
{
page->LoadKeys();
return page->IterateKeys(this, plSoundBuffer::Index());
}
else
{
fprintf(stderr, "INVALID PAGE: %s\n", page->GetPagePath());
return true;
}
}
};
void PrintHelp()
{
printf("Plasma Sound Decompressor\n");
printf("-------------------------\n");
printf("-s, --silent Run silently, no output\n");
printf("-v, --verbose Print each filename when decompressing\n");
printf("-f, --force Force decompressing existing files\n");
}
bool CollectSounds(plResManager* rm, SoundSet& sfxArray)
{
std::set<plKey> soundKeys;
plSoundBufferCollector soundCollector(soundKeys);
rm->IterateAllPages(&soundCollector);
for (auto it = soundKeys.begin(); it != soundKeys.end(); ++it)
{
plSoundBuffer* buffer = plSoundBuffer::ConvertNoRef((*it)->VerifyLoaded());
if (buffer)
{
// Ref it...
buffer->GetKey()->RefObject();
// Get the filename from it and add that file if necessary
const char* filename = buffer->GetFileName();
if (filename)
{
unsigned short flags = 0;
if (stricmp(plFileUtils::GetFileExt(filename), "wav") != 0)
{
if (buffer->HasFlag(plSoundBuffer::kOnlyLeftChannel) ||
buffer->HasFlag(plSoundBuffer::kOnlyRightChannel))
hsSetBits(flags, plManifestFile::kSndFlagCacheSplit);
else if (buffer->HasFlag(plSoundBuffer::kStreamCompressed))
hsSetBits(flags, plManifestFile::kSndFlagStreamCompressed);
else
hsSetBits(flags, plManifestFile::kSndFlagCacheStereo);
}
std::pair<std::string, unsigned short> pair = std::make_pair(filename, flags);
sfxArray.insert(pair);
}
// Unref the object so it goes away
buffer->GetKey()->UnRefObject();
}
}
soundKeys.clear();
plIndirectUnloadIterator iter;
rm->IterateAllPages(&iter);
return true;
}
void DecompressSounds(SoundSet& sounds, bool overwrite, OutputStyle verbosity)
{
int total = sounds.size();
int curr = 0;
if (verbosity == kVerbose)
{
printf("There are %d sounds\n\n", total);
}
for (auto it = sounds.begin(); it != sounds.end(); ++it)
{
curr++;
char path[256];
memset(path, 0, sizeof(path));
strcat(path, "sfx\\");
strcat(path, it->first.c_str());
if (verbosity == kVerbose)
{
printf("%s\n", path);
}
else if (verbosity == kProgress)
{
int percent = (100 * curr) / total;
int progress = int((float(curr) / total) * 75);
fprintf(stdout, "\r%3d%% ", percent);
for (int i = 0; i < progress; i++)
{
fprintf(stdout, "=");
}
fflush(stdout);
}
if (hsCheckBits(it->second, plManifestFile::kSndFlagCacheSplit))
{
plAudioFileReader::CacheFile(path, true, !overwrite);
}
else if (hsCheckBits(it->second, plManifestFile::kSndFlagCacheStereo))
{
plAudioFileReader::CacheFile(path, false, !overwrite);
}
}
if (verbosity == kProgress)
{
// Hack to ensure we always end with 100%
fprintf(stdout, "\r100%%\n");
}
}
int main(int argc, const char** argv)
{
bool overwrite = false;
OutputStyle verbosity = kProgress;
for (int arg = 1; arg < argc; arg++)
{
if (!strcmp(argv[arg], "-h") || !strcmp(argv[arg], "--help"))
{
PrintHelp();
return 0;
}
else if (!strcmp(argv[arg], "-s") || !strcmp(argv[arg], "--silent"))
{
verbosity = kSilent;
}
else if (!strcmp(argv[arg], "-v") || !strcmp(argv[arg], "--verbose"))
{
verbosity = kVerbose;
}
else if (!strcmp(argv[arg], "-f") || !strcmp(argv[arg], "--force"))
{
overwrite = true;
}
}
// Init our special resMgr
plResMgrSettings::Get().SetFilterNewerPageVersions(false);
plResMgrSettings::Get().SetFilterOlderPageVersions(false);
plResMgrSettings::Get().SetLoadPagesOnInit(true);
plResManager* rm = new plResManager();
rm->SetDataPath("dat");
hsgResMgr::Init(rm);
SoundSet sounds;
CollectSounds(rm, sounds);
DecompressSounds(sounds, overwrite, verbosity);
hsgResMgr::Shutdown();
return 0;
}

View File

@ -7,7 +7,8 @@
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
#include <windows.h>
#define IDC_STATIC (-1)
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

View File

@ -72,6 +72,8 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "../plPhysX/plSimulationMgr.h"
#include "pfConsole/pfConsoleEngine.h"
#include "res\resource.h"
#include <shellapi.h>
@ -112,6 +114,7 @@ enum
kArgAuthSrv,
kArgFileSrv,
kArgGateKeeperSrv,
kArgServerIni,
kArgLocalData,
kArgBackgroundDownloader,
};
@ -122,6 +125,7 @@ static const CmdArgDef s_cmdLineArgs[] = {
{ kCmdArgFlagged | kCmdTypeString, L"AuthSrv", kArgAuthSrv },
{ kCmdArgFlagged | kCmdTypeString, L"FileSrv", kArgFileSrv },
{ kCmdArgFlagged | kCmdTypeString, L"GateKeeperSrv", kArgGateKeeperSrv },
{ kCmdArgFlagged | kCmdTypeString, L"ServerIni", kArgServerIni },
{ kCmdArgFlagged | kCmdTypeBool, L"LocalData", kArgLocalData },
{ kCmdArgFlagged | kCmdTypeBool, L"BGDownload", kArgBackgroundDownloader },
};
@ -1321,13 +1325,13 @@ void StatusCallback(void *param)
while(s_loginDlgRunning)
{
// get status message from webpage and display in status area.
const wchar *path = BuildTypeServerStatusPath();
const wchar *path = GetServerStatusUrl();
if(path)
{
HINTERNET hSession = 0;
HINTERNET hConnect = 0;
HINTERNET hRequest = 0;
hSession = WinHttpOpen(
L"UruClient/1.0",
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
@ -1336,22 +1340,51 @@ void StatusCallback(void *param)
);
if(hSession)
{
HINTERNET hConnect = WinHttpConnect( hSession, STATUS_PATH, INTERNET_DEFAULT_HTTP_PORT, 0);
INTERNET_PORT port = INTERNET_DEFAULT_HTTP_PORT;
const wchar* truncpath = path;
if (wcsncmp(path, L"http:", 5) == 0) {
truncpath += 7;
} else if (wcsncmp(path, L"https:", 6) == 0) {
port = INTERNET_DEFAULT_HTTPS_PORT;
truncpath += 8;
}
const wchar* pathval = wcschr(truncpath, L'/');
const wchar* portnum = wcschr(truncpath, L':');
wchar host[256];
if (portnum != nil && portnum < pathval) {
int count = wcslen(truncpath) - wcslen(portnum);
wcsncpy(host, truncpath, count);
host[count] = L'\0';
unsigned long parsedport = wcstoul(portnum + 1, nil, 10);
if (parsedport != 0) {
port = (INTERNET_PORT)parsedport;
}
} else {
int count = wcslen(truncpath) - wcslen(pathval);
wcsncpy(host, truncpath, count);
host[count] = L'\0';
}
HINTERNET hConnect = WinHttpConnect( hSession, host, port, 0);
if(hConnect)
{
HINTERNET hRequest = WinHttpOpenRequest(
hConnect,
L"GET",
path,
pathval,
NULL,
WINHTTP_NO_REFERER,
WINHTTP_DEFAULT_ACCEPT_TYPES,
0
(port == INTERNET_DEFAULT_HTTPS_PORT ? WINHTTP_FLAG_SECURE : 0)
);
if(hRequest)
{
static char data[256] = {0};
DWORD bytesRead;
DWORD bytesRead = 0;
if(
WinHttpSendRequest(
hRequest,
@ -1379,7 +1412,7 @@ void StatusCallback(void *param)
}
else
break; // no status message
for(unsigned i = 0; i < UPDATE_STATUSMSG_SECONDS && s_loginDlgRunning; ++i)
{
Sleep(1000);
@ -1528,7 +1561,8 @@ BOOL CALLBACK UruLoginDialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM
}
else if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_URULOGIN_GAMETAPLINK)
{
ShellExecute(NULL, "open", "http://www.mystonline.com/signup.html", NULL, NULL, SW_SHOWNORMAL);
const wchar *signupurl = GetServerSignupUrl();
ShellExecuteW(NULL, L"open", signupurl, NULL, NULL, SW_SHOWNORMAL);
return TRUE;
}
@ -1708,6 +1742,13 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nC
if(cmdParser.IsSpecified(kArgBackgroundDownloader))
gUseBackgroundDownloader = true;
#endif
const wchar *serverIni = nil;
if(cmdParser.IsSpecified(kArgServerIni))
{
serverIni = cmdParser.GetString(kArgServerIni);
}
if(cmdParser.IsSpecified(kArgAuthSrv))
{
SetAuthSrvHostname(cmdParser.GetString(kArgAuthSrv));
@ -1810,6 +1851,20 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nC
return PARABLE_NORMAL_EXIT;
}
#ifndef PLASMA_EXTERNAL_RELEASE
/////////<<<<<<<<
if (serverIni) {
FILE *serverIniFile = _wfopen(serverIni, L"rb");
if (serverIniFile)
{
fclose(serverIniFile);
pfConsoleEngine tempConsole;
tempConsole.ExecuteFile(serverIni);
}
}
/////////<<<<<<<<
#endif
NetCliAuthAutoReconnectEnable(false);
NetCommSetReadIniAccountInfo(!doIntroDialogs);

View File

@ -7,7 +7,8 @@
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
#include <windows.h>
#define IDC_STATIC (-1)
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

View File

@ -1071,3 +1071,336 @@ PF_CONSOLE_CMD(
#endif
///////////////////////////////////////
/*****************************************************************************
*
* Server
*
***/
#ifndef LIMIT_CONSOLE_COMMANDS
//TODO: Fix Plasma to use OpenSSL's byte order (or better yet, to use OpenSSL),
// so this hack isn't needed
static void swap_key_bytes(byte keyData[])
{
for (size_t i = 0; i < (kNetDiffieHellmanKeyBits / 16); ++i)
std::swap(keyData[i], keyData[ (kNetDiffieHellmanKeyBits / 8) - i - 1 ]);
}
//============================================================================
// Server group
PF_CONSOLE_GROUP(Server)
//============================================================================
PF_CONSOLE_CMD(
Server,
Status,
"string url",
"Set the server's status URL"
) {
wchar_t *wurl = hsStringToWString((const char *)params[0]);
SetServerStatusUrl(wurl);
delete [] wurl;
}
//============================================================================
PF_CONSOLE_CMD(
Server,
Signup,
"string url",
"Set the server's new user sign-up URL"
) {
wchar_t *wurl = hsStringToWString((const char *)params[0]);
SetServerSignupUrl(wurl);
delete [] wurl;
}
//============================================================================
PF_CONSOLE_CMD(
Server,
DispName,
"string name",
"Set the displayable server name"
) {
wchar_t *wname = hsStringToWString((const char *)params[0]);
SetServerDisplayName(wname);
delete [] wname;
}
//============================================================================
PF_CONSOLE_CMD(
Server,
Port,
"int port",
"Set the server's port"
) {
SetClientPort((int)params[0]);
}
//============================================================================
// Server.File group
PF_CONSOLE_SUBGROUP(Server, File)
//============================================================================
PF_CONSOLE_CMD(
Server_File,
Host,
"string address",
"Set the File Server address"
) {
wchar_t *wHost = hsStringToWString((const char *)params[0]);
SetFileSrvHostname(wHost);
delete [] wHost;
}
//============================================================================
// Server.Auth group
PF_CONSOLE_SUBGROUP(Server, Auth)
//============================================================================
PF_CONSOLE_CMD(
Server_Auth,
Host,
"string address",
"Set the Auth Server address"
) {
wchar_t *wHost = hsStringToWString((const char *)params[0]);
SetAuthSrvHostname(wHost);
delete [] wHost;
}
//============================================================================
PF_CONSOLE_CMD(
Server_Auth,
N,
"string base64Key",
"Set the Auth Server N key"
) {
int baseLength = hsStrlen((const char *)params[0]);
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength, (const char *)params[0])) {
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
kNetDiffieHellmanKeyBits / 8);
return;
}
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
kNetDiffieHellmanKeyBits / 8, kAuthDhNData);
swap_key_bytes(kAuthDhNData);
}
//============================================================================
PF_CONSOLE_CMD(
Server_Auth,
X,
"string base64Key",
"Set the Auth Server X key"
) {
int baseLength = hsStrlen((const char *)params[0]);
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength, (const char *)params[0])) {
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
kNetDiffieHellmanKeyBits / 8);
return;
}
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
kNetDiffieHellmanKeyBits / 8, kAuthDhXData);
swap_key_bytes(kAuthDhXData);
}
//============================================================================
PF_CONSOLE_CMD(
Server_Auth,
G,
"int GValue",
"Set the Auth Server G value"
) {
kAuthDhGValue = (int)params[0];
}
//============================================================================
// Server.Csr group
PF_CONSOLE_SUBGROUP(Server, Csr)
//============================================================================
PF_CONSOLE_CMD(
Server_Csr,
Host,
"string address",
"Set the Csr Server address"
) {
wchar_t *wHost = hsStringToWString((const char *)params[0]);
SetCsrSrvHostname(wHost);
delete [] wHost;
}
//============================================================================
PF_CONSOLE_CMD(
Server_Csr,
N,
"string base64Key",
"Set the Csr Server N key"
) {
int baseLength = hsStrlen((const char *)params[0]);
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength, (const char *)params[0])) {
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
kNetDiffieHellmanKeyBits / 8);
return;
}
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
kNetDiffieHellmanKeyBits / 8, kCsrDhNData);
swap_key_bytes(kCsrDhNData);
}
//============================================================================
PF_CONSOLE_CMD(
Server_Csr,
X,
"string base64Key",
"Set the Csr Server X key"
) {
int baseLength = hsStrlen((const char *)params[0]);
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength, (const char *)params[0])) {
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
kNetDiffieHellmanKeyBits / 8);
return;
}
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
kNetDiffieHellmanKeyBits / 8, kCsrDhXData);
swap_key_bytes(kCsrDhXData);
}
//============================================================================
PF_CONSOLE_CMD(
Server_Csr,
G,
"int GValue",
"Set the Csr Server G value"
) {
kCsrDhGValue = (int)params[0];
}
//============================================================================
// Server.Game group
PF_CONSOLE_SUBGROUP(Server, Game)
//============================================================================
PF_CONSOLE_CMD(
Server_Game,
N,
"string base64Key",
"Set the Game Server N key"
) {
int baseLength = hsStrlen((const char *)params[0]);
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength, (const char *)params[0])) {
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
kNetDiffieHellmanKeyBits / 8);
return;
}
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
kNetDiffieHellmanKeyBits / 8, kGameDhNData);
swap_key_bytes(kGameDhNData);
}
//============================================================================
PF_CONSOLE_CMD(
Server_Game,
X,
"string base64Key",
"Set the Game Server X key"
) {
int baseLength = hsStrlen((const char *)params[0]);
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength, (const char *)params[0])) {
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
kNetDiffieHellmanKeyBits / 8);
return;
}
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
kNetDiffieHellmanKeyBits / 8, kGameDhXData);
swap_key_bytes(kGameDhXData);
}
//============================================================================
PF_CONSOLE_CMD(
Server_Game,
G,
"int GValue",
"Set the Game Server G value"
) {
kGameDhGValue = (int)params[0];
}
//============================================================================
// Server.Gate group
PF_CONSOLE_SUBGROUP(Server, Gate)
//============================================================================
PF_CONSOLE_CMD(
Server_Gate,
Host,
"string address",
"Set the GateKeeper Server address"
) {
wchar_t *wHost = hsStringToWString((const char *)params[0]);
SetGateKeeperSrvHostname(wHost);
delete [] wHost;
}
//============================================================================
PF_CONSOLE_CMD(
Server_Gate,
N,
"string base64Key",
"Set the GateKeeper Server N key"
) {
int baseLength = hsStrlen((const char *)params[0]);
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength, (const char *)params[0])) {
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
kNetDiffieHellmanKeyBits / 8);
return;
}
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
kNetDiffieHellmanKeyBits / 8, kGateKeeperDhNData);
swap_key_bytes(kGateKeeperDhNData);
}
//============================================================================
PF_CONSOLE_CMD(
Server_Gate,
X,
"string base64Key",
"Set the GateKeeper Server X key"
) {
int baseLength = hsStrlen((const char *)params[0]);
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength, (const char *)params[0])) {
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
kNetDiffieHellmanKeyBits / 8);
return;
}
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
kNetDiffieHellmanKeyBits / 8, kGateKeeperDhXData);
swap_key_bytes(kGateKeeperDhXData);
}
//============================================================================
PF_CONSOLE_CMD(
Server_Gate,
G,
"int GValue",
"Set the GateKeeper Server G value"
) {
kGateKeeperDhGValue = (int)params[0];
}
#endif

View File

@ -53,9 +53,56 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
const Int32 pfConsoleEngine::fMaxNumParams = 16;
const char pfConsoleEngine::fTokenSeparators[] = " =\r\n\t,";
const char pfConsoleEngine::fTokenGrpSeps[] = " =\r\n._\t,";
static const char kTokenSeparators[] = " =\r\n\t,";
static const char kTokenGrpSeps[] = " =\r\n._\t,";
static char *console_strtok( char *&line, hsBool haveCommand )
{
char *begin = line;
while (*begin && isspace(*begin))
++begin;
for (line = begin; *line; ++line) {
if (!haveCommand) {
for (const char *sep = kTokenGrpSeps; *sep; ++sep) {
if (*line == *sep) {
*line = 0;
while (*++line && (*line == *sep))
/* skip duplicate delimiters */;
return begin;
}
}
} else {
if (*begin == '"' || *begin == '\'') {
// Handle strings as a single token
char *endptr = strchr(line + 1, *line);
if (endptr == nil) {
// Bad string token sentry
return "\xFF";
}
*endptr = 0;
line = endptr + 1;
return begin + 1;
}
for (const char *sep = kTokenSeparators; *sep; ++sep) {
if (*line == *sep) {
*line = 0;
while (*++line && (*line == *sep))
/* skip duplicate delimiters */;
return begin;
}
}
}
}
if (begin == line)
return nil;
line = line + strlen(line);
return begin;
}
//// Constructor & Destructor ////////////////////////////////////////////////
@ -82,7 +129,7 @@ hsBool pfConsoleEngine::PrintCmdHelp( char *name, void (*PrintFn)( const char *
/// Scan for subgroups. This can be an empty loop
group = pfConsoleCmdGroup::GetBaseGroup();
ptr = strtok( name, fTokenGrpSeps );
ptr = console_strtok( name, false );
while( ptr != nil )
{
// Take this token and check to see if it's a group
@ -91,7 +138,7 @@ hsBool pfConsoleEngine::PrintCmdHelp( char *name, void (*PrintFn)( const char *
else
break;
ptr = strtok( nil, fTokenGrpSeps );
ptr = console_strtok( name, false );
}
if( ptr == nil )
@ -159,7 +206,7 @@ const char *pfConsoleEngine::GetCmdSignature( char *name )
/// Scan for subgroups. This can be an empty loop
group = pfConsoleCmdGroup::GetBaseGroup();
ptr = strtok( name, fTokenGrpSeps );
ptr = console_strtok( name, false );
while( ptr != nil )
{
// Take this token and check to see if it's a group
@ -168,7 +215,7 @@ const char *pfConsoleEngine::GetCmdSignature( char *name )
else
break;
ptr = strtok( nil, fTokenGrpSeps );
ptr = console_strtok( name, false );
}
if( ptr == nil )
@ -262,7 +309,7 @@ hsBool pfConsoleEngine::RunCommand( char *line, void (*PrintFn)( const char * )
/// Loop #1: Scan for subgroups. This can be an empty loop
group = pfConsoleCmdGroup::GetBaseGroup();
ptr = strtok( line, fTokenGrpSeps );
ptr = console_strtok( line, false );
while( ptr != nil )
{
// Take this token and check to see if it's a group
@ -271,7 +318,7 @@ hsBool pfConsoleEngine::RunCommand( char *line, void (*PrintFn)( const char * )
else
break;
ptr = strtok( nil, fTokenGrpSeps );
ptr = console_strtok( line, false );
}
if( ptr == nil )
@ -293,84 +340,39 @@ hsBool pfConsoleEngine::RunCommand( char *line, void (*PrintFn)( const char * )
/// params
for( numParams = numQuotedParams = 0; numParams < fMaxNumParams
&& ( ptr = strtok( nil, fTokenSeparators ) ) != nil
&& ( ptr = console_strtok( line, true ) ) != nil
&& valid; numParams++ )
{
if( ptr[ 0 ] == '\'' || ptr[ 0 ] == '"' )
{
// String parameter--keep getting tokens until we hit the other end
if( ptr[ 0 ] == '\xFF' )
{
ISetErrorMsg( "Invalid syntax: unterminated quoted parameter" );
return false;
}
// Note: since params take pointers to strings, we have to have unique temp strings
// for each quoted param we parse. So we have a static array here to a) do so, b)
// avoid having to delete them afterwards, and thus c) reduce overhead.
static char tempStrings[ fMaxNumParams ][ 512 ];
// Special case for context variables--if we're specifying one, we want to just grab
// the value of it and return that instead
valid = false;
if( ptr[ 0 ] == '$' )
{
pfConsoleContext &context = pfConsoleContext::GetRootContext();
char *tempStr = tempStrings[ numQuotedParams++ ], toSearch[ 2 ] = "'";
toSearch[ 0 ] = ptr[ 0 ];
// Potential variable, see if we can find it
Int32 idx = context.FindVar( ptr + 1 );
if( idx == -1 )
{
ISetErrorMsg( "Invalid console variable name" );
}
else
{
// Just copy. Note that this will copy string pointers, but so long as the variable in
// question doesn't change, we'll be OK...
paramArray[ numParams ] = context.GetVarValue( idx );
valid = true;
}
}
if( strlen( ptr ) >= sizeof( tempStrings[ 0 ] ) ) // They're all the same, after all...
{
ISetErrorMsg( "Invalid syntax: quoted parameter too long" );
return false;
}
if( strlen( ptr ) > 1 && ptr[ strlen( ptr ) - 1 ] == toSearch[ 0 ] )
{
// Single word string
strcpy( tempStr, ptr + 1 );
tempStr[ strlen( tempStr ) - 1 ] = 0;
}
else
{
// Multiple word string
sprintf( tempStr, "%s ", ptr + 1 ); // Not perfect, but close
ptr = strtok( nil, toSearch );
if( ptr == nil )
{
ISetErrorMsg( "Invalid syntax: unterminated quoted parameter" );
return false;
}
if( strlen( ptr ) + strlen( tempStr ) >= sizeof( tempStrings[ 0 ] ) ) // They're all the same, after all...
{
ISetErrorMsg( "Invalid syntax: quoted parameter too long" );
return false;
}
strcat( tempStr, ptr );
}
valid = IConvertToParam( cmd->GetSigEntry( (UInt8)numParams ), tempStr, &paramArray[ numParams ] );
}
else
{
// Normal parameter
// Special case for context variables--if we're specifying one, we want to just grab
// the value of it and return that instead
valid = false;
if( ptr[ 0 ] == '$' )
{
pfConsoleContext &context = pfConsoleContext::GetRootContext();
// Potential variable, see if we can find it
Int32 idx = context.FindVar( ptr + 1 );
if( idx == -1 )
{
ISetErrorMsg( "Invalid console variable name" );
}
else
{
// Just copy. Note that this will copy string pointers, but so long as the variable in
// question doesn't change, we'll be OK...
paramArray[ numParams ] = context.GetVarValue( idx );
valid = true;
}
}
if( !valid )
valid = IConvertToParam( cmd->GetSigEntry( (UInt8)numParams ), ptr, &paramArray[ numParams ] );
}
if( !valid )
valid = IConvertToParam( cmd->GetSigEntry( (UInt8)numParams ), ptr, &paramArray[ numParams ] );
}
for( i = numParams; i < fMaxNumParams + 1; i++ )
paramArray[ i ].SetNone();
@ -493,7 +495,7 @@ hsBool pfConsoleEngine::FindPartialCmd( char *line, hsBool findAgain, hsBool pre
/// Loop #1: Scan for subgroups. This can be an empty loop
lastParentGroup = group = pfConsoleCmdGroup::GetBaseGroup();
ptr = strtok( line, fTokenGrpSeps );
ptr = console_strtok( line, false );
while( ptr != nil )
{
// Take this token and check to see if it's a group
@ -508,7 +510,7 @@ hsBool pfConsoleEngine::FindPartialCmd( char *line, hsBool findAgain, hsBool pre
else
break;
ptr = strtok( nil, fTokenGrpSeps );
ptr = console_strtok( line, false );
strcat( newStr, "." );
insertLoc++;
}

View File

@ -68,8 +68,6 @@ class pfConsoleEngine
private:
static const Int32 fMaxNumParams;
static const char fTokenSeparators[];
static const char fTokenGrpSeps[];
hsBool IConvertToParam( UInt8 type, char *string, pfConsoleCmdParam *param );

View File

@ -43,7 +43,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#ifndef pnDispatchCreatable_inc
#define pnDispatchCreatable_inc
#include "../pnFactory/plCreatable.h"
#include "../pnFactory/plCreator.h"
#include "plDispatch.h"

View File

@ -53,6 +53,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "pnNbConst.h"
#include "pnNbError.h"
#include "pnNbKeys.h"
#include "pnNbProtocol.h"
#include "pnNbSrvs.h"

View File

@ -0,0 +1,141 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Additional permissions under GNU GPL version 3 section 7
If you modify this Program, or any covered work, by linking or
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
(or a modified version of those libraries),
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
licensors of this Program grant you additional
permission to convey the resulting work. Corresponding Source for a
non-source form of such a combination shall include the source code for
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
work.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
/*****************************************************************************
*
* $/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbKeys.cpp
*
***/
#include "../Pch.h"
#pragma hdrstop
// Auth Server
unsigned kAuthDhGValue = 41;
byte kAuthDhNData[kNetDiffieHellmanKeyBits / 8] = {
0x2d, 0x17, 0x19, 0x42, 0xeb, 0x71, 0x8f, 0x91,
0x29, 0x7c, 0x61, 0x88, 0x43, 0x75, 0xe5, 0xee,
0x72, 0xfe, 0x45, 0x1b, 0x43, 0xc3, 0x8e, 0xb9,
0x47, 0x5e, 0x03, 0xc8, 0x0c, 0x78, 0xb7, 0xe4,
0x4d, 0x31, 0x5b, 0xcb, 0x66, 0xc2, 0x54, 0x1a,
0x0a, 0x61, 0x11, 0x57, 0x38, 0x66, 0x9b, 0x34,
0x6b, 0xab, 0x6d, 0x12, 0x12, 0x38, 0x87, 0xc5,
0x3f, 0x20, 0xbe, 0x97, 0xa3, 0xa6, 0x56, 0x8f
};
byte kAuthDhXData[kNetDiffieHellmanKeyBits / 8] = {
0x21, 0xcf, 0x1d, 0xc6, 0x08, 0xc0, 0x23, 0xad,
0x53, 0x36, 0xce, 0x61, 0x25, 0xdd, 0xb9, 0x55,
0x05, 0xc1, 0xbb, 0x8f, 0xf4, 0x0d, 0x59, 0xf9,
0x20, 0x27, 0x9a, 0xee, 0xfb, 0x23, 0x5b, 0xeb,
0xe5, 0xec, 0x01, 0x55, 0x2e, 0xd5, 0x64, 0xef,
0xea, 0x43, 0xb1, 0x9e, 0xb9, 0x8c, 0x75, 0x3f,
0xda, 0xb2, 0xbb, 0xb3, 0x6a, 0x3d, 0xcd, 0xbc,
0xfa, 0x6f, 0x03, 0xf3, 0x55, 0xd8, 0xe9, 0x1b
};
// CSR Server
unsigned kCsrDhGValue = 97;
byte kCsrDhNData[kNetDiffieHellmanKeyBits / 8] = {
0xbd, 0xf8, 0x03, 0x17, 0xed, 0x27, 0x74, 0x0d,
0x76, 0x8e, 0x7a, 0x8c, 0x88, 0xeb, 0xec, 0xde,
0xd7, 0x73, 0x37, 0x8f, 0x4b, 0xbc, 0xae, 0x75,
0xf8, 0xda, 0x22, 0xee, 0x50, 0xc9, 0xb3, 0x69,
0x97, 0x0b, 0xe5, 0x28, 0x98, 0x91, 0xf7, 0x44,
0x97, 0xdf, 0x70, 0xf1, 0x86, 0x6c, 0xfa, 0x03,
0x7c, 0x47, 0x73, 0xb1, 0x62, 0x00, 0x42, 0x99,
0xf0, 0xc6, 0xe7, 0x05, 0xd8, 0xcd, 0xd6, 0x6d
};
byte kCsrDhXData[kNetDiffieHellmanKeyBits / 8] = {
0x03, 0x1d, 0x83, 0x62, 0x36, 0x92, 0x63, 0xa6,
0xa8, 0x66, 0x31, 0xbe, 0x28, 0x42, 0xc2, 0xe6,
0x86, 0x98, 0x3a, 0x81, 0x13, 0x0e, 0xb7, 0x96,
0x5e, 0x27, 0x87, 0x6a, 0x06, 0x68, 0x51, 0x21,
0xf3, 0x74, 0xe9, 0x11, 0xe9, 0x73, 0x5f, 0xdb,
0x37, 0x2a, 0x2d, 0x49, 0xa4, 0x76, 0x12, 0x06,
0x58, 0x36, 0x59, 0x6d, 0xbb, 0x59, 0x57, 0x2c,
0x34, 0xe4, 0x5e, 0xd4, 0x2c, 0x78, 0xc3, 0x34
};
// Game Server
unsigned kGameDhGValue = 73;
byte kGameDhNData[kNetDiffieHellmanKeyBits / 8] = {
0x38, 0xa4, 0xf7, 0x69, 0x43, 0xd7, 0xa6, 0xc7,
0x27, 0x72, 0x3b, 0x12, 0x6a, 0x76, 0x09, 0x5d,
0xaa, 0x9a, 0x38, 0x44, 0xde, 0x84, 0x22, 0xc4,
0xde, 0x3f, 0xfd, 0x50, 0x26, 0xea, 0xbb, 0x20,
0xd6, 0xad, 0x2e, 0xcd, 0xfe, 0xf2, 0x70, 0x1b,
0x19, 0xd1, 0x82, 0x15, 0xd7, 0xcb, 0x33, 0x60,
0x20, 0xbc, 0x43, 0xc9, 0x55, 0x0b, 0xc9, 0x20,
0xd9, 0x24, 0xd2, 0x49, 0xd0, 0x28, 0x4b, 0x90
};
byte kGameDhXData[kNetDiffieHellmanKeyBits / 8] = {
0xf9, 0xb2, 0x93, 0xbd, 0x02, 0xbd, 0x72, 0x48,
0xa9, 0x21, 0xbd, 0x09, 0x3e, 0x44, 0x65, 0x3e,
0xc2, 0xfd, 0x5a, 0xf0, 0x99, 0x3b, 0x3f, 0x5c,
0x47, 0x76, 0x5c, 0x1f, 0x84, 0xd8, 0x01, 0x68,
0xdc, 0x5f, 0xb6, 0xba, 0xc8, 0xfd, 0x79, 0x98,
0x62, 0x93, 0x36, 0x7f, 0x14, 0xcf, 0x33, 0x67,
0x84, 0x04, 0xcf, 0xa3, 0x7a, 0x65, 0xe9, 0x68,
0x4f, 0x58, 0x58, 0xb3, 0x8f, 0x3d, 0xdb, 0x3d
};
// GateKeeper Server
unsigned kGateKeeperDhGValue = 4;
byte kGateKeeperDhNData[kNetDiffieHellmanKeyBits / 8] = {
0x8d, 0xfa, 0x35, 0xe6, 0xf8, 0x7a, 0x50, 0x50,
0xab, 0x25, 0x4b, 0x81, 0xd1, 0xd7, 0x7a, 0x23,
0xa3, 0x9a, 0x21, 0x0f, 0x34, 0xab, 0x66, 0x2e,
0x16, 0x98, 0x55, 0xb6, 0xfc, 0x49, 0xd5, 0x50,
0xdc, 0xb8, 0x4c, 0x4d, 0xc7, 0xdb, 0xf1, 0x1c,
0x15, 0x4c, 0x55, 0xf5, 0x92, 0x0d, 0x6a, 0xec,
0x60, 0xbc, 0x55, 0xfa, 0x29, 0x2f, 0x6f, 0xc3,
0xd7, 0x21, 0x80, 0xa3, 0x6b, 0x44, 0x23, 0xb5,
};
byte kGateKeeperDhXData[kNetDiffieHellmanKeyBits / 8] = {
0xb3, 0x88, 0xff, 0x0b, 0x90, 0x70, 0x2b, 0x2e,
0x07, 0xbc, 0x62, 0x98, 0x83, 0x9d, 0x0f, 0x05,
0x39, 0xfa, 0x35, 0x39, 0xa9, 0xf3, 0xb3, 0xfc,
0xcd, 0x5e, 0xa9, 0xa6, 0x61, 0x0f, 0x9b, 0x38,
0x0f, 0x9c, 0xbe, 0xa0, 0xbe, 0x6f, 0x7f, 0xe4,
0x7c, 0xcb, 0xc4, 0x09, 0x6c, 0x8d, 0xce, 0x47,
0x68, 0x82, 0x32, 0xc5, 0x89, 0x94, 0xf9, 0xca,
0x69, 0x69, 0xd0, 0x60, 0x19, 0xb7, 0xf3, 0x1a,
};

View File

@ -39,36 +39,33 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
Mead, WA 99021
*==LICENSE==*/
/*************************************************************
*
* This file was auto-generated by plDhKeyGen.exe
/*****************************************************************************
*
* $/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbKeys.h
*
***/
static const unsigned kDhGValue = 41;
#ifdef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNNETBASE_PRIVATE_PNNBKEYS_H
#error "Header $/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbKeys.h included more than once"
#endif
#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNNETBASE_PRIVATE_PNNBKEYS_H
static const byte kDhNData[] = {
0x2d, 0x17, 0x19, 0x42, 0xeb, 0x71, 0x8f, 0x91,
0x29, 0x7c, 0x61, 0x88, 0x43, 0x75, 0xe5, 0xee,
0x72, 0xfe, 0x45, 0x1b, 0x43, 0xc3, 0x8e, 0xb9,
0x47, 0x5e, 0x03, 0xc8, 0x0c, 0x78, 0xb7, 0xe4,
0x4d, 0x31, 0x5b, 0xcb, 0x66, 0xc2, 0x54, 0x1a,
0x0a, 0x61, 0x11, 0x57, 0x38, 0x66, 0x9b, 0x34,
0x6b, 0xab, 0x6d, 0x12, 0x12, 0x38, 0x87, 0xc5,
0x3f, 0x20, 0xbe, 0x97, 0xa3, 0xa6, 0x56, 0x8f
};
COMPILER_ASSERT(sizeof(kDhNData) == kNetDiffieHellmanKeyBits / 8);
// Auth Server
extern unsigned kAuthDhGValue;
extern byte kAuthDhNData[kNetDiffieHellmanKeyBits / 8];
extern byte kAuthDhXData[kNetDiffieHellmanKeyBits / 8];
static const byte kDhXData[] = {
0x21, 0xcf, 0x1d, 0xc6, 0x08, 0xc0, 0x23, 0xad,
0x53, 0x36, 0xce, 0x61, 0x25, 0xdd, 0xb9, 0x55,
0x05, 0xc1, 0xbb, 0x8f, 0xf4, 0x0d, 0x59, 0xf9,
0x20, 0x27, 0x9a, 0xee, 0xfb, 0x23, 0x5b, 0xeb,
0xe5, 0xec, 0x01, 0x55, 0x2e, 0xd5, 0x64, 0xef,
0xea, 0x43, 0xb1, 0x9e, 0xb9, 0x8c, 0x75, 0x3f,
0xda, 0xb2, 0xbb, 0xb3, 0x6a, 0x3d, 0xcd, 0xbc,
0xfa, 0x6f, 0x03, 0xf3, 0x55, 0xd8, 0xe9, 0x1b
};
COMPILER_ASSERT(sizeof(kDhXData) == kNetDiffieHellmanKeyBits / 8);
// CSR Server
extern unsigned kCsrDhGValue;
extern byte kCsrDhNData[kNetDiffieHellmanKeyBits / 8];
extern byte kCsrDhXData[kNetDiffieHellmanKeyBits / 8];
// Game Server
extern unsigned kGameDhGValue;
extern byte kGameDhNData[kNetDiffieHellmanKeyBits / 8];
extern byte kGameDhXData[kNetDiffieHellmanKeyBits / 8];
// GateKeeper Server
extern unsigned kGateKeeperDhGValue;
extern byte kGateKeeperDhNData[kNetDiffieHellmanKeyBits / 8];
extern byte kGateKeeperDhXData[kNetDiffieHellmanKeyBits / 8];

View File

@ -162,6 +162,9 @@ static const wchar * s_gateKeeperAddrsOverride[] = {
s_gateKeeperAddrCmdLine
};
static unsigned s_clientPort = 14617;
static unsigned s_serverPort = 14618;
static unsigned s_simpleNetPort = 14620;
/*****************************************************************************
*
@ -276,3 +279,77 @@ bool GateKeeperSrvHostnameOverride () {
return s_gateKeeperAddrCmdLine[0];
}
//============================================================================
// Client Port
//============================================================================
unsigned GetClientPort() {
return s_clientPort;
}
//============================================================================
void SetClientPort(unsigned port) {
s_clientPort = port;
}
//============================================================================
unsigned GetServerPort() {
return s_serverPort;
}
//============================================================================
unsigned GetSimpleNetPort() {
return s_simpleNetPort;
}
//============================================================================
// User-visible Server
//============================================================================
static const wchar* kDefaultStatusUrl = L"http://account.mystonline.com/serverstatus/moullive.php";
static const wchar* kDefaultSignupUrl = L"http://www.mystonline.com/signup.html";
static const wchar* kDefaultServerName = L"MOULagain";
static wchar s_serverStatusUrl[256];
static wchar s_serverSignupUrl[256];
static wchar s_serverName[256];
//============================================================================
const wchar *GetServerStatusUrl () {
if (s_serverStatusUrl[0]) {
return s_serverStatusUrl;
}
return kDefaultStatusUrl;
}
//============================================================================
void SetServerStatusUrl (const wchar url[]) {
StrCopy(s_serverStatusUrl, url, arrsize(s_serverStatusUrl));
}
//============================================================================
const wchar *GetServerSignupUrl () {
if (s_serverSignupUrl[0]) {
return s_serverSignupUrl;
}
return kDefaultSignupUrl;
}
//============================================================================
void SetServerSignupUrl (const wchar url[]) {
StrCopy(s_serverSignupUrl, url, arrsize(s_serverSignupUrl));
}
//============================================================================
const wchar *GetServerDisplayName () {
if (s_serverName[0]) {
return s_serverName;
}
return kDefaultServerName;
}
//============================================================================
void SetServerDisplayName (const wchar name[]) {
StrCopy(s_serverName, name, arrsize(s_serverName));
}

View File

@ -104,3 +104,17 @@ bool CsrSrvHostnameOverride ();
unsigned GetGateKeeperSrvHostnames (const wchar *** addrs); // returns addrCount
void SetGateKeeperSrvHostname (const wchar addr[]);
bool GateKeeperSrvHostnameOverride ();
unsigned GetClientPort();
void SetClientPort(unsigned port);
unsigned GetServerPort();
unsigned GetSimpleNetPort();
const wchar *GetServerStatusUrl ();
void SetServerStatusUrl (const wchar url[]);
const wchar *GetServerSignupUrl ();
void SetServerSignupUrl (const wchar url[]);
const wchar *GetServerDisplayName ();
void SetServerDisplayName (const wchar name[]);

View File

@ -60,10 +60,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
//============================================================================
// Network constants
//============================================================================
const unsigned kNetLegacyClientPort = 80;
const unsigned kNetDefaultClientPort = 14617;
const unsigned kNetDefaultServerPort = 14618;
const unsigned kNetDefaultSimpleNetPort = 14620;
const unsigned kMaxTcpPacketSize = 1460;
//============================================================================

View File

@ -1,74 +0,0 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Additional permissions under GNU GPL version 3 section 7
If you modify this Program, or any covered work, by linking or
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
(or a modified version of those libraries),
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
licensors of this Program grant you additional
permission to convey the resulting work. Corresponding Source for a
non-source form of such a combination shall include the source code for
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
work.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
/*************************************************************
*
* This file was auto-generated by plDhKeyGen.exe
*
***/
static const unsigned kDhGValue = 73;
static const byte kDhNData[] = {
0x38, 0xa4, 0xf7, 0x69, 0x43, 0xd7, 0xa6, 0xc7,
0x27, 0x72, 0x3b, 0x12, 0x6a, 0x76, 0x09, 0x5d,
0xaa, 0x9a, 0x38, 0x44, 0xde, 0x84, 0x22, 0xc4,
0xde, 0x3f, 0xfd, 0x50, 0x26, 0xea, 0xbb, 0x20,
0xd6, 0xad, 0x2e, 0xcd, 0xfe, 0xf2, 0x70, 0x1b,
0x19, 0xd1, 0x82, 0x15, 0xd7, 0xcb, 0x33, 0x60,
0x20, 0xbc, 0x43, 0xc9, 0x55, 0x0b, 0xc9, 0x20,
0xd9, 0x24, 0xd2, 0x49, 0xd0, 0x28, 0x4b, 0x90
};
COMPILER_ASSERT(sizeof(kDhNData) == kNetDiffieHellmanKeyBits / 8);
static const byte kDhXData[] = {
0xf9, 0xb2, 0x93, 0xbd, 0x02, 0xbd, 0x72, 0x48,
0xa9, 0x21, 0xbd, 0x09, 0x3e, 0x44, 0x65, 0x3e,
0xc2, 0xfd, 0x5a, 0xf0, 0x99, 0x3b, 0x3f, 0x5c,
0x47, 0x76, 0x5c, 0x1f, 0x84, 0xd8, 0x01, 0x68,
0xdc, 0x5f, 0xb6, 0xba, 0xc8, 0xfd, 0x79, 0x98,
0x62, 0x93, 0x36, 0x7f, 0x14, 0xcf, 0x33, 0x67,
0x84, 0x04, 0xcf, 0xa3, 0x7a, 0x65, 0xe9, 0x68,
0x4f, 0x58, 0x58, 0xb3, 0x8f, 0x3d, 0xdb, 0x3d
};
COMPILER_ASSERT(sizeof(kDhXData) == kNetDiffieHellmanKeyBits / 8);

View File

@ -617,6 +617,11 @@ static const NetMsgField kScoreGetRanksReplyFields[] = {
NET_MSG_FIELD_VAR_PTR(), // nodeBuffer
};
static const NetMsgField kServerCapsFields[] = {
NET_MSG_FIELD_VAR_COUNT(1, 1024 * 1024), // capsBytes
NET_MSG_FIELD_VAR_PTR(), // capsBuffer
};
} using namespace Cli2Auth;
@ -719,3 +724,4 @@ const NetMsg kNetMsg_Auth2Cli_ScoreAddPointsReply = NET_MSG(kAuth2Cli_ScoreAddP
const NetMsg kNetMsg_Auth2Cli_ScoreTransferPointsReply = NET_MSG(kAuth2Cli_ScoreTransferPointsReply, kScoreTransferPointsReplyFields);
const NetMsg kNetMsg_Auth2Cli_ScoreSetPointsReply = NET_MSG(kAuth2Cli_ScoreSetPointsReply, kScoreSetPointsReplyFields);
const NetMsg kNetMsg_Auth2Cli_ScoreGetRanksReply = NET_MSG(kAuth2Cli_ScoreGetRanksReply, kScoreGetRanksReplyFields);
const NetMsg kNetMsg_Auth2Cli_ServerCaps = NET_MSG(kAuth2Cli_ServerCaps, kServerCapsFields);

View File

@ -210,6 +210,8 @@ enum {
kAuth2Cli_AccountExistsReply,
kAuth2Cli_ServerCaps = 0x1002,
kNumAuth2CliMessages
};
COMPILER_ASSERT_HEADER(Cli2Auth, kNumAuth2CliMessages <= (word)-1);
@ -1043,6 +1045,14 @@ struct Auth2Cli_ScoreGetRanksReply {
// no more fields
};
// ServerCaps
extern const NetMsg kNetMsg_Auth2Cli_ServerCaps;
struct Auth2Cli_ServerCaps {
dword messageId;
dword byteCount;
byte buffer[1]; // [byteCount], actually
};
//============================================================================
// END PACKED DATA STRUCTURES
//============================================================================

View File

@ -488,7 +488,7 @@ bool SimpleNetStartListening (
s_queryAcceptParam = param;
NetAddress addr;
NetAddressFromNode(0, kNetDefaultSimpleNetPort, &addr);
NetAddressFromNode(0, GetSimpleNetPort(), &addr);
return (0 != AsyncSocketStartListening(addr, nil));
}
@ -498,7 +498,7 @@ void SimpleNetStopListening () {
ASSERT(s_running);
NetAddress addr;
NetAddressFromNode(0, kNetDefaultSimpleNetPort, &addr);
NetAddressFromNode(0, GetSimpleNetPort(), &addr);
AsyncSocketStopListening(addr, nil);
s_queryAccept = nil;
@ -591,7 +591,7 @@ void SimpleNetStartConnecting (
&cancelId,
AsyncLookupCallback,
addr,
kNetDefaultSimpleNetPort,
GetSimpleNetPort(),
cp
);
break;
@ -599,7 +599,7 @@ void SimpleNetStartConnecting (
}
if (!name[0]) {
NetAddress netAddr;
NetAddressFromString(&netAddr, addr, kNetDefaultSimpleNetPort);
NetAddressFromString(&netAddr, addr, GetSimpleNetPort());
Connect(netAddr, cp);
}
}

View File

@ -150,7 +150,7 @@ unsigned Base64Decode (
byte * dstData
) {
ASSERT(srcData);
ASSERT(dstChars >= Base64DecodeSize(srcChars));
ASSERT(dstChars >= Base64DecodeSize(srcChars, srcData));
ASSERT(dstData);
REF(dstChars);

View File

@ -62,7 +62,8 @@ const unsigned kBase64EncodeBlock = 4;
const unsigned kBase64EncodeMultiple = 3;
inline unsigned Base64EncodeSize (unsigned srcChars) {
return srcChars * kBase64EncodeBlock / kBase64EncodeMultiple + kBase64EncodeBlock;
return (srcChars + kBase64EncodeMultiple - 1) / kBase64EncodeMultiple
* kBase64EncodeBlock;
}
unsigned Base64Encode (
unsigned srcChars,
@ -71,8 +72,10 @@ unsigned Base64Encode (
char * dstData
);
inline unsigned Base64DecodeSize (unsigned srcChars) {
return srcChars * kBase64EncodeMultiple / kBase64EncodeBlock + kBase64EncodeMultiple;
inline unsigned Base64DecodeSize (unsigned srcChars, const char srcData[]) {
return srcChars * kBase64EncodeMultiple / kBase64EncodeBlock
- ((srcChars >= 1 && srcData[srcChars - 1] == '=') ? 1 : 0)
- ((srcChars >= 2 && srcData[srcChars - 2] == '=') ? 1 : 0);
}
unsigned Base64Decode (
unsigned srcChars,

View File

@ -48,9 +48,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "../Pch.h"
#pragma hdrstop
// This file excluded from pre-compiled header because it is auto-generated by the build server.
#include "pnNetBase/pnNbAuthKey.hpp"
namespace Ngl { namespace Auth {
/*****************************************************************************
*
@ -2373,6 +2370,17 @@ static bool Recv_ScoreGetRanksReply (
return true;
}
//============================================================================
static bool Recv_ServerCaps(
const byte msg[],
unsigned bytes,
void *
) {
// Ignore the message
return true;
}
/*****************************************************************************
*
* Cli2Auth protocol
@ -2476,6 +2484,7 @@ static NetMsgInitRecv s_recv[] = {
{ MSG(ScoreSetPointsReply) },
{ MSG(ScoreGetRanksReply) },
{ MSG(AccountExistsReply) },
{ MSG(ServerCaps) },
};
#undef MSG
@ -5089,9 +5098,9 @@ void AuthInitialize () {
false,
s_send, arrsize(s_send),
s_recv, arrsize(s_recv),
kDhGValue,
BigNum(sizeof(kDhXData), kDhXData),
BigNum(sizeof(kDhNData), kDhNData)
kAuthDhGValue,
BigNum(sizeof(kAuthDhXData), kAuthDhXData),
BigNum(sizeof(kAuthDhNData), kAuthDhNData)
);
}
@ -5201,7 +5210,7 @@ void NetCliAuthStartConnect (
&cancelId,
AsyncLookupCallback,
authAddrList[i],
kNetDefaultClientPort,
GetClientPort(),
nil
);
break;
@ -5209,7 +5218,7 @@ void NetCliAuthStartConnect (
}
if (!name[0]) {
NetAddress addr;
NetAddressFromString(&addr, authAddrList[i], kNetDefaultClientPort);
NetAddressFromString(&addr, authAddrList[i], GetClientPort());
Connect(authAddrList[i], addr);
}
}

View File

@ -48,9 +48,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "../Pch.h"
#pragma hdrstop
// This file excluded from pre-compiled header because it is auto-generated by the build server.
#include "pnNetBase/pnNbCsrKey.hpp"
namespace Ngl { namespace Csr {
/*****************************************************************************
@ -764,9 +761,9 @@ void CsrInitialize () {
false,
s_send, arrsize(s_send),
s_recv, arrsize(s_recv),
kDhGValue,
BigNum(sizeof(kDhXData), kDhXData),
BigNum(sizeof(kDhNData), kDhNData)
kCsrDhGValue,
BigNum(sizeof(kCsrDhXData), kCsrDhXData),
BigNum(sizeof(kCsrDhNData), kCsrDhNData)
);
}
@ -860,7 +857,7 @@ void NetCliCsrStartConnect (
&cancelId,
AsyncLookupCallback,
addrList[i],
kNetDefaultClientPort,
GetClientPort(),
cp
);
break;
@ -868,7 +865,7 @@ void NetCliCsrStartConnect (
}
if (!name[0]) {
NetAddress addr;
NetAddressFromString(&addr, addrList[i], kNetDefaultClientPort);
NetAddressFromString(&addr, addrList[i], GetClientPort());
ConnectParam * cp = NEW(ConnectParam);
cp->callback = callback;

View File

@ -1361,7 +1361,7 @@ void NetCliFileStartConnect (
&cancelId,
AsyncLookupCallback,
fileAddrList[i],
kNetDefaultClientPort,
GetClientPort(),
nil
);
break;
@ -1369,7 +1369,7 @@ void NetCliFileStartConnect (
}
if (!name[0]) {
NetAddress addr;
NetAddressFromString(&addr, fileAddrList[i], kNetDefaultClientPort);
NetAddressFromString(&addr, fileAddrList[i], GetClientPort());
Connect(fileAddrList[i], addr);
}
}
@ -1399,7 +1399,7 @@ void NetCliFileStartConnectAsServer (
&cancelId,
AsyncLookupCallback,
fileAddrList[i],
kNetDefaultClientPort,
GetClientPort(),
nil
);
break;
@ -1407,7 +1407,7 @@ void NetCliFileStartConnectAsServer (
}
if (!name[0]) {
NetAddress addr;
NetAddressFromString(&addr, fileAddrList[i], kNetDefaultServerPort);
NetAddressFromString(&addr, fileAddrList[i], GetServerPort());
Connect(fileAddrList[i], addr);
}
}

View File

@ -48,9 +48,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "../Pch.h"
#pragma hdrstop
// This file excluded from pre-compiled header because it is auto-generated by the build server.
#include "pnNetBase/pnNbGameKey.hpp"
namespace Ngl { namespace Game {
/*****************************************************************************
*
@ -665,9 +662,9 @@ void GameInitialize () {
false,
s_send, arrsize(s_send),
s_recv, arrsize(s_recv),
kDhGValue,
BigNum(sizeof(kDhXData), kDhXData),
BigNum(sizeof(kDhNData), kDhNData)
kGameDhGValue,
BigNum(sizeof(kGameDhXData), kGameDhXData),
BigNum(sizeof(kGameDhNData), kGameDhNData)
);
}

View File

@ -48,9 +48,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "../Pch.h"
#pragma hdrstop
// This file excluded from pre-compiled header because it is auto-generated by the build server.
#include "pnNetBase/pnNbGateKeeperKey.hpp"
namespace Ngl { namespace GateKeeper {
/*****************************************************************************
@ -1005,9 +1002,9 @@ void GateKeeperInitialize () {
false,
s_send, arrsize(s_send),
s_recv, arrsize(s_recv),
kDhGValue,
BigNum(sizeof(kDhXData), kDhXData),
BigNum(sizeof(kDhNData), kDhNData)
kGateKeeperDhGValue,
BigNum(sizeof(kGateKeeperDhXData), kGateKeeperDhXData),
BigNum(sizeof(kGateKeeperDhNData), kGateKeeperDhNData)
);
}
@ -1091,7 +1088,7 @@ void NetCliGateKeeperStartConnect (
&cancelId,
AsyncLookupCallback,
gateKeeperAddrList[i],
kNetDefaultClientPort,
GetClientPort(),
nil
);
break;
@ -1099,7 +1096,7 @@ void NetCliGateKeeperStartConnect (
}
if (!name[0]) {
NetAddress addr;
NetAddressFromString(&addr, gateKeeperAddrList[i], kNetDefaultClientPort);
NetAddressFromString(&addr, gateKeeperAddrList[i], GetClientPort());
Connect(gateKeeperAddrList[i], addr);
}
}