-
Notifications
You must be signed in to change notification settings - Fork 32
/
dllmain.cpp
141 lines (100 loc) · 3.11 KB
/
dllmain.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <iostream>
#include <fstream>
#include "dllmain.h"
#include "AutoUpdater.h"
#include "ConsoleWnd.h"
#include "Settings.h"
#include "Game.h"
#include "input.hpp"
#include "gitparams.h"
#include "resource.h"
#include "Trainer.h"
#include "UI_DebugWindows.h"
#include "../wrappers/wrappers.h"
HMODULE g_module_handle = nullptr;
void Init_Main()
{
con.log("Big ironic thanks to QLOC S.A.");
// Get game pointers and version info
if (!re4t::init::Game())
return;
// Make sure steam_appid.txt exists
if (!std::filesystem::exists("steam_appid.txt") && std::filesystem::exists("bio4.exe"))
{
std::ofstream appid("steam_appid.txt");
appid << "254700";
appid.close();
}
// Initial logging
std::string commit = GIT_CUR_COMMIT;
commit.resize(8);
spd::log()->info("Starting re4_tweaks v{0}-{1}-{2}", APP_VERSION, commit, GIT_BRANCH);
spd::LogProcessNameAndPID();
spd::log()->info("Running from: \"{}\"", WstrToStr(rootPath));
spd::log()->info("Game version: {}", GameVersion());
// Detected if the HD Project is being used and apply changes needed by it
const std::string bio4Path = std::filesystem::canonical(rootPath).parent_path().string() + "\\BIO4\\";
const std::string doorse012_xsb_path = bio4Path + "snd\\doorse012.xsb";
const std::string doorse012_xwb_path = bio4Path + "snd\\doorse012.xwb";
if (std::filesystem::exists(doorse012_xsb_path) && std::filesystem::exists(doorse012_xwb_path))
{
#ifdef VERBOSE
con.log("RE4 HD Project detected");
#endif
spd::log()->info("RE4 HD Project detected");
re4t::cfg->bIsUsingHDProject = true;
re4t::init::HDProject();
}
// Init input-related hooks and populate keymap (needed before we ReadSettings(), otherwise, parsing hotkeys will fail)
pInput->init();
// Read re4_tweaks settings
re4t::cfg->ReadSettings();
// Log re4_tweaks settings
re4t::cfg->LogSettings();
// Parse any special command-line options
re4t::init::CommandLine();
// Init game/re4t log window
re4t::init::ConsoleWnd();
// Check for re4_tweaks updates
CreateThreadAutoClose(0, 0, (LPTHREAD_START_ROUTINE)&updateCheck, NULL, 0, NULL);
// Various display-related tweaks
re4t::init::DisplayTweaks();
re4t::init::AudioTweaks();
re4t::init::CameraTweaks();
re4t::init::KeyboardMouseTweaks();
re4t::init::ControllerTweaks();
// Install a WndProc hook and register the resulting hWnd for input
re4t::init::WndProcHook();
// Increase some game limits
re4t::init::HandleLimits();
// QTE-related changes
re4t::init::QTEfixes();
// Fixes FPS-related issues
re4t::init::FrameRateFixes();
re4t::init::HUDTweaks();
re4t::init::Gameplay();
re4t::init::Misc();
if (re4t::cfg->bEnableModExpansion)
re4t::init::ModExpansion();
re4t::init::MathReimpl();
re4t::init::DebugDisplay();
re4t::init::TitleMenu();
Trainer_Init();
}
// Dll main function
bool APIENTRY DllMain(HMODULE hModule, DWORD fdwReason, LPVOID lpReserved)
{
UNREFERENCED_PARAMETER(lpReserved);
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
g_module_handle = hModule;
Init_Wrappers();
re4t::init::ExceptionHandler();
Init_Main();
break;
case DLL_PROCESS_DETACH:
break;
}
return true;
}