MCPcopy Create free account
hub / github.com/ThirteenAG/WidescreenFixesPack / Init

Function Init

source/SplinterCell.WidescreenFix/dllmain.cpp:16–178  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14import Eax;
15
16void Init()
17{
18 InitCrashHandler();
19
20 CIniReader iniReader("");
21 Screen.Width = iniReader.ReadInteger("MAIN", "ResX", 0);
22 Screen.Height = iniReader.ReadInteger("MAIN", "ResY", 0);
23 Screen.nShadowBufferResolution = iniReader.ReadInteger("MAIN", "ShadowBufferResolution", 0);
24 Screen.bDeferredInput = iniReader.ReadInteger("MAIN", "DeferredInput", 1) != 0;
25 Screen.fRawInputMouse = std::clamp(iniReader.ReadFloat("MAIN", "RawInputMouse", 1.0f), 0.0f, 5.0f);
26 Screen.bRawInputMouseRawData = iniReader.ReadInteger("MAIN", "RawInputMouseRawData", 0) != 0;
27 Screen.nFMVWidescreenMode = iniReader.ReadInteger("MAIN", "FMVWidescreenMode", 1);
28 Screen.nHudWidescreenMode = iniReader.ReadInteger("MAIN", "HudWidescreenMode", 2);
29 Screen.fHudAspectRatioConstraint = ParseWidescreenHudOffset(iniReader.ReadString("MAIN", "HudAspectRatioConstraint", ""));
30 Screen.fGrainScale = std::clamp(iniReader.ReadFloat("MAIN", "GrainScale", 1.0f), 0.0f, 1.0f);
31 auto nFPSLimit = iniReader.ReadInteger("MISC", "FPSLimit", 1000);
32 bSkipIntro = iniReader.ReadInteger("MAIN", "SkipIntro", 0) != 0;
33 bSkipPressStartToContinue = iniReader.ReadInteger("MAIN", "SkipPressStartToContinue", 0) != 0;
34 bRestoreCutsceneFOV = iniReader.ReadInteger("MAIN", "RestoreCutsceneFOV", 0) != 0;
35 Screen.nCutsceneBorders = iniReader.ReadInteger("MAIN", "CutsceneBorders", 0);
36
37 if (!Screen.Width || !Screen.Height)
38 std::tie(Screen.Width, Screen.Height) = GetDesktopRes();
39
40 if (IsEnhanced())
41 {
42 bSkipIntro = false;
43 }
44
45 auto exePath = GetExeModulePath();
46
47 mINI::INIStructure ini;
48 mINI::INIFile mIni(iniReader.GetIniPath());
49 mIni.read(ini);
50
51 auto userIniPath = exePath / "SplinterCellUser.ini";
52
53 // Read the existing user INI file into a structure
54 mINI::INIStructure userIni;
55 mINI::INIFile userIniFile(userIniPath);
56 userIniFile.read(userIni);
57
58 if (ini.has("Engine.Input"))
59 {
60 for (auto const& kv : ini["Engine.Input"])
61 {
62 std::string key = std::get<0>(kv);
63 std::string value = std::get<1>(kv);
64 userIni["Engine.Input"].setAll(key, value);
65 }
66 }
67 userIni["Engine.EPCGameOptions"]["Resolution"] = std::to_string(Screen.Width) + "x" + std::to_string(Screen.Height);
68 userIniFile.generate(userIni);
69
70 auto gameIniPath = exePath / "SplinterCell.ini";
71 CIniReader iniWriter(gameIniPath);
72 iniWriter.WriteInteger("WinDrv.WindowsClient", "WindowedViewportX", Screen.Width);
73 iniWriter.WriteInteger("WinDrv.WindowsClient", "WindowedViewportY", Screen.Height);

Callers

nothing calls this directly

Calls 6

GetDesktopResFunction · 0.85
GetExeModulePathFunction · 0.85
GetResolutionsListFunction · 0.85
c_strMethod · 0.80
ParseWidescreenHudOffsetFunction · 0.50
emptyMethod · 0.45

Tested by

no test coverage detected