init
This commit is contained in:
38
TempleWare-CS2/source/templeware/utils/module/module.cpp
Normal file
38
TempleWare-CS2/source/templeware/utils/module/module.cpp
Normal file
@@ -0,0 +1,38 @@
|
||||
#include "module.h"
|
||||
#include <Windows.h>
|
||||
|
||||
Module::Module(uintptr_t moduleAddress, const std::string &moduleName) : address(moduleAddress), name(moduleName) {}
|
||||
|
||||
void Modules::init() {
|
||||
registerModule("client.dll", "client");
|
||||
registerModule("scenesystem.dll", "scenesystem");
|
||||
registerModule("particles.dll", "particles");
|
||||
registerModule("materialsystem2.dll", "materialsystem2");
|
||||
registerModule("tier0.dll", "tier0");
|
||||
registerModule("engine2.dll", "engine2");
|
||||
}
|
||||
|
||||
// Completely acceptable solution because there simply just aren't that many modules :)
|
||||
uintptr_t Modules::getModule(const std::string &moduleName) {
|
||||
for (const Module &m : modules) {
|
||||
if (m.name == moduleName) {
|
||||
return m.address;
|
||||
}
|
||||
}
|
||||
// No module found
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool Modules::registerModule(const std::string &aModuleName, const std::string &moduleName) {
|
||||
uintptr_t moduleHandle = reinterpret_cast<uintptr_t>(GetModuleHandle(aModuleName.c_str()));
|
||||
|
||||
if (!moduleHandle)
|
||||
return false;
|
||||
|
||||
Module module(moduleHandle, moduleName);
|
||||
modules.emplace_back(module);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Modules modules;
|
||||
28
TempleWare-CS2/source/templeware/utils/module/module.h
Normal file
28
TempleWare-CS2/source/templeware/utils/module/module.h
Normal file
@@ -0,0 +1,28 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
// Class names might be too broad ngl -- just namespace them if someones ever really cares
|
||||
class Module {
|
||||
public:
|
||||
Module(uintptr_t moduleAddress, const std::string &moduleName);
|
||||
|
||||
uintptr_t address;
|
||||
std::string name;
|
||||
};
|
||||
|
||||
class Modules {
|
||||
public:
|
||||
void init();
|
||||
|
||||
uintptr_t getModule(const std::string &moduleName);
|
||||
private:
|
||||
// example usage: registerModule("client.dll", "client")
|
||||
bool registerModule(const std::string &aModuleName, const std::string &moduleName);
|
||||
|
||||
std::vector<Module> modules;
|
||||
};
|
||||
|
||||
// We luv global state
|
||||
extern Modules modules;
|
||||
Reference in New Issue
Block a user