diff --git a/projects/openttd_vs140.vcxproj b/projects/openttd_vs140.vcxproj
new file mode 100644
index 0000000000..8c33eb464b
--- /dev/null
+++ b/projects/openttd_vs140.vcxproj
@@ -0,0 +1,1428 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ openttd
+ {668328A0-B40E-4CDB-BD72-D0064424414A}
+ openttd
+ x86-windows-static
+ x64-windows-static
+
+
+
+ Application
+ false
+ Unicode
+ v140
+
+
+ Application
+ false
+ Unicode
+ true
+ v140
+
+
+ Application
+ false
+ Unicode
+ v140
+
+
+ Application
+ false
+ Unicode
+ true
+ v140
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ false
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ false
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+
+ AllRules.ruleset
+
+
+ AllRules.ruleset
+
+
+ AllRules.ruleset
+
+
+ AllRules.ruleset
+
+
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(ProjectDir)..\bin
+
+
+
+ .\Release/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew %(AdditionalOptions)
+ Full
+ AnySuitable
+ true
+ Size
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LIBLZMA;WITH_PNG;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)
+ true
+ Sync
+ MultiThreaded
+ 4Bytes
+ false
+ true
+
+
+
+
+
+
+ All
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ FastCall
+ Default
+ true
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;%(AdditionalDependencies)
+ true
+ %(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ true
+ false
+
+
+ MachineX86
+ true
+ 5.01
+
+
+ os_versions.manifest
+ PerMonitorHighDPIAware
+
+
+ copy "$(OutDir)$(TargetName)$(TargetExt)" "$(SolutionDir)..\bin\$(TargetName)$(TargetExt)"
+
+
+
+
+ .\Debug/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew %(AdditionalOptions)
+ Disabled
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ _DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LIBLZMA;WITH_PNG;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebug
+
+
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ FastCall
+ Default
+ true
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;%(AdditionalDependencies)
+ true
+ LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ false
+
+
+ MachineX86
+ 5.01
+
+
+ os_versions.manifest
+ PerMonitorHighDPIAware
+
+
+ copy "$(OutDir)$(TargetName)$(TargetExt)" "$(SolutionDir)..\bin\$(TargetName)$(TargetExt)"
+
+
+
+
+ X64
+ .\Release/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew %(AdditionalOptions)
+ Full
+ AnySuitable
+ true
+ Size
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LIBLZMA;WITH_PNG;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)
+ true
+ Sync
+ MultiThreaded
+ Default
+ false
+ true
+
+
+
+
+
+
+ All
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ FastCall
+ Default
+ true
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;%(AdditionalDependencies)
+ true
+ %(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ true
+ MachineX64
+ true
+ 5.02
+
+
+ os_versions.manifest
+ PerMonitorHighDPIAware
+
+
+ copy "$(OutDir)$(TargetName)$(TargetExt)" "$(SolutionDir)..\bin\$(TargetName)$(TargetExt)"
+
+
+
+
+ X64
+ .\Debug/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew %(AdditionalOptions)
+ Disabled
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ _DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LIBLZMA;WITH_PNG;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebug
+
+
+
+
+
+
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ Cdecl
+ Default
+ true
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;%(AdditionalDependencies)
+ true
+ LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ MachineX64
+ 5.02
+
+
+ os_versions.manifest
+ PerMonitorHighDPIAware
+
+
+ copy "$(OutDir)$(TargetName)$(TargetExt)" "$(SolutionDir)..\bin\$(TargetName)$(TargetExt)"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {0f066b23-18df-4284-8265-f4a5e7e3b966}
+ false
+
+
+ {e9548de9-f089-49b7-93a6-30be2cc311c7}
+ false
+
+
+ {0817f629-589e-4a3b-b81a-8647bc571e35}
+ false
+
+
+ {a133a442-bd0a-4ade-b117-ad7545e4bdd1}
+ false
+
+
+ {1a2b3c5e-1c23-41a5-9c9b-acba2aa75fec}
+ false
+
+
+ {e12e77ca-c0f1-4ada-943f-4929274249d3}
+ false
+
+
+
+
diff --git a/projects/openttd_vs140.vcxproj.filters b/projects/openttd_vs140.vcxproj.filters
new file mode 100644
index 0000000000..932b1901d0
--- /dev/null
+++ b/projects/openttd_vs140.vcxproj.filters
@@ -0,0 +1,3281 @@
+
+
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000000}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000001}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000002}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000003}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000004}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000005}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000006}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000007}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000008}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000009}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000010}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000011}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000012}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000013}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000014}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000015}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000016}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000017}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000018}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000019}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000020}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000021}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000022}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000023}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000024}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000025}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000026}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000027}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000028}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000029}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000030}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000031}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000032}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000033}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000034}
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ MD5
+
+
+ MD5
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI API
+
+
+ Game API
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Drivers
+
+
+ Drivers
+
+
+ Drivers
+
+
+ Sprite loaders
+
+
+ Sprite loaders
+
+
+ Sprite loaders
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Pathfinder
+
+
+ Pathfinder
+
+
+ Pathfinder
+
+
+ Pathfinder
+
+
+ NPF
+
+
+ NPF
+
+
+ NPF
+
+
+ NPF
+
+
+ NPF
+
+
+ NPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ Video
+
+
+ Video
+
+
+ Video
+
+
+ Video
+
+
+ Video
+
+
+ Music
+
+
+ Music
+
+
+ Music
+
+
+ Music
+
+
+ Sound
+
+
+ Sound
+
+
+ Sound
+
+
+ Sound
+
+
+ Sound
+
+
+ Windows files
+
+
+ Windows files
+
+
+ Windows files
+
+
+ Windows files
+
+
+ Threading
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+
+
+
+
+
diff --git a/projects/openttd_vs141.vcxproj b/projects/openttd_vs141.vcxproj
new file mode 100644
index 0000000000..55c41e49e0
--- /dev/null
+++ b/projects/openttd_vs141.vcxproj
@@ -0,0 +1,1428 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ openttd
+ {668328A0-B40E-4CDB-BD72-D0064424414A}
+ openttd
+ x86-windows-static
+ x64-windows-static
+
+
+
+ Application
+ false
+ Unicode
+ v141
+
+
+ Application
+ false
+ Unicode
+ true
+ v141
+
+
+ Application
+ false
+ Unicode
+ v141
+
+
+ Application
+ false
+ Unicode
+ true
+ v141
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ false
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ false
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+
+ AllRules.ruleset
+
+
+ AllRules.ruleset
+
+
+ AllRules.ruleset
+
+
+ AllRules.ruleset
+
+
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(ProjectDir)..\bin
+
+
+
+ .\Release/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew /std:c++latest %(AdditionalOptions)
+ Full
+ AnySuitable
+ true
+ Size
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LIBLZMA;WITH_PNG;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)
+ true
+ Sync
+ MultiThreaded
+ 4Bytes
+ false
+ true
+
+
+
+
+
+
+ All
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ FastCall
+ Default
+ true
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;%(AdditionalDependencies)
+ true
+ %(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ true
+ false
+
+
+ MachineX86
+ true
+ 5.01
+
+
+ os_versions.manifest
+ PerMonitorHighDPIAware
+
+
+ copy "$(OutDir)$(TargetName)$(TargetExt)" "$(SolutionDir)..\bin\$(TargetName)$(TargetExt)"
+
+
+
+
+ .\Debug/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew /std:c++latest %(AdditionalOptions)
+ Disabled
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ _DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LIBLZMA;WITH_PNG;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebug
+
+
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ FastCall
+ Default
+ true
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;%(AdditionalDependencies)
+ true
+ LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ false
+
+
+ MachineX86
+ 5.01
+
+
+ os_versions.manifest
+ PerMonitorHighDPIAware
+
+
+ copy "$(OutDir)$(TargetName)$(TargetExt)" "$(SolutionDir)..\bin\$(TargetName)$(TargetExt)"
+
+
+
+
+ X64
+ .\Release/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew /std:c++latest %(AdditionalOptions)
+ Full
+ AnySuitable
+ true
+ Size
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LIBLZMA;WITH_PNG;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)
+ true
+ Sync
+ MultiThreaded
+ Default
+ false
+ true
+
+
+
+
+
+
+ All
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ FastCall
+ Default
+ true
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;%(AdditionalDependencies)
+ true
+ %(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ true
+ MachineX64
+ true
+ 5.02
+
+
+ os_versions.manifest
+ PerMonitorHighDPIAware
+
+
+ copy "$(OutDir)$(TargetName)$(TargetExt)" "$(SolutionDir)..\bin\$(TargetName)$(TargetExt)"
+
+
+
+
+ X64
+ .\Debug/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew /std:c++latest %(AdditionalOptions)
+ Disabled
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ _DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LIBLZMA;WITH_PNG;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebug
+
+
+
+
+
+
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ Cdecl
+ Default
+ true
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;%(AdditionalDependencies)
+ true
+ LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ MachineX64
+ 5.02
+
+
+ os_versions.manifest
+ PerMonitorHighDPIAware
+
+
+ copy "$(OutDir)$(TargetName)$(TargetExt)" "$(SolutionDir)..\bin\$(TargetName)$(TargetExt)"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {0f066b23-18df-4284-8265-f4a5e7e3b966}
+ false
+
+
+ {e9548de9-f089-49b7-93a6-30be2cc311c7}
+ false
+
+
+ {0817f629-589e-4a3b-b81a-8647bc571e35}
+ false
+
+
+ {a133a442-bd0a-4ade-b117-ad7545e4bdd1}
+ false
+
+
+ {1a2b3c5e-1c23-41a5-9c9b-acba2aa75fec}
+ false
+
+
+ {e12e77ca-c0f1-4ada-943f-4929274249d3}
+ false
+
+
+
+
diff --git a/projects/openttd_vs141.vcxproj.filters b/projects/openttd_vs141.vcxproj.filters
new file mode 100644
index 0000000000..932b1901d0
--- /dev/null
+++ b/projects/openttd_vs141.vcxproj.filters
@@ -0,0 +1,3281 @@
+
+
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000000}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000001}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000002}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000003}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000004}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000005}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000006}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000007}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000008}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000009}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000010}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000011}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000012}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000013}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000014}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000015}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000016}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000017}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000018}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000019}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000020}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000021}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000022}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000023}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000024}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000025}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000026}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000027}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000028}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000029}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000030}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000031}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000032}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000033}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000034}
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ MD5
+
+
+ MD5
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI API
+
+
+ Game API
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Drivers
+
+
+ Drivers
+
+
+ Drivers
+
+
+ Sprite loaders
+
+
+ Sprite loaders
+
+
+ Sprite loaders
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Pathfinder
+
+
+ Pathfinder
+
+
+ Pathfinder
+
+
+ Pathfinder
+
+
+ NPF
+
+
+ NPF
+
+
+ NPF
+
+
+ NPF
+
+
+ NPF
+
+
+ NPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ Video
+
+
+ Video
+
+
+ Video
+
+
+ Video
+
+
+ Video
+
+
+ Music
+
+
+ Music
+
+
+ Music
+
+
+ Music
+
+
+ Sound
+
+
+ Sound
+
+
+ Sound
+
+
+ Sound
+
+
+ Sound
+
+
+ Windows files
+
+
+ Windows files
+
+
+ Windows files
+
+
+ Windows files
+
+
+ Threading
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+
+
+
+
+
diff --git a/projects/openttd_vs142.vcxproj b/projects/openttd_vs142.vcxproj
new file mode 100644
index 0000000000..de38af329f
--- /dev/null
+++ b/projects/openttd_vs142.vcxproj
@@ -0,0 +1,1428 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ openttd
+ {668328A0-B40E-4CDB-BD72-D0064424414A}
+ openttd
+ x86-windows-static
+ x64-windows-static
+
+
+
+ Application
+ false
+ Unicode
+ v142
+
+
+ Application
+ false
+ Unicode
+ true
+ v142
+
+
+ Application
+ false
+ Unicode
+ v142
+
+
+ Application
+ false
+ Unicode
+ true
+ v142
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ false
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ false
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+
+ NativeMinimumRules.ruleset
+
+
+ NativeMinimumRules.ruleset
+
+
+ NativeMinimumRules.ruleset
+
+
+ NativeMinimumRules.ruleset
+
+
+ $(SolutionDir)..\objs\$(Platform)\$(Configuration)\
+ $(ProjectDir)..\bin
+
+
+
+ .\Release/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew /std:c++latest %(AdditionalOptions)
+ Full
+ AnySuitable
+ true
+ Size
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LIBLZMA;WITH_PNG;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)
+ true
+ Sync
+ MultiThreaded
+ 4Bytes
+ false
+ true
+
+
+
+
+
+
+ All
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ FastCall
+ Default
+ true
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;%(AdditionalDependencies)
+ true
+ %(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ true
+ false
+
+
+ MachineX86
+ true
+ 5.01
+
+
+ os_versions.manifest
+ PerMonitorHighDPIAware
+
+
+ copy "$(OutDir)$(TargetName)$(TargetExt)" "$(SolutionDir)..\bin\$(TargetName)$(TargetExt)"
+
+
+
+
+ .\Debug/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew /std:c++latest %(AdditionalOptions)
+ Disabled
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ _DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LIBLZMA;WITH_PNG;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebug
+
+
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ FastCall
+ Default
+ true
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;%(AdditionalDependencies)
+ true
+ LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ false
+
+
+ MachineX86
+ 5.01
+
+
+ os_versions.manifest
+ PerMonitorHighDPIAware
+
+
+ copy "$(OutDir)$(TargetName)$(TargetExt)" "$(SolutionDir)..\bin\$(TargetName)$(TargetExt)"
+
+
+
+
+ X64
+ .\Release/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew /std:c++latest %(AdditionalOptions)
+ Full
+ AnySuitable
+ true
+ Size
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LIBLZMA;WITH_PNG;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)
+ true
+ Sync
+ MultiThreaded
+ Default
+ false
+ true
+
+
+
+
+
+
+ All
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ FastCall
+ Default
+ true
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;%(AdditionalDependencies)
+ true
+ %(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ true
+ MachineX64
+ true
+ 5.02
+
+
+ os_versions.manifest
+ PerMonitorHighDPIAware
+
+
+ copy "$(OutDir)$(TargetName)$(TargetExt)" "$(SolutionDir)..\bin\$(TargetName)$(TargetExt)"
+
+
+
+
+ X64
+ .\Debug/openttd.tlb
+
+
+
+
+ /J /Zc:throwingNew /std:c++latest %(AdditionalOptions)
+ Disabled
+ true
+ ..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
+ _DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LIBLZMA;WITH_PNG;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebug
+
+
+
+
+
+
+ $(IntDir)
+ $(IntDir)
+ $(IntDir)$(TargetName).pdb
+ Level3
+ false
+ true
+ ProgramDatabase
+ Cdecl
+ Default
+ true
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ 0x0809
+
+
+ winmm.lib;ws2_32.lib;imm32.lib;%(AdditionalDependencies)
+ true
+ LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)
+ true
+ Windows
+ 1048576
+ 1048576
+ MachineX64
+ 5.02
+
+
+ os_versions.manifest
+ PerMonitorHighDPIAware
+
+
+ copy "$(OutDir)$(TargetName)$(TargetExt)" "$(SolutionDir)..\bin\$(TargetName)$(TargetExt)"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {0f066b23-18df-4284-8265-f4a5e7e3b966}
+ false
+
+
+ {e9548de9-f089-49b7-93a6-30be2cc311c7}
+ false
+
+
+ {0817f629-589e-4a3b-b81a-8647bc571e35}
+ false
+
+
+ {a133a442-bd0a-4ade-b117-ad7545e4bdd1}
+ false
+
+
+ {1a2b3c5e-1c23-41a5-9c9b-acba2aa75fec}
+ false
+
+
+ {e12e77ca-c0f1-4ada-943f-4929274249d3}
+ false
+
+
+
+
diff --git a/projects/openttd_vs142.vcxproj.filters b/projects/openttd_vs142.vcxproj.filters
new file mode 100644
index 0000000000..932b1901d0
--- /dev/null
+++ b/projects/openttd_vs142.vcxproj.filters
@@ -0,0 +1,3281 @@
+
+
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000000}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000001}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000002}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000003}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000004}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000005}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000006}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000007}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000008}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000009}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000010}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000011}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000012}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000013}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000014}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000015}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000016}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000017}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000018}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000019}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000020}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000021}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000022}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000023}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000024}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000025}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000026}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000027}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000028}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000029}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000030}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000031}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000032}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000033}
+
+
+ {c76ff9f1-1e62-46d8-8d55-000000000034}
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ Core Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ GUI Source Code
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Widgets
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Command handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Save/Load handlers
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ Tables
+
+
+ MD5
+
+
+ MD5
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Script
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ Squirrel headers
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI Core
+
+
+ AI API
+
+
+ Game API
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Game Core
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Script API Implementation
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Blitters
+
+
+ Drivers
+
+
+ Drivers
+
+
+ Drivers
+
+
+ Sprite loaders
+
+
+ Sprite loaders
+
+
+ Sprite loaders
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ NewGRF
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Map Accessors
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Misc
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Network Core
+
+
+ Pathfinder
+
+
+ Pathfinder
+
+
+ Pathfinder
+
+
+ Pathfinder
+
+
+ NPF
+
+
+ NPF
+
+
+ NPF
+
+
+ NPF
+
+
+ NPF
+
+
+ NPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ YAPF
+
+
+ Video
+
+
+ Video
+
+
+ Video
+
+
+ Video
+
+
+ Video
+
+
+ Music
+
+
+ Music
+
+
+ Music
+
+
+ Music
+
+
+ Sound
+
+
+ Sound
+
+
+ Sound
+
+
+ Sound
+
+
+ Sound
+
+
+ Windows files
+
+
+ Windows files
+
+
+ Windows files
+
+
+ Windows files
+
+
+ Threading
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+ CityMania client
+
+
+
+
+
+
+
diff --git a/src/aircraft_gui.cpp b/src/aircraft_gui.cpp
index 311bc497bf..40c72e2700 100644
--- a/src/aircraft_gui.cpp
+++ b/src/aircraft_gui.cpp
@@ -39,7 +39,8 @@ void DrawAircraftDetails(const Aircraft *v, int left, int right, int y)
SetDParam(0, u->engine_type);
SetDParam(1, u->build_year);
SetDParam(2, u->value);
- DrawString(left, right, y, STR_VEHICLE_INFO_BUILT_VALUE);
+ if (_settings_client.gui.newgrf_developer_tools) SetDParam(3, v->index); // CM
+ DrawString(left, right, y, _settings_client.gui.newgrf_developer_tools ? STR_CM_VEHICLE_INFO_BUILT_VALUE_WITH_ID : STR_VEHICLE_INFO_BUILT_VALUE);
SetDParam(0, u->cargo_type);
SetDParam(1, u->cargo_cap);
diff --git a/src/citymania/cm_console_cmds.cpp b/src/citymania/cm_console_cmds.cpp
index 844ea1216a..3cae1f1484 100644
--- a/src/citymania/cm_console_cmds.cpp
+++ b/src/citymania/cm_console_cmds.cpp
@@ -10,8 +10,14 @@
#include "../fileio_type.h"
#include "../map_type.h"
#include "../map_func.h"
+#include "../strings_func.h"
+#include "../town.h"
#include "../tree_map.h"
+#include
+#include
+#include
+
#include "../safeguards.h"
bool ReadHeightMap(DetailedFileType dft, const char *filename, uint *x, uint *y, byte **map);
@@ -108,4 +114,87 @@ bool ConTreeMap(byte argc, char *argv[]) {
return true;
}
+extern void (*UpdateTownGrowthRate)(Town *t);
+
+bool ConResetTownGrowth(byte argc, char *argv[]) {
+ if (argc == 0) {
+ IConsoleHelp("Resets growth to normal for all towns.");
+ IConsoleHelp("Usage: 'cmresettowngrowth'");
+ return true;
+ }
+
+ if (argc > 1) return false;
+
+ for (Town *town : Town::Iterate()) {
+ ClrBit(town->flags, TOWN_CUSTOM_GROWTH);
+ UpdateTownGrowthRate(town);
+ }
+ return true;
+}
+
+struct FakeCommand {
+ Date date;
+ DateFract date_fract;
+ uint company_id;
+ uint cmd;
+ TileIndex tile;
+ uint32 p1, p2;
+ std::string text;
+};
+
+static std::queue _fake_commands;
+
+void ExecuteFakeCommands(Date date, DateFract date_fract) {
+ auto backup_company = _current_company;
+ while (!_fake_commands.empty() && _fake_commands.front().date <= date && _fake_commands.front().date_fract <= date_fract) {
+ auto &x = _fake_commands.front();
+ if (x.date < date || x.date_fract < date_fract) IConsolePrintF(CC_WARNING,
+ "Queued command is earlier than execution date: %d/%hu vs %d/%hu",
+ x.date, x.date_fract, date, date_fract);
+ fprintf(stderr, "Executing command: company=%u cmd=%u tile=%u p1=%u p2=%u text=%s ... ", x.company_id, x.cmd, x.tile, x.p1, x.p2, x.text.c_str());
+ _current_company = (CompanyID)x.company_id;
+ auto res = DoCommandPInternal(x.tile, x.p1, x.p2, x.cmd | CMD_NETWORK_COMMAND, nullptr, x.text.c_str(), false, false);
+ if (res.Failed()) {
+ if (res.GetErrorMessage() != INVALID_STRING_ID) {
+ char buf[DRAW_STRING_BUFFER];
+ GetString(buf, res.GetErrorMessage(), lastof(buf));
+ fprintf(stderr, "%s\n", buf);
+ } else {
+ fprintf(stderr, "FAIL\n");
+ }
+ } else {
+ fprintf(stderr, "OK\n");
+ }
+ _fake_commands.pop();
+ }
+ _current_company = backup_company;
+}
+
+bool ConLoadCommands(byte argc, char *argv[]) {
+ if (argc == 0) {
+ IConsoleHelp("Loads a file with command queue to execute");
+ IConsoleHelp("Usage: 'cmloadcommands '");
+ return true;
+ }
+
+ if (argc != 2) return false;
+
+ std::queue().swap(_fake_commands); // clear queue
+
+ std::ifstream file(argv[1], std::ios::in);
+ std::string str;
+ while(std::getline(file, str))
+ {
+ std::istringstream ss(str);
+ FakeCommand cmd;
+ ss >> cmd.date >> cmd.date_fract >> cmd.company_id >> cmd.cmd >> cmd.p1 >> cmd.p2 >> cmd.tile;
+ std::string s;
+ ss.get();
+ std::getline(ss, cmd.text);
+ // fprintf(stderr, "PARSED: company=%u cmd=%u tile=%u p1=%u p2=%u text=%s\n", cmd.company_id, cmd.cmd, cmd.tile, cmd.p1, cmd.p2, cmd.text.c_str());
+ _fake_commands.push(cmd);
+ }
+ return true;
+}
+
} // namespace citymania
diff --git a/src/citymania/cm_console_cmds.hpp b/src/citymania/cm_console_cmds.hpp
index 95a1e45ffa..f14df23552 100644
--- a/src/citymania/cm_console_cmds.hpp
+++ b/src/citymania/cm_console_cmds.hpp
@@ -1,11 +1,16 @@
#ifndef CM_CONSOLE_CMDS_HPP
#define CM_CONSOLE_CMDS_HPP
+#include "../date_type.h"
+
namespace citymania {
bool ConStep(byte argc, char *argv[]);
bool ConExport(byte argc, char *argv[]);
bool ConTreeMap(byte argc, char *argv[]);
+bool ConResetTownGrowth(byte argc, char *argv[]);
+bool ConLoadCommands(byte argc, char *argv[]);
+void ExecuteFakeCommands(Date date, DateFract date_fract);
} // namespace citymania
diff --git a/src/citymania/cm_highlight.cpp b/src/citymania/cm_highlight.cpp
index 9f8f217464..1ae053842c 100644
--- a/src/citymania/cm_highlight.cpp
+++ b/src/citymania/cm_highlight.cpp
@@ -1,20 +1,25 @@
#include "../stdafx.h"
#include "cm_highlight.hpp"
+
+// #include "cm_blueprint.hpp"
#include "cm_main.hpp"
#include "cm_station_gui.hpp"
#include "cm_zoning.hpp"
#include "../core/math_func.hpp"
+#include "../table/bridge_land.h"
#include "../command_func.h"
#include "../house.h"
#include "../industry.h"
#include "../landscape.h"
#include "../newgrf_railtype.h"
+#include "../newgrf_station.h"
#include "../town.h"
#include "../town_kdtree.h"
#include "../tilearea_type.h"
#include "../tilehighlight_type.h"
+#include "../tilehighlight_func.h"
#include "../viewport_func.h"
#include "../table/track_land.h"
@@ -36,6 +41,17 @@ extern RailType _cur_railtype;
RoadBits FindRailsToConnect(TileIndex tile);
extern DiagDirection _build_depot_direction; ///< Currently selected depot direction
extern uint32 _realtime_tick;
+extern void GetStationLayout(byte *layout, int numtracks, int plat_len, const StationSpec *statspec);
+
+struct RailStationGUISettings {
+ Axis orientation; ///< Currently selected rail station orientation
+
+ bool newstations; ///< Are custom station definitions available?
+ StationClassID station_class; ///< Currently selected custom station class (if newstations is \c true )
+ byte station_type; ///< %Station type within the currently selected custom station class (if newstations is \c true )
+ byte station_count; ///< Number of custom stations (if newstations is \c true )
+};
+extern RailStationGUISettings _railstation; ///< Settings of the station builder GUI
namespace citymania {
@@ -71,27 +87,58 @@ const byte _tileh_to_sprite[32] = {
0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 17, 0, 15, 18, 0,
};
-
-ObjectTileHighlight ObjectTileHighlight::make_depot(DiagDirection ddir) {
- auto oh = ObjectTileHighlight(Type::RAIL_DEPOT);
- oh.u.depot.ddir = ddir;
+ObjectTileHighlight ObjectTileHighlight::make_rail_depot(SpriteID palette, DiagDirection ddir) {
+ auto oh = ObjectTileHighlight(Type::RAIL_DEPOT, palette);
+ oh.u.rail.depot.ddir = ddir;
return oh;
}
-ObjectTileHighlight ObjectTileHighlight::make_rail(Track track) {
- auto oh = ObjectTileHighlight(Type::RAIL_TRACK);
+ObjectTileHighlight ObjectTileHighlight::make_rail_track(SpriteID palette, Track track) {
+ auto oh = ObjectTileHighlight(Type::RAIL_TRACK, palette);
oh.u.rail.track = track;
return oh;
}
+ObjectTileHighlight ObjectTileHighlight::make_rail_station(SpriteID palette, Axis axis, byte section) {
+ auto oh = ObjectTileHighlight(Type::RAIL_STATION, palette);
+ oh.u.rail.station.axis = axis;
+ oh.u.rail.station.section = section;
+ return oh;
+}
+
+ObjectTileHighlight ObjectTileHighlight::make_rail_signal(SpriteID palette, uint pos, SignalType type, SignalVariant variant) {
+ auto oh = ObjectTileHighlight(Type::RAIL_SIGNAL, palette);
+ oh.u.rail.signal.pos = pos;
+ oh.u.rail.signal.type = type;
+ oh.u.rail.signal.variant = variant;
+ return oh;
+}
+
+ObjectTileHighlight ObjectTileHighlight::make_rail_bridge_head(SpriteID palette, DiagDirection ddir, BridgeType type) {
+ auto oh = ObjectTileHighlight(Type::RAIL_BRIDGE_HEAD, palette);
+ oh.u.rail.bridge_head.ddir = ddir;
+ oh.u.rail.bridge_head.type = type;
+ return oh;
+}
+
+ObjectTileHighlight ObjectTileHighlight::make_rail_tunnel_head(SpriteID palette, DiagDirection ddir) {
+ auto oh = ObjectTileHighlight(Type::RAIL_TUNNEL_HEAD, palette);
+ oh.u.rail.tunnel_head.ddir = ddir;
+ return oh;
+}
bool ObjectHighlight::operator==(const ObjectHighlight& oh) {
if (this->type != oh.type) return false;
- switch (this->type) {
- case Type::RAIL_DEPOT: return this->u.depot.tile == oh.u.depot.tile && this->u.depot.ddir == oh.u.depot.ddir;
- default: return true;
- }
- return true;
+ return (this->tile == oh.tile
+ && this->end_tile == oh.end_tile
+ && this->axis == oh.axis
+ && this->ddir == oh.ddir
+ && this->blueprint == oh.blueprint);
+ // switch (this->type) {
+ // case Type::RAIL_DEPOT: return this->tile == oh.tile && this->ddir == oh.ddir;
+ // default: return true;
+ // }
+ // return true;
}
bool ObjectHighlight::operator!=(const ObjectHighlight& oh) {
@@ -99,13 +146,28 @@ bool ObjectHighlight::operator!=(const ObjectHighlight& oh) {
}
-ObjectHighlight ObjectHighlight::make_depot(TileIndex tile, DiagDirection ddir) {
- auto oh = ObjectHighlight(ObjectHighlight::Type::RAIL_DEPOT);
- oh.u.depot.tile = tile;
- oh.u.depot.ddir = ddir;
+ObjectHighlight ObjectHighlight::make_rail_depot(TileIndex tile, DiagDirection ddir) {
+ auto oh = ObjectHighlight{ObjectHighlight::Type::RAIL_DEPOT};
+ oh.tile = tile;
+ oh.ddir = ddir;
return oh;
}
+ObjectHighlight ObjectHighlight::make_rail_station(TileIndex start_tile, TileIndex end_tile, Axis axis) {
+ auto oh = ObjectHighlight{ObjectHighlight::Type::RAIL_STATION};
+ oh.tile = start_tile;
+ oh.end_tile = end_tile;
+ oh.axis = axis;
+ return oh;
+}
+
+// ObjectHighlight ObjectHighlight::make_blueprint(TileIndex tile, sp blueprint) {
+// auto oh = ObjectHighlight{ObjectHighlight::Type::BLUEPRINT};
+// oh.tile = tile;
+// oh.blueprint = blueprint;
+// return oh;
+// }
+
/**
* Try to add an additional rail-track at the entrance of a depot
* @param tile Tile to use for adding the rail-track
@@ -118,7 +180,7 @@ void ObjectHighlight::PlaceExtraDepotRail(TileIndex tile, DiagDirection dir, Tra
if (GetRailTileType(tile) != RAIL_TILE_NORMAL) return;
if ((GetTrackBits(tile) & DiagdirReachesTracks(dir)) == 0) return;
- this->tiles.insert(std::make_pair(tile, ObjectTileHighlight::make_rail(track)));
+ this->tiles.insert(std::make_pair(tile, ObjectTileHighlight::make_rail_track(PALETTE_TINT_WHITE, track)));
}
/** Additional pieces of track to add at the entrance of a depot. */
@@ -135,22 +197,84 @@ static const DiagDirection _place_depot_extra_dir[12] = {
DIAGDIR_NW, DIAGDIR_NE, DIAGDIR_NW, DIAGDIR_NE,
};
+static bool CanBuild(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd) {
+ return DoCommandPInternal(
+ tile,
+ p1,
+ p2,
+ cmd,
+ nullptr, // callback
+ nullptr, // text
+ true, // my_cmd
+ true // estimate_only
+ ).Succeeded();
+}
+
void ObjectHighlight::UpdateTiles() {
this->tiles.clear();
switch (this->type) {
+ case Type::NONE:
+ break;
+
case Type::RAIL_DEPOT: {
- auto dir = this->u.depot.ddir;
- this->tiles.insert(std::make_pair(this->u.depot.tile, ObjectTileHighlight::make_depot(dir)));
- auto tile = this->u.depot.tile + TileOffsByDiagDir(dir);
+ auto dir = this->ddir;
+
+ auto palette = (CanBuild(
+ this->tile,
+ _cur_railtype,
+ dir,
+ CMD_BUILD_TRAIN_DEPOT
+ ) ? PALETTE_TINT_WHITE : PALETTE_TINT_RED_DEEP);
+
+ this->tiles.insert(std::make_pair(this->tile, ObjectTileHighlight::make_rail_depot(palette, dir)));
+ auto tile = this->tile + TileOffsByDiagDir(dir);
if (IsTileType(tile, MP_RAILWAY) && IsCompatibleRail(GetRailType(tile), _cur_railtype)) {
- PlaceExtraDepotRail(tile, _place_depot_extra_dir[dir], _place_depot_extra_track[dir]);
- PlaceExtraDepotRail(tile, _place_depot_extra_dir[dir + 4], _place_depot_extra_track[dir + 4]);
- PlaceExtraDepotRail(tile, _place_depot_extra_dir[dir + 8], _place_depot_extra_track[dir + 8]);
+ this->PlaceExtraDepotRail(tile, _place_depot_extra_dir[dir], _place_depot_extra_track[dir]);
+ this->PlaceExtraDepotRail(tile, _place_depot_extra_dir[dir + 4], _place_depot_extra_track[dir + 4]);
+ this->PlaceExtraDepotRail(tile, _place_depot_extra_dir[dir + 8], _place_depot_extra_track[dir + 8]);
}
break;
}
- default:
+ case Type::RAIL_STATION: {
+ auto ta = OrthogonalTileArea(this->tile, this->end_tile);
+ auto numtracks = ta.w;
+ auto plat_len = ta.h;
+ if (this->axis == AXIS_X) Swap(numtracks, plat_len);
+
+ auto palette = (CanBuild(
+ this->tile,
+ _cur_railtype
+ | (this->axis << 6)
+ | ((uint32)numtracks << 8)
+ | ((uint32)plat_len << 16),
+ NEW_STATION << 16,
+ CMD_BUILD_RAIL_STATION
+ ) ? PALETTE_TINT_WHITE : PALETTE_TINT_RED_DEEP);
+
+ auto layout_ptr = AllocaM(byte, (int)numtracks * plat_len);
+ GetStationLayout(layout_ptr, numtracks, plat_len, nullptr); // TODO statspec
+
+ auto tile_delta = (this->axis == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1));
+ TileIndex tile_track = this->tile;
+ do {
+ TileIndex tile = tile_track;
+ int w = plat_len;
+ do {
+ byte layout = *layout_ptr++;
+ this->tiles.insert(std::make_pair(tile, ObjectTileHighlight::make_rail_station(palette, this->axis, layout & ~1)));
+ tile += tile_delta;
+ } while (--w);
+ tile_track += tile_delta ^ TileDiffXY(1, 1); // perpendicular to tile_delta
+ } while (--numtracks);
+
break;
+ }
+ // case Type::BLUEPRINT:
+ // if (this->blueprint && this->tile != INVALID_TILE)
+ // this->tiles = this->blueprint->GetTiles(this->tile);
+ // break;
+ default:
+ NOT_REACHED();
}
}
@@ -162,7 +286,43 @@ void ObjectHighlight::MarkDirty() {
}
-void DrawTrainDepotSprite(const TileInfo *ti, RailType railtype, DiagDirection ddir)
+SpriteID GetTintBySelectionColour(SpriteID colour, bool deep=false) {
+ switch(colour) {
+ case SPR_PALETTE_ZONING_RED: return (deep ? PALETTE_TINT_RED_DEEP : PALETTE_TINT_RED);
+ case SPR_PALETTE_ZONING_ORANGE: return (deep ? PALETTE_TINT_ORANGE_DEEP : PALETTE_TINT_ORANGE);
+ case SPR_PALETTE_ZONING_GREEN: return (deep ? PALETTE_TINT_GREEN_DEEP : PALETTE_TINT_GREEN);
+ case SPR_PALETTE_ZONING_LIGHT_BLUE: return (deep ? PALETTE_TINT_CYAN_DEEP : PALETTE_TINT_CYAN);
+ case SPR_PALETTE_ZONING_YELLOW: return PALETTE_TINT_YELLOW;
+ // case SPR_PALETTE_ZONING__: return PALETTE_TINT_YELLOW_WHITE;
+ case SPR_PALETTE_ZONING_WHITE: return PALETTE_TINT_WHITE;
+ default: return PAL_NONE;
+ }
+}
+
+SpriteID GetSelectionColourByTint(SpriteID colour) {
+ switch(colour) {
+ case PALETTE_TINT_RED_DEEP:
+ case PALETTE_TINT_RED:
+ return SPR_PALETTE_ZONING_RED;
+ case PALETTE_TINT_ORANGE_DEEP:
+ case PALETTE_TINT_ORANGE:
+ return SPR_PALETTE_ZONING_ORANGE;
+ case PALETTE_TINT_GREEN_DEEP:
+ case PALETTE_TINT_GREEN:
+ return SPR_PALETTE_ZONING_GREEN;
+ case PALETTE_TINT_CYAN_DEEP:
+ case PALETTE_TINT_CYAN:
+ return SPR_PALETTE_ZONING_LIGHT_BLUE;
+ case PALETTE_TINT_YELLOW:
+ return SPR_PALETTE_ZONING_YELLOW;
+ // returnase SPR_PALETTE_ZONING__: return PALETTE_TINT_YELLOW_WHITE;
+ case PALETTE_TINT_WHITE:
+ return SPR_PALETTE_ZONING_WHITE;
+ default: return PAL_NONE;
+ }
+}
+
+void DrawTrainDepotSprite(SpriteID palette, const TileInfo *ti, RailType railtype, DiagDirection ddir)
{
const DrawTileSprites *dts = &_depot_gfx_table[ddir];
const RailtypeInfo *rti = GetRailTypeInfo(railtype);
@@ -170,13 +330,13 @@ void DrawTrainDepotSprite(const TileInfo *ti, RailType railtype, DiagDirection d
uint32 offset = rti->GetRailtypeSpriteOffset();
if (image != SPR_FLAT_GRASS_TILE) image += offset;
- PaletteID palette = COMPANY_SPRITE_COLOUR(_local_company);
+ // PaletteID palette = COMPANY_SPRITE_COLOUR(_local_company);
// DrawSprite(image, PAL_NONE, x, y);
switch (ddir) {
- case DIAGDIR_SW: DrawAutorailSelection(ti, HT_DIR_X, PAL_NONE); break;
- case DIAGDIR_SE: DrawAutorailSelection(ti, HT_DIR_Y, PAL_NONE); break;
+ case DIAGDIR_SW: DrawAutorailSelection(ti, HT_DIR_X, GetSelectionColourByTint(palette)); break;
+ case DIAGDIR_SE: DrawAutorailSelection(ti, HT_DIR_Y, GetSelectionColourByTint(palette)); break;
default: break;
}
// if (rti->UsesOverlay()) {
@@ -191,27 +351,208 @@ void DrawTrainDepotSprite(const TileInfo *ti, RailType railtype, DiagDirection d
int depot_sprite = GetCustomRailSprite(rti, INVALID_TILE, RTSG_DEPOT);
if (depot_sprite != 0) offset = depot_sprite - SPR_RAIL_DEPOT_SE_1;
- DrawRailTileSeq(ti, dts, TO_INVALID, offset, 0, PALETTE_TINT_WHITE);
+ DrawRailTileSeq(ti, dts, TO_INVALID, offset, 0, palette);
+}
+
+void DrawTrainStationSprite(SpriteID palette, const TileInfo *ti, RailType railtype, Axis axis, byte section) {
+ int32 total_offset = 0;
+ PaletteID pal = COMPANY_SPRITE_COLOUR(_local_company);
+ const DrawTileSprites *t = GetStationTileLayout(STATION_RAIL, section + (axis == AXIS_X ? 0 : 1));
+ const RailtypeInfo *rti = nullptr;
+
+ if (railtype != INVALID_RAILTYPE) {
+ rti = GetRailTypeInfo(railtype);
+ total_offset = rti->GetRailtypeSpriteOffset();
+ }
+
+ DrawAutorailSelection(ti, (axis == AXIS_X ? HT_DIR_X : HT_DIR_Y), GetSelectionColourByTint(palette));
+
+ // if (roadtype != INVALID_ROADTYPE) {
+ // const RoadTypeInfo* rti = GetRoadTypeInfo(roadtype);
+ // if (image >= 4) {
+ // /* Drive-through stop */
+ // uint sprite_offset = 5 - image;
+
+ // /* Road underlay takes precedence over tram */
+ // if (rti->UsesOverlay()) {
+ // SpriteID ground = GetCustomRoadSprite(rti, INVALID_TILE, ROTSG_GROUND);
+ // DrawSprite(ground + sprite_offset, PAL_NONE, x, y);
+
+ // SpriteID overlay = GetCustomRoadSprite(rti, INVALID_TILE, ROTSG_OVERLAY);
+ // if (overlay) DrawSprite(overlay + sprite_offset, PAL_NONE, x, y);
+ // } else if (RoadTypeIsTram(roadtype)) {
+ // DrawSprite(SPR_TRAMWAY_TRAM + sprite_offset, PAL_NONE, x, y);
+ // }
+ // } else {
+ // /* Drive-in stop */
+ // if (RoadTypeIsRoad(roadtype) && rti->UsesOverlay()) {
+ // SpriteID ground = GetCustomRoadSprite(rti, INVALID_TILE, ROTSG_ROADSTOP);
+ // DrawSprite(ground + image, PAL_NONE, x, y);
+ // }
+ // }
+ // }
+
+ /* Default waypoint has no railtype specific sprites */
+ // DrawRailTileSeq(ti, t, TO_INVALID, (st == STATION_WAYPOINT ? 0 : total_offset), 0, PALETTE_TINT_WHITE);
+ DrawRailTileSeq(ti, t, TO_INVALID, total_offset, 0, palette);
+}
+
+enum SignalOffsets { // from rail_cmd.cpp
+ SIGNAL_TO_SOUTHWEST,
+ SIGNAL_TO_NORTHEAST,
+ SIGNAL_TO_SOUTHEAST,
+ SIGNAL_TO_NORTHWEST,
+ SIGNAL_TO_EAST,
+ SIGNAL_TO_WEST,
+ SIGNAL_TO_SOUTH,
+ SIGNAL_TO_NORTH,
+};
+
+/**
+ * copied from rail_cmd.cpp
+ * Get surface height in point (x,y)
+ * On tiles with halftile foundations move (x,y) to a safe point wrt. track
+ */
+static uint GetSaveSlopeZ(uint x, uint y, Track track)
+{
+ switch (track) {
+ case TRACK_UPPER: x &= ~0xF; y &= ~0xF; break;
+ case TRACK_LOWER: x |= 0xF; y |= 0xF; break;
+ case TRACK_LEFT: x |= 0xF; y &= ~0xF; break;
+ case TRACK_RIGHT: x &= ~0xF; y |= 0xF; break;
+ default: break;
+ }
+ return GetSlopePixelZ(x, y);
+}
+
+void DrawSignal(const TileInfo *ti, RailType railtype, uint pos, SignalType type, SignalVariant variant) {
+ // reference: DraawSingleSignal in rail_cmd.cpp
+ bool side;
+ switch (_settings_game.construction.train_signal_side) {
+ case 0: side = false; break; // left
+ case 2: side = true; break; // right
+ default: side = _settings_game.vehicle.road_side != 0; break; // driving side
+ }
+ static const Point SignalPositions[2][12] = {
+ { // Signals on the left side
+ /* LEFT LEFT RIGHT RIGHT UPPER UPPER */
+ { 8, 5}, {14, 1}, { 1, 14}, { 9, 11}, { 1, 0}, { 3, 10},
+ /* LOWER LOWER X X Y Y */
+ {11, 4}, {14, 14}, {11, 3}, { 4, 13}, { 3, 4}, {11, 13}
+ }, { // Signals on the right side
+ /* LEFT LEFT RIGHT RIGHT UPPER UPPER */
+ {14, 1}, {12, 10}, { 4, 6}, { 1, 14}, {10, 4}, { 0, 1},
+ /* LOWER LOWER X X Y Y */
+ {14, 14}, { 5, 12}, {11, 13}, { 4, 3}, {13, 4}, { 3, 11}
+ }
+ };
+
+ uint x = TileX(ti->tile) * TILE_SIZE + SignalPositions[side][pos].x;
+ uint y = TileY(ti->tile) * TILE_SIZE + SignalPositions[side][pos].y;
+
+ static const Track pos_track[] = {
+ TRACK_LEFT, TRACK_LEFT, TRACK_RIGHT, TRACK_RIGHT,
+ TRACK_UPPER, TRACK_UPPER, TRACK_LOWER, TRACK_LOWER,
+ TRACK_X, TRACK_X, TRACK_Y, TRACK_Y,
+ };
+ static const SignalOffsets pos_offset[] = {
+ SIGNAL_TO_NORTH, SIGNAL_TO_SOUTH, SIGNAL_TO_NORTH, SIGNAL_TO_SOUTH,
+ SIGNAL_TO_WEST, SIGNAL_TO_EAST, SIGNAL_TO_WEST, SIGNAL_TO_EAST,
+ SIGNAL_TO_SOUTHWEST, SIGNAL_TO_NORTHEAST, SIGNAL_TO_SOUTHEAST, SIGNAL_TO_NORTHWEST,
+ };
+
+ auto track = pos_track[pos];
+ auto image = pos_offset[pos];
+ static const SignalState condition = SIGNAL_STATE_GREEN;
+
+ auto rti = GetRailTypeInfo(railtype);
+ SpriteID sprite = GetCustomSignalSprite(rti, ti->tile, type, variant, condition);
+ if (sprite != 0) {
+ sprite += image;
+ } else {
+ /* Normal electric signals are stored in a different sprite block than all other signals. */
+ sprite = (type == SIGTYPE_NORMAL && variant == SIG_ELECTRIC) ? SPR_ORIGINAL_SIGNALS_BASE : SPR_SIGNALS_BASE - 16;
+ sprite += type * 16 + variant * 64 + image * 2 + condition + (type > SIGTYPE_LAST_NOPBS ? 64 : 0);
+ }
+
+ AddSortableSpriteToDraw(sprite, PALETTE_TINT_WHITE, x, y, 1, 1, BB_HEIGHT_UNDER_BRIDGE, GetSaveSlopeZ(x, y, track));
+}
+
+// copied from tunnelbridge_cmd.cpp
+static inline const PalSpriteID *GetBridgeSpriteTable(int index, BridgePieces table)
+{
+ const BridgeSpec *bridge = GetBridgeSpec(index);
+ assert(table < BRIDGE_PIECE_INVALID);
+ if (bridge->sprite_table == nullptr || bridge->sprite_table[table] == nullptr) {
+ return _bridge_sprite_table[index][table];
+ } else {
+ return bridge->sprite_table[table];
+ }
+}
+
+void DrawBridgeHead(const TileInfo *ti, RailType railtype, DiagDirection ddir, BridgeType type) {
+ auto rti = GetRailTypeInfo(railtype);
+ int base_offset = rti->bridge_offset;
+ const PalSpriteID *psid;
+
+ /* HACK Wizardry to convert the bridge ramp direction into a sprite offset */
+ base_offset += (6 - ddir) % 4;
+
+ /* Table number BRIDGE_PIECE_HEAD always refers to the bridge heads for any bridge type */
+ if (ti->tileh == SLOPE_FLAT) base_offset += 4; // sloped bridge head
+ psid = &GetBridgeSpriteTable(type, BRIDGE_PIECE_HEAD)[base_offset];
+
+ AddSortableSpriteToDraw(psid->sprite, PALETTE_TINT_WHITE, ti->x, ti->y, 16, 16, ti->tileh == SLOPE_FLAT ? 0 : 8, ti->z);
+ // DrawAutorailSelection(ti, (ddir == DIAGDIR_SW || ddir == DIAGDIR_NE ? HT_DIR_X : HT_DIR_Y), PAL_NONE);
+}
+
+void DrawTunnelHead(const TileInfo *ti, RailType railtype, DiagDirection ddir) {
+ auto rti = GetRailTypeInfo(railtype);
+
+ SpriteID image;
+ SpriteID railtype_overlay = 0;
+
+ image = rti->base_sprites.tunnel;
+ if (rti->UsesOverlay()) {
+ /* Check if the railtype has custom tunnel portals. */
+ railtype_overlay = GetCustomRailSprite(rti, ti->tile, RTSG_TUNNEL_PORTAL);
+ if (railtype_overlay != 0) image = SPR_RAILTYPE_TUNNEL_BASE; // Draw blank grass tunnel base.
+ }
+
+ image += ddir * 2;
+ AddSortableSpriteToDraw(image, PALETTE_TINT_WHITE, ti->x, ti->y, 16, 16, 0, ti->z);
}
void ObjectHighlight::Draw(const TileInfo *ti) {
- this->UpdateTiles();
auto range = this->tiles.equal_range(ti->tile);
for (auto t = range.first; t != range.second; t++) {
auto &oth = t->second;
switch (oth.type) {
case ObjectTileHighlight::Type::RAIL_DEPOT:
- DrawTrainDepotSprite(ti, _cur_railtype, oth.u.depot.ddir);
+ DrawTrainDepotSprite(oth.palette, ti, _cur_railtype, oth.u.rail.depot.ddir);
break;
case ObjectTileHighlight::Type::RAIL_TRACK: {
auto hs = (HighLightStyle)oth.u.rail.track;
DrawAutorailSelection(ti, hs, PAL_NONE);
break;
}
+ case ObjectTileHighlight::Type::RAIL_STATION:
+ DrawTrainStationSprite(oth.palette, ti, _cur_railtype, oth.u.rail.station.axis, oth.u.rail.station.section);
+ break;
+ case ObjectTileHighlight::Type::RAIL_SIGNAL:
+ DrawSignal(ti, _cur_railtype, oth.u.rail.signal.pos, oth.u.rail.signal.type, oth.u.rail.signal.variant);
+ break;
+ case ObjectTileHighlight::Type::RAIL_BRIDGE_HEAD:
+ DrawBridgeHead(ti, _cur_railtype, oth.u.rail.bridge_head.ddir, oth.u.rail.bridge_head.type);
+ break;
+ case ObjectTileHighlight::Type::RAIL_TUNNEL_HEAD:
+ DrawTunnelHead(ti, _cur_railtype, oth.u.rail.tunnel_head.ddir);
+ break;
default:
break;
}
}
+ // fprintf(stderr, "TILEH DRAW %d %d %d\n", ti->tile, (int)i, (int)this->tiles.size());
}
@@ -294,19 +635,6 @@ SpriteID GetIndustryZoningPalette(TileIndex tile) {
return PAL_NONE;
}
-SpriteID GetTintBySelectionColour(SpriteID colour, bool deep=false) {
- switch(colour) {
- case SPR_PALETTE_ZONING_RED: return (deep ? PALETTE_TINT_RED_DEEP : PALETTE_TINT_RED);
- case SPR_PALETTE_ZONING_ORANGE: return (deep ? PALETTE_TINT_ORANGE_DEEP : PALETTE_TINT_ORANGE);
- case SPR_PALETTE_ZONING_GREEN: return (deep ? PALETTE_TINT_GREEN_DEEP : PALETTE_TINT_GREEN);
- case SPR_PALETTE_ZONING_LIGHT_BLUE: return (deep ? PALETTE_TINT_CYAN_DEEP : PALETTE_TINT_CYAN);
- case SPR_PALETTE_ZONING_YELLOW: return PALETTE_TINT_YELLOW;
- // case SPR_PALETTE_ZONING__: return PALETTE_TINT_YELLOW_WHITE;
- case SPR_PALETTE_ZONING_WHITE: return PALETTE_TINT_WHITE;
- default: return PAL_NONE;
- }
-}
-
static void SetStationSelectionHighlight(const TileInfo *ti, TileHighlight &th) {
bool draw_selection = ((_thd.drawstyle & HT_DRAG_MASK) == HT_RECT && _thd.outersize.x > 0);
const Station *highlight_station = _viewport_highlight_station;
@@ -314,17 +642,20 @@ static void SetStationSelectionHighlight(const TileInfo *ti, TileHighlight &th)
if (_highlight_station_to_join) highlight_station = _highlight_station_to_join;
if (draw_selection) {
- auto b = CalcTileBorders(ti->tile, [](TileIndex t) {
- auto x = TileX(t) * TILE_SIZE, y = TileY(t) * TILE_SIZE;
- return IsInsideSelectedRectangle(x, y);
- });
- const SpriteID pal[] = {SPR_PALETTE_ZONING_RED, SPR_PALETTE_ZONING_YELLOW, SPR_PALETTE_ZONING_LIGHT_BLUE, SPR_PALETTE_ZONING_GREEN};
- auto color = pal[(int)_station_building_status];
- if (_thd.make_square_red) color = SPR_PALETTE_ZONING_RED;
- if (b.first != ZoningBorder::NONE)
- th.add_border(b.first, color);
+ // const SpriteID pal[] = {SPR_PALETTE_ZONING_RED, SPR_PALETTE_ZONING_YELLOW, SPR_PALETTE_ZONING_LIGHT_BLUE, SPR_PALETTE_ZONING_GREEN};
+ // auto color = pal[(int)_station_building_status];
+ // if (_thd.make_square_red) color = SPR_PALETTE_ZONING_RED;
+ if (_thd.make_square_red) {
+ auto b = CalcTileBorders(ti->tile, [](TileIndex t) {
+ auto x = TileX(t) * TILE_SIZE, y = TileY(t) * TILE_SIZE;
+ return IsInsideSelectedRectangle(x, y);
+ });
+ if (b.first != ZoningBorder::NONE)
+ th.add_border(b.first, SPR_PALETTE_ZONING_RED);
+ }
if (IsInsideSelectedRectangle(TileX(ti->tile) * TILE_SIZE, TileY(ti->tile) * TILE_SIZE)) {
- th.ground_pal = GetTintBySelectionColour(color);
+ // th.ground_pal = GetTintBySelectionColour(color);
+ th.ground_pal = th.structure_pal = (_thd.make_square_red ? PALETTE_TINT_RED : PAL_NONE);
return;
}
}
@@ -529,6 +860,7 @@ TileHighlight GetTileHighlight(const TileInfo *ti) {
}
SetStationSelectionHighlight(ti, th);
+ // SetBlueprintHighlight(ti, th);
return th;
}
@@ -549,6 +881,8 @@ void DrawTileZoning(const TileInfo *ti, const TileHighlight &th) {
bool DrawTileSelection(const TileInfo *ti, const TileHighlightType &tht) {
_thd.cm.Draw(ti);
+ // if (_thd.drawstyle == CM_HT_BLUEPRINT_PLACE) return true;
+
if ((_thd.drawstyle & HT_DRAG_MASK) == HT_RECT && _thd.outersize.x > 0) {
// station selector, handled by DrawTileZoning
return true;
@@ -612,17 +946,65 @@ DiagDirection AutodetectRailObjectDirection(TileIndex tile, Point pt) {
NOT_REACHED();
}
+TileIndex _autodetection_tile = INVALID_TILE;
+DiagDirDiff _autodetection_rotation = DIAGDIRDIFF_SAME;
+
+static DiagDirDiff GetAutodetectionRotation() {
+ auto pt = GetTileBelowCursor();
+ auto tile = TileVirtXY(pt.x, pt.y);
+
+ if (tile != _autodetection_tile) {
+ _autodetection_tile = tile;
+ _autodetection_rotation = DIAGDIRDIFF_SAME;
+ }
+
+ return _autodetection_rotation;
+}
+
+void RotateAutodetection() {
+ auto rotation = GetAutodetectionRotation();
+ if (rotation == DIAGDIRDIFF_90LEFT) rotation = DIAGDIRDIFF_SAME;
+ else rotation++;
+ _autodetection_rotation = rotation;
+ ::UpdateTileSelection();
+}
+
+void ResetRotateAutodetection() {
+ _autodetection_tile = INVALID_TILE;
+ _autodetection_rotation = DIAGDIRDIFF_SAME;
+}
+
+DiagDirection AddAutodetectionRotation(DiagDirection ddir) {
+ return ChangeDiagDir(ddir, GetAutodetectionRotation());
+}
+
HighLightStyle UpdateTileSelection(HighLightStyle new_drawstyle) {
_thd.cm_new = ObjectHighlight(ObjectHighlight::Type::NONE);
+ auto pt = GetTileBelowCursor();
+ auto tile = (pt.x == -1 ? INVALID_TILE : TileVirtXY(pt.x, pt.y));
+ // fprintf(stderr, "UPDATE %d %d %d %d\n", tile, _thd.size.x, _thd.size.y, (int)((_thd.place_mode & HT_DRAG_MASK) == HT_RECT));
+ // if (_thd.place_mode == CM_HT_BLUEPRINT_PLACE) {
+ // UpdateBlueprintTileSelection(pt, tile);
+ // new_drawstyle = CM_HT_BLUEPRINT_PLACE;
+ // } else
if ((_thd.place_mode & HT_DRAG_MASK) == HT_RECT &&
_cursor.sprite_seq[0].sprite == GetRailTypeInfo(_cur_railtype)->cursor.depot) {
auto dir = _build_depot_direction;
- auto pt = GetTileBelowCursor();
- auto tile = TileVirtXY(pt.x, pt.y);
if (pt.x != -1) {
- if (dir >= DiagDirection::DIAGDIR_END)
- dir = AutodetectRailObjectDirection(tile, pt);
- _thd.cm_new = ObjectHighlight::make_depot(tile, dir);
+ if (dir >= DiagDirection::DIAGDIR_END) {
+ dir = AddAutodetectionRotation(AutodetectRailObjectDirection(tile, pt));
+ }
+ _thd.cm_new = ObjectHighlight::make_rail_depot(tile, dir);
+ }
+ new_drawstyle = HT_RECT;
+ } else if (((_thd.place_mode & HT_DRAG_MASK) == HT_RECT || ((_thd.place_mode & HT_DRAG_MASK) == HT_SPECIAL && (_thd.next_drawstyle & HT_DRAG_MASK) == HT_RECT)) && _thd.new_outersize.x > 0 && !_thd.make_square_red) { // station
+ if (_thd.size.x >= (int)TILE_SIZE && _thd.size.y >= (int)TILE_SIZE) {
+ auto start_tile = TileXY(_thd.new_pos.x / TILE_SIZE, _thd.new_pos.y / TILE_SIZE);
+ auto end_tile = TileXY(
+ std::min((_thd.new_pos.x + _thd.new_size.x) / TILE_SIZE, MapSizeX()) - 1,
+ std::min((_thd.new_pos.y + _thd.new_size.y) / TILE_SIZE, MapSizeY()) - 1
+ );
+ _thd.cm_new = ObjectHighlight::make_rail_station(start_tile, end_tile, _railstation.orientation);
}
new_drawstyle = HT_RECT;
}
diff --git a/src/citymania/cm_highlight.hpp b/src/citymania/cm_highlight.hpp
index 0897080b2d..619c094126 100644
--- a/src/citymania/cm_highlight.hpp
+++ b/src/citymania/cm_highlight.hpp
@@ -96,6 +96,9 @@ void SetIndustryForbiddenTilesHighlight(IndustryType type);
PaletteID GetTreeShadePal(TileIndex tile);
+void RotateAutodetection();
+void ResetRotateAutodetection();
+
} // namespace citymania
#endif
diff --git a/src/citymania/cm_highlight_type.hpp b/src/citymania/cm_highlight_type.hpp
index 81bbfb75ba..e2bb0a26ec 100644
--- a/src/citymania/cm_highlight_type.hpp
+++ b/src/citymania/cm_highlight_type.hpp
@@ -1,36 +1,155 @@
#ifndef CITYMANIA_HIGHLIGHT_TYPE_HPP
#define CITYMANIA_HIGHLIGHT_TYPE_HPP
+#include "../bridge.h"
#include "../direction_type.h"
+#include "../map_func.h"
+#include "../signal_type.h"
+#include "../station_type.h"
#include "../tile_cmd.h"
#include "../tile_type.h"
#include "../track_type.h"
#include