// dllmain.cpp : Определяет точку входа для приложения DLL.
#include "pch.h"
#include "patcher_x86.hpp"
#include "era.h"
#pragma warning( disable : 4996)
using namespace Era;
Patcher* globalPatcher;
// Читаем конфигурационный файл и проходимся по списку патчей.
void __stdcall ReadINI_AndRemove(TEvent* e)
{
    // Основной буфер.
    char buf[30];
    // Узнаем количество патчей, которые необходимо удалить.
    ReadStrFromIni("Count", "Main", "Pointer List.ini", buf);
    // Превращаем строку в число.
    int count = atoi(buf);
    // Если количество больше нуля.
    if (count > 0)
    {
        // Имя ключа.
        char name[30];
        // Цикл, в котором производится перебор всех адресов.
        for (size_t i = 0; i < count; i++)
        {
            // Собираем имя ключа из текста и индекса.
            sprintf(name, "Pointer%d", i);
            // Читаем строку.
            ReadStrFromIni(name, "Main", "Pointer List.ini", buf);
            // Превращаем в число.
            int adress = atoi(buf);
            // Если адрес действительный.
            if (adress > 0x400000)
            {
                // Удаляем все патчи.
                globalPatcher->UndoAllAt(adress);
            }
        }
    }
}
BOOL APIENTRY DllMain(HMODULE hModule,
    DWORD  ul_reason_for_call,
    LPVOID lpReserved
)
{
    if (ul_reason_for_call == DLL_PROCESS_ATTACH)
    {
        globalPatcher = GetPatcher();
        ConnectEra();
        // Читаем конфигурационный файл и проходимся по списку патчей.
        RegisterHandler(ReadINI_AndRemove, "OnAfterCreateWindow");
        /*case :
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;*/
    }
    return TRUE;
}