From 8dadef4ccc5bc4fee98f5f6eda33afaeab9a97ee Mon Sep 17 00:00:00 2001
From: CCHyper <73803386+CCHyper@users.noreply.github.com>
Date: Wed, 9 Mar 2022 00:08:47 +0000
Subject: [PATCH] Moves issue-#8 to MultiMission.
---
src/bugfix/bugfix_hooks.cpp | 16 ------
src/extensions/ext_hooks.cpp | 2 +
.../multimission/multimissionext_hooks.cpp | 51 +++++++++++++++++++
.../multimission/multimissionext_hooks.h | 31 +++++++++++
4 files changed, 84 insertions(+), 16 deletions(-)
create mode 100644 src/extensions/multimission/multimissionext_hooks.cpp
create mode 100644 src/extensions/multimission/multimissionext_hooks.h
diff --git a/src/bugfix/bugfix_hooks.cpp b/src/bugfix/bugfix_hooks.cpp
index c79c28041..e3e5fab12 100644
--- a/src/bugfix/bugfix_hooks.cpp
+++ b/src/bugfix/bugfix_hooks.cpp
@@ -49,21 +49,6 @@
#include "hooker_macros.h"
-/**
- * #issue-8
- *
- * Fixes MultiMission "MaxPlayers" incorrectly loaded with "MinPlayers".
- *
- * @author: CCHyper
- */
-static void _MultiMission_Constructor_MaxPlayers_Typo_Patch()
-{
- static const char *TEXT_MAXPLAYERS = "MaxPlayers";
- Patch_Dword(0x005EF124+1, (uintptr_t)TEXT_MAXPLAYERS); // +1 skips "push" opcode
- Patch_Dword(0x005EF5E4+1, (uintptr_t)TEXT_MAXPLAYERS); // +1 skips "push" opcode
-}
-
-
/**
* Scale up the input rect to the desired width and height, while maintaining the aspect ratio.
*
@@ -377,5 +362,4 @@ void BugFix_Hooks()
_Intro_Movie_Patches();
_Dont_Stretch_Main_Menu_Video_Patch();
_Scale_Movies_By_Ratio_Patch();
- _MultiMission_Constructor_MaxPlayers_Typo_Patch();
}
diff --git a/src/extensions/ext_hooks.cpp b/src/extensions/ext_hooks.cpp
index 4c2a073c6..8626b84bc 100644
--- a/src/extensions/ext_hooks.cpp
+++ b/src/extensions/ext_hooks.cpp
@@ -105,6 +105,7 @@
#include "mapseedext_hooks.h"
#include "multiscoreext_hooks.h"
+#include "multimissionext_hooks.h"
#include "cciniext_hooks.h"
@@ -205,6 +206,7 @@ void Extension_Hooks()
MapSeedClassExtension_Hooks();
MultiScoreExtension_Hooks();
+ MultiMissionExtension_Hooks();
CCINIClassExtension_Hooks();
diff --git a/src/extensions/multimission/multimissionext_hooks.cpp b/src/extensions/multimission/multimissionext_hooks.cpp
new file mode 100644
index 000000000..83b0fe66a
--- /dev/null
+++ b/src/extensions/multimission/multimissionext_hooks.cpp
@@ -0,0 +1,51 @@
+/*******************************************************************************
+/* O P E N S O U R C E -- V I N I F E R A **
+/*******************************************************************************
+ *
+ * @project Vinifera
+ *
+ * @file MULTIMISSIONEXT_HOOKS.CPP
+ *
+ * @author CCHyper
+ *
+ * @brief Contains the hooks for the extended MultiMission class.
+ *
+ * @license Vinifera is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version
+ * 3 of the License, or (at your option) any later version.
+ *
+ * Vinifera is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program.
+ * If not, see .
+ *
+ ******************************************************************************/
+#include "endgameext_hooks.h"
+#include "debughandler.h"
+#include "asserthandler.h"
+
+#include "hooker.h"
+#include "hooker_macros.h"
+
+
+/**
+ * Main function for patching the hooks.
+ */
+void MultiMissionExtension_Hooks()
+{
+ /**
+ * #issue-8
+ *
+ * Fixes MultiMission "MaxPlayers" incorrectly loaded with "MinPlayers".
+ *
+ * @author: CCHyper
+ */
+ static const char *TEXT_MAXPLAYERS = "MaxPlayers";
+ Patch_Dword(0x005EF124+1, (uintptr_t)TEXT_MAXPLAYERS); // +1 skips "push" opcode
+ Patch_Dword(0x005EF5E4+1, (uintptr_t)TEXT_MAXPLAYERS); // +1 skips "push" opcode
+}
diff --git a/src/extensions/multimission/multimissionext_hooks.h b/src/extensions/multimission/multimissionext_hooks.h
new file mode 100644
index 000000000..0792c63f4
--- /dev/null
+++ b/src/extensions/multimission/multimissionext_hooks.h
@@ -0,0 +1,31 @@
+/*******************************************************************************
+/* O P E N S O U R C E -- V I N I F E R A **
+/*******************************************************************************
+ *
+ * @project Vinifera
+ *
+ * @file MULTIMISSIONEXT_HOOKS.H
+ *
+ * @author CCHyper
+ *
+ * @brief Contains the hooks for the extended MultiMission class.
+ *
+ * @license Vinifera is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version
+ * 3 of the License, or (at your option) any later version.
+ *
+ * Vinifera is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program.
+ * If not, see .
+ *
+ ******************************************************************************/
+#pragma once
+
+
+void MultiMissionExtension_Hooks();