A couple changes

Priority visuals
Fix bug related to doubletap
MSBuild now builds both non AVX2 and AVX2 versions
This commit is contained in:
rei-kes 2024-05-27 15:31:48 -04:00
parent f846ae69a1
commit baa13d7d08
16 changed files with 308 additions and 109 deletions

View File

@ -1,36 +1,31 @@
name: MSBuild name: MSBuild
on: on: [push, pull_request]
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
env:
SOLUTION_FILE_PATH: .
BUILD_PLATFORM: x64
BUILD_CONFIGURATION: Release
jobs: jobs:
build: msbuild:
runs-on: windows-latest runs-on: windows-latest
strategy:
matrix:
configuration: [Release, ReleaseAVX2]
platform: [x64]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Add MSBuild to PATH - name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v1.1 uses: microsoft/setup-msbuild@v2
- name: Restore NuGet packages - name: Restore NuGet packages
working-directory: ${{env.GITHUB_WORKSPACE}} working-directory: ${{ env.GITHUB_WORKSPACE }}
run: nuget restore ${{env.SOLUTION_FILE_PATH}} run: nuget restore
- name: Build - name: Build
working-directory: ${{env.GITHUB_WORKSPACE}} working-directory: ${{ env.GITHUB_WORKSPACE }}
run: msbuild /m /p:Platform=${{env.BUILD_PLATFORM}} /p:Configuration=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}} run: msbuild Amalgam.sln /p:Platform=${{ matrix.platform }} /p:Configuration=${{ matrix.configuration }}
- uses: actions/upload-artifact@v3 - uses: actions/upload-artifact@v4
with: with:
name: Amalgam name: Amalgam${{ matrix.platform }}${{ matrix.configuration }}
path: ${{env.SOLUTION_FILE_PATH}}/output/${{env.BUILD_PLATFORM}}/${{env.BUILD_CONFIGURATION}}/*.dll path: output/${{ matrix.platform }}/${{ matrix.configuration }}/*.dll

View File

@ -9,18 +9,30 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64 Debug|x64 = Debug|x64
Debug|x86 = Debug|x86 Debug|x86 = Debug|x86
DebugAVX2|x64 = DebugAVX2|x64
DebugAVX2|x86 = DebugAVX2|x86
Release|x64 = Release|x64 Release|x64 = Release|x64
Release|x86 = Release|x86 Release|x86 = Release|x86
ReleaseAVX2|x64 = ReleaseAVX2|x64
ReleaseAVX2|x86 = ReleaseAVX2|x86
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2550C133-72A8-4AF7-B22A-A8012BD9F376}.Debug|x64.ActiveCfg = Debug|x64 {2550C133-72A8-4AF7-B22A-A8012BD9F376}.Debug|x64.ActiveCfg = Debug|x64
{2550C133-72A8-4AF7-B22A-A8012BD9F376}.Debug|x64.Build.0 = Debug|x64 {2550C133-72A8-4AF7-B22A-A8012BD9F376}.Debug|x64.Build.0 = Debug|x64
{2550C133-72A8-4AF7-B22A-A8012BD9F376}.Debug|x86.ActiveCfg = Debug|Win32 {2550C133-72A8-4AF7-B22A-A8012BD9F376}.Debug|x86.ActiveCfg = Debug|Win32
{2550C133-72A8-4AF7-B22A-A8012BD9F376}.Debug|x86.Build.0 = Debug|Win32 {2550C133-72A8-4AF7-B22A-A8012BD9F376}.Debug|x86.Build.0 = Debug|Win32
{2550C133-72A8-4AF7-B22A-A8012BD9F376}.DebugAVX2|x64.ActiveCfg = DebugAVX2|x64
{2550C133-72A8-4AF7-B22A-A8012BD9F376}.DebugAVX2|x64.Build.0 = DebugAVX2|x64
{2550C133-72A8-4AF7-B22A-A8012BD9F376}.DebugAVX2|x86.ActiveCfg = DebugAVX2|Win32
{2550C133-72A8-4AF7-B22A-A8012BD9F376}.DebugAVX2|x86.Build.0 = DebugAVX2|Win32
{2550C133-72A8-4AF7-B22A-A8012BD9F376}.Release|x64.ActiveCfg = Release|x64 {2550C133-72A8-4AF7-B22A-A8012BD9F376}.Release|x64.ActiveCfg = Release|x64
{2550C133-72A8-4AF7-B22A-A8012BD9F376}.Release|x64.Build.0 = Release|x64 {2550C133-72A8-4AF7-B22A-A8012BD9F376}.Release|x64.Build.0 = Release|x64
{2550C133-72A8-4AF7-B22A-A8012BD9F376}.Release|x86.ActiveCfg = Release|Win32 {2550C133-72A8-4AF7-B22A-A8012BD9F376}.Release|x86.ActiveCfg = Release|Win32
{2550C133-72A8-4AF7-B22A-A8012BD9F376}.Release|x86.Build.0 = Release|Win32 {2550C133-72A8-4AF7-B22A-A8012BD9F376}.Release|x86.Build.0 = Release|Win32
{2550C133-72A8-4AF7-B22A-A8012BD9F376}.ReleaseAVX2|x64.ActiveCfg = ReleaseAVX2|x64
{2550C133-72A8-4AF7-B22A-A8012BD9F376}.ReleaseAVX2|x64.Build.0 = ReleaseAVX2|x64
{2550C133-72A8-4AF7-B22A-A8012BD9F376}.ReleaseAVX2|x86.ActiveCfg = ReleaseAVX2|Win32
{2550C133-72A8-4AF7-B22A-A8012BD9F376}.ReleaseAVX2|x86.Build.0 = ReleaseAVX2|Win32
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@ -1,10 +1,26 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="DebugAVX2|Win32">
<Configuration>DebugAVX2</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="DebugAVX2|x64">
<Configuration>DebugAVX2</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="ReleaseAVX2|Win32">
<Configuration>ReleaseAVX2</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="ReleaseAVX2|x64">
<Configuration>ReleaseAVX2</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -33,6 +49,13 @@
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAVX2|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
@ -40,6 +63,13 @@
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAVX2|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
@ -47,6 +77,13 @@
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAVX2|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
@ -54,6 +91,13 @@
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAVX2|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
@ -62,15 +106,27 @@
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugAVX2|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAVX2|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugAVX2|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAVX2|x64'" 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 Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<TargetName>$(ProjectName)$(Platform)$(Configuration)</TargetName> <TargetName>$(ProjectName)$(Platform)$(Configuration)</TargetName>
@ -78,12 +134,24 @@
<IncludePath>$(ProjectDir)include\;$(IncludePath)</IncludePath> <IncludePath>$(ProjectDir)include\;$(IncludePath)</IncludePath>
<OutDir>$(SolutionDir)output\$(Platform)\$(Configuration)\</OutDir> <OutDir>$(SolutionDir)output\$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAVX2|x64'">
<TargetName>$(ProjectName)$(Platform)$(Configuration)</TargetName>
<IntDir>$(SolutionDir)build\$(Platform)\$(Configuration)\</IntDir>
<IncludePath>$(ProjectDir)include\;$(IncludePath)</IncludePath>
<OutDir>$(SolutionDir)output\$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<IncludePath>$(ProjectDir)include\;$(IncludePath)</IncludePath> <IncludePath>$(ProjectDir)include\;$(IncludePath)</IncludePath>
<IntDir>$(SolutionDir)build\$(Platform)\$(Configuration)\</IntDir> <IntDir>$(SolutionDir)build\$(Platform)\$(Configuration)\</IntDir>
<TargetName>$(ProjectName)$(Platform)$(Configuration)</TargetName> <TargetName>$(ProjectName)$(Platform)$(Configuration)</TargetName>
<OutDir>$(SolutionDir)output\$(Platform)\$(Configuration)\</OutDir> <OutDir>$(SolutionDir)output\$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAVX2|x64'">
<IncludePath>$(ProjectDir)include\;$(IncludePath)</IncludePath>
<IntDir>$(SolutionDir)build\$(Platform)\$(Configuration)\</IntDir>
<TargetName>$(ProjectName)$(Platform)$(Configuration)</TargetName>
<OutDir>$(SolutionDir)output\$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(SolutionDir)output\$(Platform)\$(Configuration)\</OutDir> <OutDir>$(SolutionDir)output\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)build\$(Platform)\$(Configuration)\</IntDir> <IntDir>$(SolutionDir)build\$(Platform)\$(Configuration)\</IntDir>
@ -94,6 +162,16 @@
<LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64)</LibraryPath> <LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64)</LibraryPath>
<ExcludePath>$(CommonExcludePath);$(VC_ExecutablePath_x64);$(VC_LibraryPath_x64)</ExcludePath> <ExcludePath>$(CommonExcludePath);$(VC_ExecutablePath_x64);$(VC_LibraryPath_x64)</ExcludePath>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAVX2|Win32'">
<OutDir>$(SolutionDir)output\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)build\$(Platform)\$(Configuration)\</IntDir>
<TargetName>$(ProjectName)$(Platform)$(Configuration)</TargetName>
<IncludePath>$(ProjectDir)include\;$(IncludePath)</IncludePath>
<ExecutablePath>$(VC_ExecutablePath_x64);$(CommonExecutablePath)</ExecutablePath>
<ReferencePath>$(VC_ReferencesPath_x64);</ReferencePath>
<LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64)</LibraryPath>
<ExcludePath>$(CommonExcludePath);$(VC_ExecutablePath_x64);$(VC_LibraryPath_x64)</ExcludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(SolutionDir)output\$(Platform)\$(Configuration)\</OutDir> <OutDir>$(SolutionDir)output\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)build\$(Platform)\$(Configuration)\</IntDir> <IntDir>$(SolutionDir)build\$(Platform)\$(Configuration)\</IntDir>
@ -105,6 +183,17 @@
<ExcludePath>$(CommonExcludePath);$(VC_ExecutablePath_x64);$(VC_LibraryPath_x64)</ExcludePath> <ExcludePath>$(CommonExcludePath);$(VC_ExecutablePath_x64);$(VC_LibraryPath_x64)</ExcludePath>
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAVX2|Win32'">
<OutDir>$(SolutionDir)output\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)build\$(Platform)\$(Configuration)\</IntDir>
<TargetName>$(ProjectName)$(Platform)$(Configuration)</TargetName>
<IncludePath>$(ProjectDir)include\;$(IncludePath)</IncludePath>
<ExecutablePath>$(VC_ExecutablePath_x64);$(CommonExecutablePath)</ExecutablePath>
<ReferencePath>$(VC_ReferencesPath_x64);</ReferencePath>
<LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64)</LibraryPath>
<ExcludePath>$(CommonExcludePath);$(VC_ExecutablePath_x64);$(VC_LibraryPath_x64)</ExcludePath>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
@ -119,7 +208,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<FunctionLevelLinking>true</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
<OmitFramePointers /> <OmitFramePointers />
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
@ -131,6 +220,33 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugAVX2|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<Optimization>MaxSpeed</Optimization>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<IntrinsicFunctions>true</IntrinsicFunctions>
<StringPooling>true</StringPooling>
<FunctionLevelLinking>true</FunctionLevelLinking>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
<OmitFramePointers>
</OmitFramePointers>
<WholeProgramOptimization>true</WholeProgramOptimization>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<SupportJustMyCode>true</SupportJustMyCode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
@ -143,7 +259,7 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
<OmitFramePointers /> <OmitFramePointers />
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
@ -155,7 +271,59 @@
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAVX2|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<StringPooling>true</StringPooling>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
<OmitFramePointers>
</OmitFramePointers>
<BufferSecurityCheck>false</BufferSecurityCheck>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>
</OmitFramePointers>
<IntrinsicFunctions>true</IntrinsicFunctions>
<Optimization>MaxSpeed</Optimization>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<FunctionLevelLinking>true</FunctionLevelLinking>
<EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<SupportJustMyCode>true</SupportJustMyCode>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugAVX2|x64'">
<ClCompile> <ClCompile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<SDLCheck>false</SDLCheck> <SDLCheck>false</SDLCheck>
@ -183,6 +351,31 @@
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>
</OmitFramePointers>
<StringPooling>true</StringPooling>
<EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAVX2|x64'">
<ClCompile> <ClCompile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>

View File

@ -220,7 +220,7 @@ std::unordered_map<int, Vec3> CAimbotProjectile::GetDirectPoints(Target_t& targe
Vec3 vCenter, vBBoxMins, vBBoxMaxs; target.m_pEntity->As<CBaseAnimating>()->GetHitboxInfo(HITBOX_HEAD, &vCenter, &vBBoxMins, &vBBoxMaxs); Vec3 vCenter, vBBoxMins, vBBoxMaxs; target.m_pEntity->As<CBaseAnimating>()->GetHitboxInfo(HITBOX_HEAD, &vCenter, &vBBoxMins, &vBBoxMaxs);
Vec3 vOff = vCenter + (vBBoxMins + vBBoxMaxs) / 2 - target.m_pEntity->GetAbsOrigin(); Vec3 vOff = vCenter + (vBBoxMins + vBBoxMaxs) / 2 - target.m_pEntity->GetAbsOrigin();
const float flHeight = vOff.z + (vMaxs.z - vOff.z) * (Vars::Aimbot::Projectile::HuntermanLerp.Value / 100.f); const float flHeight = vOff.z + (vMaxs.z - vOff.z) * (Vars::Aimbot::Projectile::HuntsmanLerp.Value / 100.f);
const float flMax = vMaxs.z - Vars::Aimbot::Projectile::VerticalShift.Value; const float flMax = vMaxs.z - Vars::Aimbot::Projectile::VerticalShift.Value;
mPoints[iPriority] = Vec3(vOff.x, vOff.y, std::min(flHeight, flMax)); mPoints[iPriority] = Vec3(vOff.x, vOff.y, std::min(flHeight, flMax));
} }
@ -486,7 +486,7 @@ bool CAimbotProjectile::TestAngle(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, Tar
} }
if (Vars::Aimbot::General::AimType.Value != 2) if (Vars::Aimbot::General::AimType.Value != 2)
projInfo.m_vHull += Vec3(Vars::Aimbot::Projectile::HullInc.Value, Vars::Aimbot::Projectile::HullInc.Value, Vars::Aimbot::Projectile::HullInc.Value); projInfo.m_vHull += Vec3(Vars::Aimbot::Projectile::HullIncrease.Value, Vars::Aimbot::Projectile::HullIncrease.Value, Vars::Aimbot::Projectile::HullIncrease.Value);
const Vec3 vOriginal = target.m_pEntity->GetAbsOrigin(); const Vec3 vOriginal = target.m_pEntity->GetAbsOrigin();
target.m_pEntity->SetAbsOrigin(target.m_vPos); target.m_pEntity->SetAbsOrigin(target.m_vPos);
@ -644,7 +644,7 @@ int CAimbotProjectile::CanHit(Target_t& target, CTFPlayer* pLocal, CTFWeaponBase
tInfo.iPrimeTime = TIME_TO_TICKS(PrimeTime(pWeapon)); tInfo.iPrimeTime = TIME_TO_TICKS(PrimeTime(pWeapon));
} }
const float flLatency = F::Backtrack.GetReal() + TICKS_TO_TIME(G::AnticipatedChoke - 1 + Vars::Aimbot::Projectile::LatOff.Value); const float flLatency = F::Backtrack.GetReal() + TICKS_TO_TIME(G::AnticipatedChoke - 1 + Vars::Aimbot::Projectile::LatencyOffset.Value);
const bool bCanSplash = Vars::Aimbot::Projectile::SplashPrediction.Value && tInfo.flRadius; const bool bCanSplash = Vars::Aimbot::Projectile::SplashPrediction.Value && tInfo.flRadius;
const int iSplash = bCanSplash ? Vars::Aimbot::Projectile::SplashPrediction.Value : 0; const int iSplash = bCanSplash ? Vars::Aimbot::Projectile::SplashPrediction.Value : 0;

View File

@ -196,12 +196,12 @@ void CMenu::MenuAimbot()
{ {
if (Section("debug## projectile")) if (Section("debug## projectile"))
{ {
FSlider("ground samples", Vars::Aimbot::Projectile::iGroundSamples, 3, 66, 1, "%d", FSlider_Left); FSlider("ground samples", Vars::Aimbot::Projectile::GroundSamples, 3, 66, 1, "%d", FSlider_Left);
FSlider("air samples", Vars::Aimbot::Projectile::iAirSamples, 3, 66, 1, "%d", FSlider_Right); FSlider("air samples", Vars::Aimbot::Projectile::AirSamples, 3, 66, 1, "%d", FSlider_Right);
FSlider("vert shift", Vars::Aimbot::Projectile::VerticalShift, 0.f, 20.f, 0.5f, "%.1f", FSlider_Left); FSlider("vertical shift", Vars::Aimbot::Projectile::VerticalShift, 0.f, 20.f, 0.5f, "%.1f", FSlider_Left);
FSlider("hunterman lerp", Vars::Aimbot::Projectile::HuntermanLerp, 0.f, 100.f, 1.f, "%.0f%%", FSlider_Right); FSlider("huntsman lerp", Vars::Aimbot::Projectile::HuntsmanLerp, 0.f, 100.f, 1.f, "%.0f%%", FSlider_Right);
FSlider("latency offset", Vars::Aimbot::Projectile::LatOff, -1.f, 1.f, 0.1f, "%.1f", FSlider_Left); FSlider("latency offset", Vars::Aimbot::Projectile::LatencyOffset, -1.f, 1.f, 0.1f, "%.1f", FSlider_Left);
FSlider("hull inc", Vars::Aimbot::Projectile::HullInc, 0.f, 3.f, 0.5f, "%.1f", FSlider_Right); FSlider("hull increase", Vars::Aimbot::Projectile::HullIncrease, 0.f, 3.f, 0.5f, "%.1f", FSlider_Right);
FSlider("drag override", Vars::Aimbot::Projectile::DragOverride, 0.f, 1.f, 0.001f, "%.3f", FSlider_Left); FSlider("drag override", Vars::Aimbot::Projectile::DragOverride, 0.f, 1.f, 0.001f, "%.3f", FSlider_Left);
FSlider("time override", Vars::Aimbot::Projectile::TimeOverride, 0.f, 1.f, 0.001f, "%.3f", FSlider_Right); FSlider("time override", Vars::Aimbot::Projectile::TimeOverride, 0.f, 1.f, 0.001f, "%.3f", FSlider_Right);
FSlider("splash points", Vars::Aimbot::Projectile::SplashPoints, 0, 100, 1, "%d", FSlider_Left); FSlider("splash points", Vars::Aimbot::Projectile::SplashPoints, 0, 100, 1, "%d", FSlider_Left);
@ -330,7 +330,7 @@ void CMenu::MenuVisuals()
TableNextColumn(); TableNextColumn();
if (Section("ESP")) if (Section("ESP"))
{ {
FDropdown("Draw", Vars::ESP::Draw, { "Enemy", "Team", "Friends", "Local", "NPCs", "Health", "Ammo", "Money", "Bombs", "Spellbook", "Gargoyle" }, {}, FDropdown_Multi); FDropdown("Draw", Vars::ESP::Draw, { "Enemy", "Team", "Local", "Friends", "Priority", "NPCs", "Health", "Ammo", "Money", "Bombs", "Spellbook", "Gargoyle" }, {}, FDropdown_Multi);
FDropdown("Player", Vars::ESP::Player, { "Name", "Health bar", "Health text", "Uber bar", "Uber text", "Class icon", "Class text", "Weapon icon", "Weapon text", "Distance", "Box", "Bones", "Priority", "Labels", "Buffs", "Debuffs", "Misc", "Lag compensation", "Ping", "KDR" }, {}, FDropdown_Multi); FDropdown("Player", Vars::ESP::Player, { "Name", "Health bar", "Health text", "Uber bar", "Uber text", "Class icon", "Class text", "Weapon icon", "Weapon text", "Distance", "Box", "Bones", "Priority", "Labels", "Buffs", "Debuffs", "Misc", "Lag compensation", "Ping", "KDR" }, {}, FDropdown_Multi);
FDropdown("Building", Vars::ESP::Building, { "Name", "Health bar", "Health text", "Distance", "Box", "Owner", "Level", "Conditions" }, {}, FDropdown_Multi); FDropdown("Building", Vars::ESP::Building, { "Name", "Health bar", "Health text", "Distance", "Box", "Owner", "Level", "Conditions" }, {}, FDropdown_Multi);
} EndSection(); } EndSection();
@ -425,6 +425,7 @@ void CMenu::MenuVisuals()
{ {
FToggle("Local", Vars::Chams::Player::Local); FToggle("Local", Vars::Chams::Player::Local);
FToggle("Friend", Vars::Chams::Player::Friend, FToggle_Middle); FToggle("Friend", Vars::Chams::Player::Friend, FToggle_Middle);
FToggle("Priority", Vars::Chams::Player::Priority);
FMDropdown("Visible material", Vars::Chams::Player::VisibleMaterial, FDropdown_Left, 1); FMDropdown("Visible material", Vars::Chams::Player::VisibleMaterial, FDropdown_Left, 1);
FColorPicker("Visible color", Vars::Chams::Player::VisibleColor, 0, FColorPicker_Dropdown); FColorPicker("Visible color", Vars::Chams::Player::VisibleColor, 0, FColorPicker_Dropdown);
@ -520,6 +521,7 @@ void CMenu::MenuVisuals()
{ {
FToggle("Local", Vars::Glow::Player::Local); FToggle("Local", Vars::Glow::Player::Local);
FToggle("Friend", Vars::Glow::Player::Friend, FToggle_Middle); FToggle("Friend", Vars::Glow::Player::Friend, FToggle_Middle);
FToggle("Priority", Vars::Glow::Player::Priority);
Dummy({ 0, 8 }); Dummy({ 0, 8 });
FToggle("Stencil", Vars::Glow::Player::Stencil); FToggle("Stencil", Vars::Glow::Player::Stencil);
@ -760,7 +762,7 @@ void CMenu::MenuVisuals()
{ {
FToggle("Enabled", Vars::Radar::Players::Enabled); FToggle("Enabled", Vars::Radar::Players::Enabled);
FToggle("Background", Vars::Radar::Players::Background, FToggle_Middle); FToggle("Background", Vars::Radar::Players::Background, FToggle_Middle);
FDropdown("Draw", Vars::Radar::Players::Draw, { "Local", "Enemy", "Team", "Friends", "Cloaked" }, {}, FDropdown_Multi | FDropdown_Left); FDropdown("Draw", Vars::Radar::Players::Draw, { "Local", "Enemy", "Team", "Friends", "Priority", "Cloaked" }, {}, FDropdown_Multi | FDropdown_Left);
FDropdown("Icon", Vars::Radar::Players::IconType, { "Icons", "Portraits", "Avatar" }, {}, FDropdown_Right); FDropdown("Icon", Vars::Radar::Players::IconType, { "Icons", "Portraits", "Avatar" }, {}, FDropdown_Right);
FSlider("Icon size## Player", Vars::Radar::Players::IconSize, 12, 30, 2); FSlider("Icon size## Player", Vars::Radar::Players::IconSize, 12, 30, 2);
FToggle("Health bar", Vars::Radar::Players::Health); FToggle("Health bar", Vars::Radar::Players::Health);
@ -773,7 +775,7 @@ void CMenu::MenuVisuals()
{ {
FToggle("Enabled", Vars::Radar::Buildings::Enabled); FToggle("Enabled", Vars::Radar::Buildings::Enabled);
FToggle("Background", Vars::Radar::Buildings::Background, FToggle_Middle); FToggle("Background", Vars::Radar::Buildings::Background, FToggle_Middle);
FDropdown("Draw", Vars::Radar::Buildings::Draw, { "Local", "Enemy", "Team", "Friends" }, {}, FDropdown_Multi); FDropdown("Draw", Vars::Radar::Buildings::Draw, { "Local", "Enemy", "Team", "Friends", "Priority" }, {}, FDropdown_Multi);
FSlider("Icon size## Building", Vars::Radar::Buildings::IconSize, 12, 30, 2); FSlider("Icon size## Building", Vars::Radar::Buildings::IconSize, 12, 30, 2);
FToggle("Health bar", Vars::Radar::Buildings::Health); FToggle("Health bar", Vars::Radar::Buildings::Health);
} EndSection(); } EndSection();

View File

@ -111,8 +111,11 @@ bool CPlayerlistUtils::HasTag(int iIndex, std::string sTag)
int CPlayerlistUtils::GetPriority(uint32_t friendsID) int CPlayerlistUtils::GetPriority(uint32_t friendsID, bool bCache)
{ {
if (bCache)
return H::Entities.GetPriority(friendsID);
const int iDefault = mTags["Default"].Priority; const int iDefault = mTags["Default"].Priority;
if (!friendsID) if (!friendsID)
return iDefault; return iDefault;
@ -141,8 +144,11 @@ int CPlayerlistUtils::GetPriority(uint32_t friendsID)
} }
return iDefault; return iDefault;
} }
int CPlayerlistUtils::GetPriority(int iIndex) int CPlayerlistUtils::GetPriority(int iIndex, bool bCache)
{ {
if (bCache)
return H::Entities.GetPriority(iIndex);
if (const uint32_t friendsID = GetFriendsID(iIndex)) if (const uint32_t friendsID = GetFriendsID(iIndex))
return GetPriority(friendsID); return GetPriority(friendsID);
return mTags["Default"].Priority; return mTags["Default"].Priority;

View File

@ -39,8 +39,8 @@ public:
bool HasTag(uint32_t friendsID, std::string sTag); bool HasTag(uint32_t friendsID, std::string sTag);
bool HasTag(int iIndex, std::string sTag); bool HasTag(int iIndex, std::string sTag);
int GetPriority(uint32_t friendsID); int GetPriority(uint32_t friendsID, bool bCache = true);
int GetPriority(int iIndex); int GetPriority(int iIndex, bool bCache = true);
bool GetSignificantTag(uint32_t friendsID, std::string* sTag, PriorityLabel_t* plTag, int iMode = 1); // iMode: 0 - Priorities & Labels, 1 - Priorities, 2 - Labels bool GetSignificantTag(uint32_t friendsID, std::string* sTag, PriorityLabel_t* plTag, int iMode = 1); // iMode: 0 - Priorities & Labels, 1 - Priorities, 2 - Labels
bool GetSignificantTag(int iIndex, std::string* sTag, PriorityLabel_t* plTag, int iMode = 1); // iMode: 0 - Priorities & Labels, 1 - Priorities, 2 - Labels bool GetSignificantTag(int iIndex, std::string* sTag, PriorityLabel_t* plTag, int iMode = 1); // iMode: 0 - Priorities & Labels, 1 - Priorities, 2 - Labels
bool IsIgnored(uint32_t friendsID); bool IsIgnored(uint32_t friendsID);

View File

@ -199,7 +199,7 @@ bool CMovementSimulation::Initialize(CBaseEntity* pEntity, PlayerStorage& player
return false; return false;
} }
const int iStrafeSamples = pPlayer->OnSolid() ? Vars::Aimbot::Projectile::iGroundSamples.Value : Vars::Aimbot::Projectile::iAirSamples.Value; const int iStrafeSamples = pPlayer->OnSolid() ? Vars::Aimbot::Projectile::GroundSamples.Value : Vars::Aimbot::Projectile::AirSamples.Value;
// calculate strafe if desired // calculate strafe if desired
bool bCalculated = cancelStrafe ? false : StrafePrediction(playerStorageOut, iStrafeSamples); bool bCalculated = cancelStrafe ? false : StrafePrediction(playerStorageOut, iStrafeSamples);

View File

@ -68,7 +68,7 @@ int CTickshiftHandler::GetTicks(CTFPlayer* pLocal)
if (G::DoubleTap && G::ShiftedGoal < G::ShiftedTicks) if (G::DoubleTap && G::ShiftedGoal < G::ShiftedTicks)
return G::ShiftedTicks - G::ShiftedGoal; return G::ShiftedTicks - G::ShiftedGoal;
if (!!Vars::CL_Move::Doubletap::Doubletap.Value if (!Vars::CL_Move::Doubletap::Doubletap.Value
|| G::ShiftedTicks < std::min(Vars::CL_Move::Doubletap::TickLimit.Value - 1, G::MaxShift) || G::ShiftedTicks < std::min(Vars::CL_Move::Doubletap::TickLimit.Value - 1, G::MaxShift)
|| G::WaitForShift || G::Warp || G::Recharge || bSpeedhack || F::AutoRocketJump.iFrame != -1) || G::WaitForShift || G::Warp || G::Recharge || bSpeedhack || F::AutoRocketJump.iFrame != -1)
return 0; return 0;

View File

@ -3,6 +3,7 @@
#include "../Materials/Materials.h" #include "../Materials/Materials.h"
#include "../FakeAngle/FakeAngle.h" #include "../FakeAngle/FakeAngle.h"
#include "../../Backtrack/Backtrack.h" #include "../../Backtrack/Backtrack.h"
#include "../../Players/PlayerUtils.h"
Chams_t CChams::GetStruct(std::vector<std::string> VisibleMaterial, std::vector<std::string> OccludedMaterial, Color_t VisibleColor, Color_t OccludedColor) Chams_t CChams::GetStruct(std::vector<std::string> VisibleMaterial, std::vector<std::string> OccludedMaterial, Color_t VisibleColor, Color_t OccludedColor)
{ {
@ -16,12 +17,9 @@ Chams_t CChams::GetStruct(std::vector<std::string> VisibleMaterial, std::vector<
bool CChams::GetPlayerChams(CTFPlayer* pEntity, CTFPlayer* pLocal, Chams_t* pChams, bool bFriendly, bool bEnemy) bool CChams::GetPlayerChams(CTFPlayer* pEntity, CTFPlayer* pLocal, Chams_t* pChams, bool bFriendly, bool bEnemy)
{ {
if (Vars::Chams::Player::Local.Value && pEntity == pLocal) if (Vars::Chams::Player::Local.Value && pEntity == pLocal
{ || Vars::Chams::Player::Friend.Value && H::Entities.IsFriend(pEntity->entindex())
*pChams = GetStruct(Vars::Chams::Player::VisibleMaterial.Value, Vars::Chams::Player::OccludedMaterial.Value, Vars::Chams::Player::VisibleColor.Value, Vars::Chams::Player::OccludedColor.Value); || Vars::Chams::Player::Priority.Value && F::PlayerUtils.GetPriority(pEntity->entindex()) > F::PlayerUtils.mTags["Default"].Priority)
return true;
}
else if (Vars::Chams::Player::Friend.Value && H::Entities.IsFriend(pEntity->entindex()))
{ {
*pChams = GetStruct(Vars::Chams::Player::VisibleMaterial.Value, Vars::Chams::Player::OccludedMaterial.Value, Vars::Chams::Player::VisibleColor.Value, Vars::Chams::Player::OccludedColor.Value); *pChams = GetStruct(Vars::Chams::Player::VisibleMaterial.Value, Vars::Chams::Player::OccludedMaterial.Value, Vars::Chams::Player::VisibleColor.Value, Vars::Chams::Player::OccludedColor.Value);
return true; return true;

View File

@ -60,19 +60,14 @@ void CESP::DrawPlayers(CTFPlayer* pLocal)
if (pPlayer->IsDormant()) if (pPlayer->IsDormant())
{ {
if (!Vars::ESP::DormantAlpha.Value) if (!Vars::ESP::DormantAlpha.Value || Vars::ESP::DormantPriority.Value && F::PlayerUtils.GetPriority(nIndex) <= F::PlayerUtils.mTags["Default"].Priority)
continue; continue;
if (Vars::ESP::DormantPriority.Value)
{
PlayerInfo_t pi{};
if (I::EngineClient->GetPlayerInfo(nIndex, &pi) && F::PlayerUtils.GetPriority(pi.friendsID) <= F::PlayerUtils.mTags["Default"].Priority)
continue;
}
} }
if (nIndex != I::EngineClient->GetLocalPlayer()) if (nIndex != I::EngineClient->GetLocalPlayer())
{ {
if (!(Vars::ESP::Draw.Value & 1 << 2 && H::Entities.IsFriend(nIndex))) if (!(Vars::ESP::Draw.Value & 1 << 3 && H::Entities.IsFriend(nIndex))
&& !(Vars::ESP::Draw.Value & 1 << 4 && F::PlayerUtils.GetPriority(nIndex) > F::PlayerUtils.mTags["Default"].Priority))
{ {
if (!(Vars::ESP::Draw.Value & 1 << 0) && pPlayer->m_iTeamNum() != pLocal->m_iTeamNum()) if (!(Vars::ESP::Draw.Value & 1 << 0) && pPlayer->m_iTeamNum() != pLocal->m_iTeamNum())
continue; continue;
@ -80,7 +75,7 @@ void CESP::DrawPlayers(CTFPlayer* pLocal)
continue; continue;
} }
} }
else if (!(Vars::ESP::Draw.Value & 1 << 3) || !I::Input->CAM_IsThirdPerson()) else if (!(Vars::ESP::Draw.Value & 1 << 2) || !I::Input->CAM_IsThirdPerson())
continue; continue;
I::MatSystemSurface->DrawSetAlphaMultiplier((pPlayer->IsDormant() ? Vars::ESP::DormantAlpha.Value : Vars::ESP::ActiveAlpha.Value) / 255.f); I::MatSystemSurface->DrawSetAlphaMultiplier((pPlayer->IsDormant() ? Vars::ESP::DormantAlpha.Value : Vars::ESP::ActiveAlpha.Value) / 255.f);
@ -476,7 +471,8 @@ void CESP::DrawBuildings(CTFPlayer* pLocal)
int nIndex = pOwner->entindex(); int nIndex = pOwner->entindex();
if (nIndex != I::EngineClient->GetLocalPlayer()) if (nIndex != I::EngineClient->GetLocalPlayer())
{ {
if (!(Vars::ESP::Draw.Value & 1 << 2 && H::Entities.IsFriend(nIndex))) if (!(Vars::ESP::Draw.Value & 1 << 3 && H::Entities.IsFriend(nIndex))
&& !(Vars::ESP::Draw.Value & 1 << 4 && F::PlayerUtils.GetPriority(nIndex) > F::PlayerUtils.mTags["Default"].Priority))
{ {
if (!(Vars::ESP::Draw.Value & 1 << 0) && pOwner->m_iTeamNum() != pLocal->m_iTeamNum()) if (!(Vars::ESP::Draw.Value & 1 << 0) && pOwner->m_iTeamNum() != pLocal->m_iTeamNum())
continue; continue;
@ -484,7 +480,7 @@ void CESP::DrawBuildings(CTFPlayer* pLocal)
continue; continue;
} }
} }
else if (!(Vars::ESP::Draw.Value & 1 << 3)) else if (!(Vars::ESP::Draw.Value & 1 << 2))
continue; continue;
} }
else else
@ -632,7 +628,7 @@ void CESP::DrawWorld()
I::MatSystemSurface->DrawSetAlphaMultiplier(Vars::ESP::ActiveAlpha.Value); I::MatSystemSurface->DrawSetAlphaMultiplier(Vars::ESP::ActiveAlpha.Value);
if (Vars::ESP::Draw.Value & 1 << 4) if (Vars::ESP::Draw.Value & 1 << 5)
{ {
for (auto NPC : H::Entities.GetGroup(EGroupType::WORLD_NPC)) for (auto NPC : H::Entities.GetGroup(EGroupType::WORLD_NPC))
{ {
@ -661,7 +657,7 @@ void CESP::DrawWorld()
} }
} }
if (Vars::ESP::Draw.Value & 1 << 5) if (Vars::ESP::Draw.Value & 1 << 6)
{ {
for (auto pHealth : H::Entities.GetGroup(EGroupType::WORLD_HEALTH)) for (auto pHealth : H::Entities.GetGroup(EGroupType::WORLD_HEALTH))
{ {
@ -671,7 +667,7 @@ void CESP::DrawWorld()
} }
} }
if (Vars::ESP::Draw.Value & 1 << 6) if (Vars::ESP::Draw.Value & 1 << 7)
{ {
for (auto pAmmo : H::Entities.GetGroup(EGroupType::WORLD_AMMO)) for (auto pAmmo : H::Entities.GetGroup(EGroupType::WORLD_AMMO))
{ {
@ -681,7 +677,7 @@ void CESP::DrawWorld()
} }
} }
if (Vars::ESP::Draw.Value & 1 << 7) if (Vars::ESP::Draw.Value & 1 << 8)
{ {
for (auto pCash : H::Entities.GetGroup(EGroupType::WORLD_MONEY)) for (auto pCash : H::Entities.GetGroup(EGroupType::WORLD_MONEY))
{ {
@ -693,7 +689,7 @@ void CESP::DrawWorld()
} }
} }
if (Vars::ESP::Draw.Value & 1 << 8) if (Vars::ESP::Draw.Value & 1 << 9)
{ {
for (auto pBomb : H::Entities.GetGroup(EGroupType::WORLD_BOMBS)) for (auto pBomb : H::Entities.GetGroup(EGroupType::WORLD_BOMBS))
{ {
@ -716,7 +712,7 @@ void CESP::DrawWorld()
} }
} }
if (Vars::ESP::Draw.Value & 1 << 9) if (Vars::ESP::Draw.Value & 1 << 10)
{ {
for (auto pBook : H::Entities.GetGroup(EGroupType::WORLD_SPELLBOOK)) for (auto pBook : H::Entities.GetGroup(EGroupType::WORLD_SPELLBOOK))
{ {
@ -728,7 +724,7 @@ void CESP::DrawWorld()
} }
} }
if (Vars::ESP::Draw.Value & 1 << 10) if (Vars::ESP::Draw.Value & 1 << 11)
{ {
for (auto pGargy : H::Entities.GetGroup(EGroupType::WORLD_GARGOYLE)) for (auto pGargy : H::Entities.GetGroup(EGroupType::WORLD_GARGOYLE))
{ {

View File

@ -3,6 +3,7 @@
#include "../Materials/Materials.h" #include "../Materials/Materials.h"
#include "../FakeAngle/FakeAngle.h" #include "../FakeAngle/FakeAngle.h"
#include "../../Backtrack/Backtrack.h" #include "../../Backtrack/Backtrack.h"
#include "../../Players/PlayerUtils.h"
Glow_t CGlow::GetStruct(bool Stencil, bool Blur, int StencilScale, int BlurScale) Glow_t CGlow::GetStruct(bool Stencil, bool Blur, int StencilScale, int BlurScale)
{ {
@ -16,13 +17,9 @@ Glow_t CGlow::GetStruct(bool Stencil, bool Blur, int StencilScale, int BlurScale
bool CGlow::GetPlayerGlow(CTFPlayer* pEntity, CTFPlayer* pLocal, Glow_t* pGlow, Color_t* pColor, bool bFriendly, bool bEnemy) bool CGlow::GetPlayerGlow(CTFPlayer* pEntity, CTFPlayer* pLocal, Glow_t* pGlow, Color_t* pColor, bool bFriendly, bool bEnemy)
{ {
if (Vars::Glow::Player::Local.Value && pEntity == pLocal) if (Vars::Glow::Player::Local.Value && pEntity == pLocal
{ || Vars::Glow::Player::Friend.Value && H::Entities.IsFriend(pEntity->entindex())
*pGlow = GetStruct(Vars::Glow::Player::Stencil.Value, Vars::Glow::Player::Blur.Value, Vars::Glow::Player::StencilScale.Value, Vars::Glow::Player::BlurScale.Value); || Vars::Glow::Player::Priority.Value && F::PlayerUtils.GetPriority(pEntity->entindex()) > F::PlayerUtils.mTags["Default"].Priority)
*pColor = H::Color.GetEntityDrawColor(pLocal, pEntity, Vars::Colors::Relative.Value);
return true;
}
else if (Vars::Glow::Player::Friend.Value && H::Entities.IsFriend(pEntity->entindex()))
{ {
*pGlow = GetStruct(Vars::Glow::Player::Stencil.Value, Vars::Glow::Player::Blur.Value, Vars::Glow::Player::StencilScale.Value, Vars::Glow::Player::BlurScale.Value); *pGlow = GetStruct(Vars::Glow::Player::Stencil.Value, Vars::Glow::Player::Blur.Value, Vars::Glow::Player::StencilScale.Value, Vars::Glow::Player::BlurScale.Value);
*pColor = H::Color.GetEntityDrawColor(pLocal, pEntity, Vars::Colors::Relative.Value); *pColor = H::Color.GetEntityDrawColor(pLocal, pEntity, Vars::Colors::Relative.Value);

View File

@ -1,5 +1,7 @@
#include "Radar.h" #include "Radar.h"
#include "../../Players/PlayerUtils.h"
bool CRadar::GetDrawPosition(CTFPlayer* pLocal, CBaseEntity* pEntity, int& x, int& y, int& z) bool CRadar::GetDrawPosition(CTFPlayer* pLocal, CBaseEntity* pEntity, int& x, int& y, int& z)
{ {
const float flRange = Vars::Radar::Main::Range.Value; const float flRange = Vars::Radar::Main::Range.Value;
@ -209,7 +211,8 @@ void CRadar::DrawPoints(CTFPlayer* pLocal)
const int nIndex = pOwner->entindex(); const int nIndex = pOwner->entindex();
if (nIndex != I::EngineClient->GetLocalPlayer() && pOwner != H::Entities.GetObservedTarget()) if (nIndex != I::EngineClient->GetLocalPlayer() && pOwner != H::Entities.GetObservedTarget())
{ {
if (!(Vars::Radar::Buildings::Draw.Value & 1 << 3 && H::Entities.IsFriend(nIndex))) if (!(Vars::Radar::Buildings::Draw.Value & 1 << 3 && H::Entities.IsFriend(nIndex))
&& !(Vars::Radar::Buildings::Draw.Value & 1 << 4 && F::PlayerUtils.GetPriority(nIndex) > F::PlayerUtils.mTags["Default"].Priority))
{ {
if (!(Vars::Radar::Buildings::Draw.Value & 1 << 1) && pOwner->As<CTFPlayer>()->m_iTeamNum() != pLocal->m_iTeamNum()) if (!(Vars::Radar::Buildings::Draw.Value & 1 << 1) && pOwner->As<CTFPlayer>()->m_iTeamNum() != pLocal->m_iTeamNum())
continue; continue;
@ -282,7 +285,8 @@ void CRadar::DrawPoints(CTFPlayer* pLocal)
const int nIndex = pPlayer->entindex(); const int nIndex = pPlayer->entindex();
if (nIndex != I::EngineClient->GetLocalPlayer() && pPlayer != H::Entities.GetObservedTarget()) if (nIndex != I::EngineClient->GetLocalPlayer() && pPlayer != H::Entities.GetObservedTarget())
{ {
if (!(Vars::Radar::Players::Draw.Value & 1 << 3 && H::Entities.IsFriend(nIndex))) if (!(Vars::Radar::Players::Draw.Value & 1 << 3 && H::Entities.IsFriend(nIndex))
&& !(Vars::Radar::Players::Draw.Value & 1 << 4 && F::PlayerUtils.GetPriority(nIndex) > F::PlayerUtils.mTags["Default"].Priority))
{ {
if (!(Vars::Radar::Players::Draw.Value & 1 << 1) && pPlayer->m_iTeamNum() != pLocal->m_iTeamNum()) if (!(Vars::Radar::Players::Draw.Value & 1 << 1) && pPlayer->m_iTeamNum() != pLocal->m_iTeamNum())
continue; continue;
@ -292,7 +296,7 @@ void CRadar::DrawPoints(CTFPlayer* pLocal)
} }
else if (!(Vars::Radar::Players::Draw.Value & 1 << 0)) else if (!(Vars::Radar::Players::Draw.Value & 1 << 0))
continue; continue;
if (!(Vars::Radar::Players::Draw.Value & 1 << 4) && pPlayer->m_flInvisibility() >= 1.f) if (!(Vars::Radar::Players::Draw.Value & 1 << 5) && pPlayer->m_flInvisibility() >= 1.f)
continue; continue;
int x, y, z; int x, y, z;

View File

@ -2,6 +2,7 @@
#include "../../SDK.h" #include "../../SDK.h"
#include "../../../Utils/Hash/FNV1A.h" #include "../../../Utils/Hash/FNV1A.h"
#include "../../../Features/Players/PlayerUtils.h"
void CEntities::Fill() void CEntities::Fill()
{ {
@ -158,6 +159,18 @@ void CEntities::Fill()
break; break;
} }
} }
m_mUPriorities.clear(); m_mIPriorities.clear();
for (auto& pPlayer : m_mGroups[EGroupType::PLAYERS_ALL])
{
PlayerInfo_t pi{};
if (I::EngineClient->GetPlayerInfo(pPlayer->entindex(), &pi))
{
int iPriority = F::PlayerUtils.GetPriority(pi.friendsID, false);
m_mUPriorities[pi.friendsID] = iPriority;
m_mIPriorities[pPlayer->entindex()] = iPriority;
}
}
} }
void CEntities::Clear() void CEntities::Clear()

View File

@ -21,6 +21,8 @@ class CEntities
std::unordered_map<EGroupType, std::vector<CBaseEntity*>> m_mGroups = {}; std::unordered_map<EGroupType, std::vector<CBaseEntity*>> m_mGroups = {};
std::unordered_map<uint32_t, int> m_mIDIndex = {}; std::unordered_map<uint32_t, int> m_mIDIndex = {};
std::unordered_map<int, bool> m_mFriends; std::unordered_map<int, bool> m_mFriends;
std::unordered_map<uint32_t, int> m_mUPriorities;
std::unordered_map<int, int> m_mIPriorities;
public: public:
void Fill(); void Fill();
@ -36,8 +38,10 @@ public:
CTFPlayer* GetObservedTarget() { return m_pObservedTarget; } CTFPlayer* GetObservedTarget() { return m_pObservedTarget; }
const std::vector<CBaseEntity*>& GetGroup(const EGroupType& Group) { return m_mGroups[Group]; } const std::vector<CBaseEntity*>& GetGroup(const EGroupType& Group) { return m_mGroups[Group]; }
bool IsFriend(int entIdx) { return m_mFriends[entIdx]; } bool IsFriend(int iIndex) { return m_mFriends[iIndex]; }
bool IsFriend(uint32_t friendsID) { return m_mFriends[m_mIDIndex[friendsID]]; } bool IsFriend(uint32_t friendsID) { return m_mFriends[m_mIDIndex[friendsID]]; }
int GetPriority(uint32_t friendsID) { return m_mUPriorities[friendsID]; }
int GetPriority(int iIndex) { return m_mIPriorities[iIndex]; }
}; };
ADD_FEATURE_CUSTOM(CEntities, Entities, H); ADD_FEATURE_CUSTOM(CEntities, Entities, H);

View File

@ -139,14 +139,14 @@ namespace Vars
CVar(SplashRadius, 90.f) CVar(SplashRadius, 90.f)
CVar(AutoRelease, 0.f) CVar(AutoRelease, 0.f)
CVar(iGroundSamples, 5, NOSAVE) // debug CVar(GroundSamples, 5, NOSAVE) // debug
CVar(iAirSamples, 5, NOSAVE) // debug CVar(AirSamples, 5, NOSAVE) // debug
CVar(VerticalShift, 5.f, NOSAVE) // debug CVar(VerticalShift, 5.f, NOSAVE) // debug
CVar(LatOff, 0.f, NOSAVE) // debug CVar(LatencyOffset, 0.f, NOSAVE) // debug
CVar(HullInc, 0.f, NOSAVE) // debug CVar(HullIncrease, 0.f, NOSAVE) // debug
CVar(DragOverride, 0.f, NOSAVE) // debug CVar(DragOverride, 0.f, NOSAVE) // debug
CVar(TimeOverride, 0.f, NOSAVE) // debug CVar(TimeOverride, 0.f, NOSAVE) // debug
CVar(HuntermanLerp, 50.f, NOSAVE) // debug CVar(HuntsmanLerp, 50.f, NOSAVE) // debug
CVar(SplashPoints, 80, NOSAVE) // debug CVar(SplashPoints, 80, NOSAVE) // debug
CVar(SplashCount, 5, NOSAVE) // debug CVar(SplashCount, 5, NOSAVE) // debug
SUBNAMESPACE_END(Projectile) SUBNAMESPACE_END(Projectile)
@ -274,6 +274,7 @@ namespace Vars
SUBNAMESPACE_BEGIN(Player) SUBNAMESPACE_BEGIN(Player)
CVar(Local, false, VISUAL) CVar(Local, false, VISUAL)
CVar(Friend, false, VISUAL) CVar(Friend, false, VISUAL)
CVar(Priority, false, VISUAL)
CVar(VisibleMaterial, std::vector<std::string> { "Original" }, VISUAL) CVar(VisibleMaterial, std::vector<std::string> { "Original" }, VISUAL)
CVar(OccludedMaterial, std::vector<std::string> {}, VISUAL) CVar(OccludedMaterial, std::vector<std::string> {}, VISUAL)
@ -351,6 +352,7 @@ namespace Vars
SUBNAMESPACE_BEGIN(Player) SUBNAMESPACE_BEGIN(Player)
CVar(Local, false, VISUAL) CVar(Local, false, VISUAL)
CVar(Friend, false, VISUAL) CVar(Friend, false, VISUAL)
CVar(Priority, false, VISUAL)
CVar(Stencil, false, VISUAL) CVar(Stencil, false, VISUAL)
CVar(Blur, false, VISUAL) CVar(Blur, false, VISUAL)
@ -556,7 +558,7 @@ namespace Vars
CVar(Enabled, false, VISUAL) CVar(Enabled, false, VISUAL)
CVar(Background, true, VISUAL) CVar(Background, true, VISUAL)
CVar(IconType, 1, VISUAL) // 0 - Icons, 1 - Portraits, 2 - Avatars CVar(IconType, 1, VISUAL) // 0 - Icons, 1 - Portraits, 2 - Avatars
CVar(Draw, 0b11010, VISUAL) // { Cloaked, Friends, Team, Enemy, Local } CVar(Draw, 0b101010, VISUAL) // { Cloaked, Priority, Friends, Team, Enemy, Local }
CVar(IconSize, 24, VISUAL) CVar(IconSize, 24, VISUAL)
CVar(Health, false, VISUAL) CVar(Health, false, VISUAL)
CVar(Height, false, VISUAL) CVar(Height, false, VISUAL)
@ -565,7 +567,7 @@ namespace Vars
SUBNAMESPACE_BEGIN(Buildings) SUBNAMESPACE_BEGIN(Buildings)
CVar(Enabled, false, VISUAL) CVar(Enabled, false, VISUAL)
CVar(Background, true, VISUAL) CVar(Background, true, VISUAL)
CVar(Draw, 0b1011, VISUAL) // { Friends, Team, Enemy, Local } CVar(Draw, 0b01011, VISUAL) // { Priority, Friends, Team, Enemy, Local }
CVar(Health, false, VISUAL) CVar(Health, false, VISUAL)
CVar(IconSize, 18, VISUAL) CVar(IconSize, 18, VISUAL)
SUBNAMESPACE_END(Buildings) SUBNAMESPACE_END(Buildings)
@ -721,27 +723,4 @@ namespace Vars
CVar(ServerHitbox, false, NOSAVE) CVar(ServerHitbox, false, NOSAVE)
CVar(AntiAimLines, false, NOSAVE) CVar(AntiAimLines, false, NOSAVE)
NAMESPACE_END(Debug) NAMESPACE_END(Debug)
NAMESPACE_BEGIN(Fonts)
SUBNAMESPACE_BEGIN(FONT_ESP)
CVar(szName, std::string("Tahoma"), VISUAL | NOCOND)
CVar(nTall, 12, VISUAL | NOCOND)
CVar(nWeight, 0, VISUAL | NOCOND)
CVar(nFlags, 512, VISUAL | NOCOND)
SUBNAMESPACE_END(FONT_ESP)
SUBNAMESPACE_BEGIN(FONT_NAME)
CVar(szName, std::string("Tahoma"), VISUAL | NOCOND)
CVar(nTall, 12, VISUAL | NOCOND)
CVar(nWeight, 0, VISUAL | NOCOND)
CVar(nFlags, 512, VISUAL | NOCOND)
SUBNAMESPACE_END(FONT_NAME)
SUBNAMESPACE_BEGIN(FONT_INDICATORS)
CVar(szName, std::string("Tahoma"), VISUAL | NOCOND)
CVar(nTall, 13, VISUAL | NOCOND)
CVar(nWeight, -1, VISUAL | NOCOND)
CVar(nFlags, 512, VISUAL | NOCOND)
SUBNAMESPACE_END(FONT_INDICATORS)
NAMESPACE_END(Fonts)
} }