aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBDKPlayer <fabian.stotz@yahoo.de>2020-04-10 17:54:48 +0200
committerBDKPlayer <fabian.stotz@yahoo.de>2020-04-10 17:54:48 +0200
commit8fc311eaba0bc23a2b4cfbbd7882d2385710e234 (patch)
treee2e59e86f4dea000b71746042915321943fe952c
parent5b7e11032b3e3870c3f5919e0d65927e95bbb31b (diff)
Added Config system to save/load settings
-rw-r--r--AoE_imgui_DE.vcxproj10
-rw-r--r--AoE_imgui_DE.vcxproj.filters16
-rw-r--r--CastleManager.cpp40
-rw-r--r--CastleManager.h5
-rw-r--r--Config.cpp75
-rw-r--r--Config.h41
-rw-r--r--Core.cpp15
-rw-r--r--Debug.cpp13
-rw-r--r--ESP.cpp29
-rw-r--r--ESP.h4
-rw-r--r--Engine.cpp48
-rw-r--r--Engine.h2
-rw-r--r--Feature.cpp10
-rw-r--r--Feature.h2
-rw-r--r--FeatureManager.cpp16
-rw-r--r--FeatureManager.h2
-rw-r--r--MinimapText.cpp24
-rw-r--r--MinimapText.h2
-rw-r--r--OneVsOne.cpp26
-rw-r--r--OneVsOne.h13
20 files changed, 365 insertions, 28 deletions
diff --git a/AoE_imgui_DE.vcxproj b/AoE_imgui_DE.vcxproj
index 7bf3cfa..4b8491a 100644
--- a/AoE_imgui_DE.vcxproj
+++ b/AoE_imgui_DE.vcxproj
@@ -44,7 +44,7 @@
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
+ <CharacterSet>NotSet</CharacterSet>
<InterproceduralOptimization>false</InterproceduralOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
@@ -106,6 +106,7 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;_WINDOWS;_USRDLL;AoE_imgui_DE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -138,6 +139,7 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>NDEBUG;_WINDOWS;_USRDLL;AoE_imgui_DE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -149,6 +151,7 @@
<ItemGroup>
<ClInclude Include="CastleManager.h" />
<ClInclude Include="Classes.h" />
+ <ClInclude Include="Config.h" />
<ClInclude Include="Core.h" />
<ClInclude Include="CustomLoadingScreen.h" />
<ClInclude Include="Debug.h" />
@@ -168,8 +171,8 @@
<ClInclude Include="MidfunctionHook.h" />
<ClInclude Include="MinimapText.h" />
<ClInclude Include="Offsets.h" />
+ <ClInclude Include="OneVsOne.h" />
<ClInclude Include="Patcher.h" />
- <ClInclude Include="PauseManager.h" />
<ClInclude Include="RelicManager.h" />
<ClInclude Include="Renderer.h" />
<ClInclude Include="ResourceInformation.h" />
@@ -180,6 +183,7 @@
</ItemGroup>
<ItemGroup>
<ClCompile Include="CastleManager.cpp" />
+ <ClCompile Include="Config.cpp" />
<ClCompile Include="Core.cpp" />
<ClCompile Include="CustomLoadingScreen.cpp" />
<ClCompile Include="Debug.cpp" />
@@ -196,8 +200,8 @@
<ClCompile Include="MidfunctionHook.cpp" />
<ClCompile Include="MinimapText.cpp" />
<ClCompile Include="Offsets.cpp" />
+ <ClCompile Include="OneVsOne.cpp" />
<ClCompile Include="Patcher.cpp" />
- <ClCompile Include="PauseManager.cpp" />
<ClCompile Include="RelicManager.cpp" />
<ClCompile Include="Renderer.cpp" />
<ClCompile Include="ResourceInformation.cpp" />
diff --git a/AoE_imgui_DE.vcxproj.filters b/AoE_imgui_DE.vcxproj.filters
index ce84dd8..01a3a28 100644
--- a/AoE_imgui_DE.vcxproj.filters
+++ b/AoE_imgui_DE.vcxproj.filters
@@ -117,15 +117,18 @@
<ClInclude Include="Debug.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="PauseManager.h">
- <Filter>Header Files\Feature</Filter>
- </ClInclude>
<ClInclude Include="CastleManager.h">
<Filter>Header Files\Feature</Filter>
</ClInclude>
<ClInclude Include="ThreadsafeQueue.h">
<Filter>Header Files</Filter>
</ClInclude>
+ <ClInclude Include="OneVsOne.h">
+ <Filter>Header Files\Feature</Filter>
+ </ClInclude>
+ <ClInclude Include="Config.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="imgui\imgui.cpp">
@@ -194,11 +197,14 @@
<ClCompile Include="Debug.cpp">
<Filter>Source Files\Feature</Filter>
</ClCompile>
- <ClCompile Include="PauseManager.cpp">
+ <ClCompile Include="CastleManager.cpp">
<Filter>Source Files\Feature</Filter>
</ClCompile>
- <ClCompile Include="CastleManager.cpp">
+ <ClCompile Include="OneVsOne.cpp">
<Filter>Source Files\Feature</Filter>
</ClCompile>
+ <ClCompile Include="Config.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/CastleManager.cpp b/CastleManager.cpp
index 0ffedf7..373d6e5 100644
--- a/CastleManager.cpp
+++ b/CastleManager.cpp
@@ -6,15 +6,33 @@
#include "Engine.h"
#include "SDK.h"
#include "Renderer.h"
+#include "Config.h"
bool warningEnabled = true;
-bool warnTeam = false;
-bool warnAll = false;
int notification = 0;
ThreadSafeQueue<std::string> teamMessages;
ThreadSafeQueue<std::string> allMessages;
+void CastleManager::LoadConfig()
+{
+ Config* config = Config::Get();
+ notification = config->ReadInt("CastleManager", "notification");
+ warningEnabled = config->ReadInt("CastleManager", "warningEnabled");
+}
+
+void CastleManager::SaveConfig()
+{
+ Config* config = Config::Get();
+ config->Write<int>("CastleManager", "warningEnabled", warningEnabled);
+ config->Write<int>("CastleManager", "notification", notification);
+}
+
+void CastleManager::OnUnitIteration(Unit* unit, Player* player, int playerIndex)
+{
+
+}
+
void CastleManager::OnUnitCreated(Unit* unit)
{
if (!warningEnabled)
@@ -76,4 +94,20 @@ void CastleManager::OnMenuMainWindow()
ImGui::SameLine();
ImGui::RadioButton("All", &notification, 2);
ImGui::Separator();
-} \ No newline at end of file
+}
+
+void CastleManager::OnDraw()
+{
+ /*if (strcmp("CSTL", unit->pUnitData->name) == 0)
+ {
+ Vector2 screenPos = Engine::Get()->worldToScreen(unit->position);
+ int screenResX = Engine::Get()->GetMainScreen()->pGameScreen->ScreenResX;
+ int screenResY = Engine::Get()->GetMainScreen()->pGameScreen->ScreenResY;
+ Renderer::Get()->RenderLine(ImVec2(screenResX / 2, screenResY / 2), ImVec2(screenPos.x, screenPos.y), 0xffffffff, 2);
+ }*/
+}
+
+void CastleManager::OnPlayerIteration(Player* player, int playerIndex)
+{
+
+}
diff --git a/CastleManager.h b/CastleManager.h
index 616faa2..9d151d7 100644
--- a/CastleManager.h
+++ b/CastleManager.h
@@ -5,6 +5,11 @@
class CastleManager : public Feature
{
//Callbacks
+ void LoadConfig() override;
+ void SaveConfig() override;
+ void OnUnitIteration(Unit* unit, Player* player, int playerIndex) override;
void OnUnitCreated(Unit* unit) override;
void OnMenuMainWindow() override;
+ void OnDraw() override;
+ void OnPlayerIteration(Player* player, int playerIndex) override;
}; \ No newline at end of file
diff --git a/Config.cpp b/Config.cpp
new file mode 100644
index 0000000..bcb5939
--- /dev/null
+++ b/Config.cpp
@@ -0,0 +1,75 @@
+#include "Config.h"
+
+#include <Windows.h>
+
+#include <iostream>
+#include <fstream>
+
+#include "Shlobj.h"
+#include "Shlobj_core.h"
+
+
+Config* Config::instance = NULL;
+
+
+std::filesystem::path Config::GetConfigPath()
+{
+ TCHAR szPath[MAX_PATH];
+ SHGetFolderPath(nullptr, CSIDL_APPDATA, nullptr, 0, szPath);
+ std::filesystem::path path = std::filesystem::path(szPath);
+ path.append("AoE2DE_imgui");
+ return path;
+}
+
+Config::Config()
+{
+ std::filesystem::path path = GetConfigPath();
+
+ //create directory if it doesn't exist
+ CreateDirectoryA(GetConfigPath().string().c_str(), NULL);
+
+ //create config.ini if doesn't exist
+ std::ofstream configFile;
+ path.append("config.ini");
+ configFile.open(path.c_str(), std::fstream::app);
+}
+
+std::filesystem::path Config::GetConfigFilePath()
+{
+ std::filesystem::path path = GetConfigPath();
+ path.append("config.ini");
+ return path;
+}
+
+float Config::ReadFloat(std::string feature, std::string settingsName)
+{
+ char buffer[256];
+ int read = GetPrivateProfileString(feature.c_str(), settingsName.c_str(), NULL, buffer, 256, GetConfigFilePath().string().c_str());
+ if (!read)
+ {
+ printf("Failed to read config: %s->%s\n", feature.c_str(), settingsName.c_str());
+ }
+ return std::stof(buffer);
+}
+
+int Config::ReadInt(std::string feature, std::string settingsName)
+{
+ char buffer[256];
+ int read = GetPrivateProfileString(feature.c_str(), settingsName.c_str(), NULL, buffer, 256, GetConfigFilePath().string().c_str());
+ if (!read)
+ {
+ printf("Failed to read config: %s->%s\n", feature.c_str(), settingsName.c_str());
+ }
+ return std::stoi(buffer);
+}
+
+std::string Config::ReadString(std::string feature, std::string settingsName)
+{
+ char buffer[256];
+ int read = GetPrivateProfileString(feature.c_str(), settingsName.c_str(), NULL, buffer, 256, GetConfigFilePath().string().c_str());
+ if (!read)
+ {
+ printf("Failed to read config: %s->%s\n", feature.c_str(), settingsName.c_str());
+ }
+ return std::string(buffer);
+} \ No newline at end of file
diff --git a/Config.h b/Config.h
new file mode 100644
index 0000000..1fd994b
--- /dev/null
+++ b/Config.h
@@ -0,0 +1,41 @@
+#pragma once
+#include <filesystem>
+#include <string>
+
+
+class Config
+{
+ static Config* instance;
+
+ Config();
+public:
+
+ static Config* Get()
+ {
+ if (!instance)
+ {
+ instance = new Config();
+ }
+ return instance;
+ }
+
+ std::filesystem::path GetConfigPath();
+ std::filesystem::path GetConfigFilePath();
+
+
+ template <class T>
+ void Write(std::string feature, std::string settingsName, T value)
+ {
+ if (!WritePrivateProfileString(feature.c_str(), settingsName.c_str(), std::to_string(value).c_str(), GetConfigFilePath().string().c_str()))
+ {
+ printf("Failed to write config: %s->%s\n", feature.c_str(), settingsName.c_str());
+ }
+ }
+
+ float ReadFloat(std::string feature, std::string settingsName);
+
+ int ReadInt(std::string feature, std::string settingsName);
+
+
+ std::string ReadString(std::string feature, std::string settingsName);
+};
diff --git a/Core.cpp b/Core.cpp
index c9591b4..3f6413b 100644
--- a/Core.cpp
+++ b/Core.cpp
@@ -22,7 +22,7 @@
#include "RelicManager.h"
#include "CustomLoadingScreen.h"
#include "Debug.h"
-#include "PauseManager.h"
+//#include "PauseManager.h"
MidfunctionHook onGameStartHook = MidfunctionHook();
MidfunctionHook onTurnHook = MidfunctionHook();
@@ -260,7 +260,7 @@ void Core::OnPresent()
ImGui::Text("Localplayer %p", Engine::Get()->GetLocalPlayer());
ImGui::Text("PlayerArray %p", playerArray);
ImGui::Text("totalPlayers %d", totalPlayers);
- ImGui::Text("ScreenPos %f %f %f", mainScreen->pGameScreen->pMainView->ScreenPosX, mainScreen->pGameScreen->pMainView->ScreenPosY, mainScreen->pGameScreen->pMainView->ScreenPosZ);
+ ImGui::Text("ScreenPos %p %f %f %f", mainScreen->pGameScreen->pMainView, mainScreen->pGameScreen->pMainView->ScreenPosX, mainScreen->pGameScreen->pMainView->ScreenPosY, mainScreen->pGameScreen->pMainView->ScreenPosZ);
ImGui::TreePop();
}
ImGui::Separator();
@@ -277,6 +277,17 @@ void Core::OnPresent()
FeatureManager::Get()->OnMenuMainWindow();
ImGui::Separator();
ImGui::Checkbox("Skip localplayer", &skipLocalplayer);
+ ImGui::Separator();
+ ImGui::Separator();
+ if(ImGui::Button("Save Config"))
+ {
+ FeatureManager::Get()->SaveConfig();
+ }
+ ImGui::SameLine();
+ if (ImGui::Button("Load Config"))
+ {
+ FeatureManager::Get()->LoadConfig();
+ }
}
}
__finally
diff --git a/Debug.cpp b/Debug.cpp
index ad1091f..d08dc94 100644
--- a/Debug.cpp
+++ b/Debug.cpp
@@ -11,15 +11,16 @@ void Debug::OnInitialise()
}
void Debug::OnMenuMainWindow()
{
+ int idleUnits = 0;
+
+ PlayerArray* playerArray = Engine::Get()->GetPlayerArray();
+
ImGui::Separator();
ImGui::Text("Debug");
- if (ImGui::Button("SendChat"))
- {
- Engine::Get()->SendChat("Testmessage", true);
- }
- if (ImGui::Button("SendChat2"))
+ //ImGui::Text("Idle: %d", idleUnit);
+ if (ImGui::Button("Flare"))
{
- Engine::Get()->SendChat("Testmessage2", false);
+ Engine::Get()->Flare(100.f, 100.f);
}
ImGui::Separator();
}
diff --git a/ESP.cpp b/ESP.cpp
index f08ce8c..adfb2af 100644
--- a/ESP.cpp
+++ b/ESP.cpp
@@ -6,6 +6,8 @@
#include <math.h>
+#include "Config.h"
+
uint32_t ESP::colors_hex[8] = { 0xff0000ff, 0xffff0000,0xff00ff00,0xffffff00,0xff00ffff,0xffff00ff,0xffffffff,0xffffb400 };
void ESP::DrawBox(Unit* unit, int32_t color, bool drawName = false)
@@ -108,6 +110,27 @@ void ESP::DrawCircle(Unit* unit, int radius, int32_t color, int smoothness = 16,
}
}
+void ESP::LoadConfig()
+{
+ Config* config = Config::Get();
+ siegeImpactLocation = config->ReadInt("ESP", "siegeImpactLocation");
+ trebuchetESP = config->ReadInt("ESP", "trebuchetESP");
+ gaiaESP = config->ReadInt("ESP", "gaiaESP");
+ goldESP = config->ReadInt("ESP", "goldESP");
+ stoneESP = config->ReadInt("ESP", "stoneESP");
+}
+
+void ESP::SaveConfig()
+{
+ Config* config = Config::Get();
+ config->Write<int>("ESP", "siegeImpactLocation", siegeImpactLocation);
+ config->Write<int>("ESP", "trebuchetESP", trebuchetESP);
+ config->Write<int>("ESP", "gaiaESP", gaiaESP);
+ config->Write<int>("ESP", "goldESP", goldESP);
+ config->Write<int>("ESP", "stoneESP", stoneESP);
+}
+
+
void ESP::OnUnitIteration(Unit* unit, Player* player, int playerIndex)
{
if (playerUnitEsp[playerIndex])
@@ -194,7 +217,7 @@ void ESP::OnMenuPlayerTreenode(Player* player, int playerIndex)
void ESP::OnNeutralUnit(Unit* unit)
{
- if (gaiaEsp || goldESP || stoneESP)
+ if (gaiaESP || goldESP || stoneESP)
{
std::string unitName = unit->pUnitData->name;
Vector2 screenPos = Engine::Get()->worldToScreen(unit);
@@ -215,7 +238,7 @@ void ESP::OnNeutralUnit(Unit* unit)
return;
}
- if (!gaiaEsp)
+ if (!gaiaESP)
{
return;
}
@@ -281,7 +304,7 @@ void ESP::OnMenuMainWindow()
ImGui::Checkbox("Trebuchet range", &trebuchetESP);
ImGui::Separator();
ImGui::Text("Resource ESP");
- ImGui::Checkbox("Gaia##ESP", &gaiaEsp);
+ ImGui::Checkbox("Gaia##ESP", &gaiaESP);
ImGui::SameLine();
ImGui::Checkbox("Gold##ESP", &goldESP);
ImGui::SameLine();
diff --git a/ESP.h b/ESP.h
index be66fb5..21699de 100644
--- a/ESP.h
+++ b/ESP.h
@@ -5,7 +5,7 @@ struct Vector2;
struct Vector3;
class ESP : public Feature
{
- bool gaiaEsp = true;
+ bool gaiaESP = true;
bool goldESP = true;
bool stoneESP = true;
bool trebuchetESP = true;
@@ -21,6 +21,8 @@ class ESP : public Feature
static uint32_t colors_hex[8];
//Callbacks
+ void LoadConfig() override;
+ void SaveConfig() override;
void OnUnitIteration(Unit* unit, Player* player, int playerIndex) override;
void OnMenuPlayerTreenode(Player* player, int playerIndex) override;
void OnNeutralUnit(Unit* unit) override;
diff --git a/Engine.cpp b/Engine.cpp
index 8bb4575..94019c8 100644
--- a/Engine.cpp
+++ b/Engine.cpp
@@ -128,24 +128,53 @@ ImVec4 Engine::GetPlayerColorImGUI(int colorIndex) const
return color;
}
+Player* Engine::GetPlayer(int index) const
+{
+ const int totalPlayers = GetTotalPlayers();
+ if (index > totalPlayers)
+ {
+ return nullptr;
+ }
+
+ MainScreen* mainScreen = GetMainScreen();
+ if (!mainScreen)
+ {
+ return nullptr;
+ }
+
+ World* main = GetWorld();
+ if (!main)
+ {
+ return nullptr;
+ }
+
+ PlayerArray* playerArray = main->pPlayerArray;
+ if (!playerArray)
+ {
+ return nullptr;
+ }
+
+ return playerArray->playerData[index].player;
+}
+
Player* Engine::GetPlayerByName(char* playerName) const
{
MainScreen* mainScreen = GetMainScreen();
if (!mainScreen)
{
- return NULL;
+ return nullptr;
}
World* main = GetWorld();
if (!main)
{
- return NULL;
+ return nullptr;
}
PlayerArray* playerArray = main->pPlayerArray;
if (!playerArray)
{
- return NULL;
+ return nullptr;
}
int totalPlayers = GetTotalPlayers();
@@ -161,7 +190,7 @@ Player* Engine::GetPlayerByName(char* playerName) const
return player;
}
}
- return NULL;
+ return nullptr;
}
Player* Engine::GetLocalPlayer() const
@@ -214,4 +243,13 @@ void Engine::PrintBottomNotification(const char* message, unsigned int hexcolor)
typedef void(__fastcall* tPrintBottomText) (GameScreen* AVGameScreen, const char* message, unsigned int hexcolor, int64_t unused);
static tPrintBottomText fPrintBottomText = (tPrintBottomText)(base + Offsets::printBottomText);
fPrintBottomText(GetMainScreen()->pGameScreen, message, hexcolor, 0xffffffffffffffff); //Color format: RBGA
-} \ No newline at end of file
+}
+
+int64_t Engine::Flare(float xPos, float yPos) const
+{
+ typedef __int64(__fastcall* tCreateFlare) (Player* player, __int64 hundert12, __int64 zero1, __int64 zero2, float xPos, float yPos, int64_t zero3, int64_t zero4);
+ static tCreateFlare fCreateFlare = (tCreateFlare)(base + 0xc31270);
+
+ return fCreateFlare(GetLocalPlayer(), 0x112, 0, 0, 220.f, 220.f, 0, 0);
+ //__usercall fhsCreateFlare_MAYBE_7FF718CF1270@<rax>( __int64 a3_zero@<r8>, __int64 a4_zero@<r9>, float xPos@<xmm2>, float yPos@<xmm3>, __int64 a5_zero, int a6_Zero)
+}
diff --git a/Engine.h b/Engine.h
index 5ec6cd4..ad48249 100644
--- a/Engine.h
+++ b/Engine.h
@@ -37,6 +37,7 @@ public:
uint32_t GetPlayerColor(int colorIndex) const;
ImVec4 GetPlayerColorImGUI(int colorIndex) const;
+ Player* GetPlayer(int index) const;
Player* GetPlayerByName(char* playername) const;
Player* GetLocalPlayer() const;
@@ -44,4 +45,5 @@ public:
void SendChat(const char* message, bool teamchat = false) const;
void PrintNotification(const char* message) const;
void PrintBottomNotification(const char* message, unsigned int hexcolor) const;
+ int64_t Flare(float xPos, float yPos) const;
}; \ No newline at end of file
diff --git a/Feature.cpp b/Feature.cpp
index 9c49ea4..325e8b9 100644
--- a/Feature.cpp
+++ b/Feature.cpp
@@ -1,5 +1,15 @@
#include "Feature.h"
+void Feature::LoadConfig()
+{
+
+}
+
+void Feature::SaveConfig()
+{
+
+}
+
void Feature::OnInitialise()
{
diff --git a/Feature.h b/Feature.h
index cddad12..c1f65b5 100644
--- a/Feature.h
+++ b/Feature.h
@@ -9,6 +9,8 @@ class Feature
protected:
bool enabled = true;
public:
+ virtual void LoadConfig();
+ virtual void SaveConfig();
virtual void OnInitialise();
virtual void OnGameStart();
virtual void OnTurn();
diff --git a/FeatureManager.cpp b/FeatureManager.cpp
index 539f010..8d9b71f 100644
--- a/FeatureManager.cpp
+++ b/FeatureManager.cpp
@@ -27,6 +27,22 @@ void FeatureManager::RegisterFeature(Feature* feature)
features.push_back(feature);
}
+void FeatureManager::LoadConfig()
+{
+ for (Feature* feature : features)
+ {
+ feature->LoadConfig();
+ }
+}
+
+void FeatureManager::SaveConfig()
+{
+ for (Feature* feature : features)
+ {
+ feature->SaveConfig();
+ }
+}
+
void FeatureManager::OnInitialise()
{
for (Feature* feature : features)
diff --git a/FeatureManager.h b/FeatureManager.h
index 6481150..7868507 100644
--- a/FeatureManager.h
+++ b/FeatureManager.h
@@ -18,6 +18,8 @@ public:
void RegisterFeature(Feature* feature);
//Callbacks
+ void LoadConfig();
+ void SaveConfig();
void OnInitialise();
void OnGameStart();
void OnTurn();
diff --git a/MinimapText.cpp b/MinimapText.cpp
index b48fe65..7638b4e 100644
--- a/MinimapText.cpp
+++ b/MinimapText.cpp
@@ -11,6 +11,8 @@
#include <map>
+#include "Config.h"
+
#pragma warning( disable : 4244 )
MidfunctionHook minimapHook;
@@ -74,6 +76,28 @@ void __fastcall minimapProxy(Registers* registers)
MidfunctionHook::OverwriteRegister(registers->rsp, Register::RDI, (int64_t)newName.c_str());
}
+void MinimapText::LoadConfig()
+{
+ Config* config = Config::Get();
+ *hookEnabled = config->ReadInt("MinimapText", "hookEnabled");
+ displayWood = config->ReadInt("MinimapText", "displayWood");
+ displayFood = config->ReadInt("MinimapText", "displayFood");
+ displayGold = config->ReadInt("MinimapText", "displayGold");
+ displayStone = config->ReadInt("MinimapText", "displayStone");
+ displayPopulation = config->ReadInt("MinimapText", "displayPopulation");
+}
+
+void MinimapText::SaveConfig()
+{
+ Config* config = Config::Get();
+ config->Write<int>("MinimapText", "hookEnabled", *hookEnabled);
+ config->Write<int>("MinimapText", "displayWood", displayWood);
+ config->Write<int>("MinimapText", "displayFood", displayFood);
+ config->Write<int>("MinimapText", "displayGold", displayGold);
+ config->Write<int>("MinimapText", "displayStone", displayStone);
+ config->Write<int>("MinimapText", "displayPopulation", displayPopulation);
+}
+
void MinimapText::OnInitialise()
{
hookEnabled = &enabled;
diff --git a/MinimapText.h b/MinimapText.h
index 5bc376a..e21c00e 100644
--- a/MinimapText.h
+++ b/MinimapText.h
@@ -5,6 +5,8 @@ class DetourHook64;
class MinimapText : public Feature
{
//Callbacks
+ void LoadConfig() override;
+ void SaveConfig() override;
void OnInitialise() override;
void OnMenuMainWindow() override;
void OnShutdown() override;
diff --git a/OneVsOne.cpp b/OneVsOne.cpp
new file mode 100644
index 0000000..8b87d65
--- /dev/null
+++ b/OneVsOne.cpp
@@ -0,0 +1,26 @@
+#include "OneVsOne.h"
+
+void OneVsOne::OnDraw()
+{
+
+}
+
+void OneVsOne::OnUnitIteration(Unit* unit, Player* player, int playerIndex)
+{
+
+}
+
+void OneVsOne::OnMenuPlayerTreenode(Player* player, int playerIndex)
+{
+
+}
+
+void OneVsOne::OnNeutralUnit(Unit* unit)
+{
+
+}
+
+void OneVsOne::OnMenuMainWindow()
+{
+
+} \ No newline at end of file
diff --git a/OneVsOne.h b/OneVsOne.h
new file mode 100644
index 0000000..4c4d95f
--- /dev/null
+++ b/OneVsOne.h
@@ -0,0 +1,13 @@
+#pragma once
+#pragma once
+#include "Feature.h"
+
+class OneVsOne : public Feature
+{
+ //Callbacks
+ void OnDraw() override;
+ void OnUnitIteration(Unit* unit, Player* player, int playerIndex) override;
+ void OnMenuPlayerTreenode(Player* player, int playerIndex) override;
+ void OnNeutralUnit(Unit* unit) override;
+ void OnMenuMainWindow() override;
+}; \ No newline at end of file