Elaztek Developer Hub
Blamite Game Engine - blam!  00406.12.10.23.1457.blamite
The core library for the Blamite Game Engine.
extensions.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <vector>
5 #include <Windows.h>
6 
7 #include <Strings/components/resources/version/version.h>
8 #include <Strings/components/diagnostics/errors/errors.h>
9 #include <api/api.h>
10 
11 #ifndef BLAM
12 #define BLAM
13 #endif
14 
15 typedef void(CALLBACK* BlamEngineExtensionCallback_OnEnable)();
16 typedef void(CALLBACK* BlamEngineExtensionCallback_OnDisable)();
17 typedef void(CALLBACK* BlamEngineExtensionCallback_TagPostprocess)(BlamTagData* tag_data);
20 
27 {
28 private:
29  BlamEngineExtensionCallback_OnEnable callback_OnEnable = nullptr;
30  BlamEngineExtensionCallback_OnDisable callback_OnDisable = nullptr;
31 
32  BlamEngineExtensionCallback_TagPostprocess callback_TagPostprocess = nullptr;
33  BlamEngineExtensionCallback_TagNeedsPostprocess callback_TagNeedsPostprocess = nullptr;
34  BlamEngineExtensionCallback_LoadTagClasses callback_LoadTagClasses = nullptr;
35 
36 public:
37  std::string file_path = "";
38 
39  std::string name = "";
40  std::string version = "";
41  std::string author = "";
42  std::string url = "";
43 
44  HMODULE extension_handle = nullptr;
45 
54  BlamResult LoadCallbacks();
55 
63  void LoadOptionalCallbacks();
64 
68  void OnEnable();
69 
73  void OnDisable();
74 
81  void TagPostprocess(BlamTagData* tag_data);
82 
91  bool TagNeedsPostprocess(BlamTagData* tag_data);
92 
97  void LoadTagClasses();
98 };
99 
110 {
121  BLAM BlamResult LoadExtensionFunction(void** function_callback, const char* function_name, HMODULE module_handle, std::string module_filename);
122 
128  BLAM void LoadExtensions();
129 
133  BLAM void UnloadExtensions();
134 
140  BLAM std::vector<BlamEngineExtension*> GetExtensionList();
141 }
BlamEngineExtension::LoadOptionalCallbacks
void LoadOptionalCallbacks()
Loads all optional callbacks for the extension.
Definition: BlamEngineExtension.cpp:36
BlamEngineExtension::TagPostprocess
void TagPostprocess(BlamTagData *tag_data)
Optional extension function.
Definition: BlamEngineExtension.cpp:73
Blam::Logger::LogEvent
BLAM void LogEvent(std::string message)
Logs a message to the log and/or console.
Definition: aliases.cpp:130
BlamEngineExtension::extension_handle
HMODULE extension_handle
Definition: extensions.h:44
logger.h
BlamEngineExtension
Class representing a Blamite Engine Extension.
Definition: extensions.h:26
BlamEngineExtensionCallback_LoadTagClasses
void(CALLBACK * BlamEngineExtensionCallback_LoadTagClasses)()
Definition: extensions.h:19
extensions
std::vector< BlamEngineExtension * > extensions
Map containing all loaded extensions.
Definition: extensions.cpp:9
Blam::Extensions::GetExtensionList
BLAM std::vector< BlamEngineExtension * > GetExtensionList()
Retrieves the list of loaded extensions.
Definition: extensions.cpp:145
engine_text.h
BlamEngineExtension::OnEnable
void OnEnable()
Called when the extension is enabled.
Definition: BlamEngineExtension.cpp:57
Blam::Diagnostics::Errors::ShowWin32ErrorDialog
BLAM int ShowWin32ErrorDialog(std::string message, BlamResult error, bool allow_continue, bool allow_safemode)
Shows an Error dialog with the specified error details and result handle.
Definition: errors.cpp:139
Blam::Extensions::LoadExtensions
BLAM void LoadExtensions()
Attempts to load all available extensions.
Definition: extensions.cpp:29
NULL
Add a fourth parameter to bake specific font ranges NULL
Definition: README.txt:57
BlamEngineExtension::url
std::string url
A website URL where users can learn more about the extension (such as checking for updates).
Definition: extensions.h:42
Blam::Extensions::LoadExtensionFunction
BLAM BlamResult LoadExtensionFunction(void **function_callback, const char *function_name, HMODULE module_handle, std::string module_filename)
Loads a function within a given extension.
Definition: extensions.cpp:11
BlamEngineExtension::name
std::string name
The name of the extension.
Definition: extensions.h:39
ENGINE_DATA_PATH
#define ENGINE_DATA_PATH(path)
Macro to quickly access a game engine data folder.
Definition: config.h:34
Blam::Extensions::UnloadExtensions
BLAM void UnloadExtensions()
Unloads all loaded extensions.
Definition: extensions.cpp:128
Blam::Extensions
Namespace containing functions for extensions.
Definition: extensions.h:109
BlamEngineExtension::LoadTagClasses
void LoadTagClasses()
Optional extension function.
Definition: BlamEngineExtension.cpp:91
BLAM
#define BLAM
Definition: extensions.h:12
BlamEngineDataFolder::Extensions
@ Extensions
Directory used for engine extensions. Defaults to ./extensions/
BlamEngineExtension::version
std::string version
The version of the extension.
Definition: extensions.h:40
BlamEngineExtension::TagNeedsPostprocess
bool TagNeedsPostprocess(BlamTagData *tag_data)
Optional extension function.
Definition: BlamEngineExtension.cpp:81
BlamEngineExtension::author
std::string author
The author of the extension.
Definition: extensions.h:41
BlamEngineExtensionCallback_OnEnable
void(CALLBACK * BlamEngineExtensionCallback_OnEnable)()
Definition: extensions.h:15
BlamEngineExtension::file_path
std::string file_path
The file path to the extension file.
Definition: extensions.h:37
BlamEngineExtensionCallback_OnDisable
void(CALLBACK * BlamEngineExtensionCallback_OnDisable)()
Definition: extensions.h:16
BlamEngineExtensionCallback_TagNeedsPostprocess
bool(CALLBACK * BlamEngineExtensionCallback_TagNeedsPostprocess)(BlamTagData *tag_data)
Definition: extensions.h:18
config.h
BlamTagData
Class used to contain and access tag data.
Definition: tags.h:125
BlamEngineExtension::LoadCallbacks
BlamResult LoadCallbacks()
Loads all required callbacks for the extension.
Definition: BlamEngineExtension.cpp:5
Blam::EngineText::LookupErrorString
BLAM std::string LookupErrorString(int error_code)
Finds a string message associated with a given error code.
Definition: engine_text.cpp:47
BlamEngineExtension::OnDisable
void OnDisable()
Called when the extension is disabled.
Definition: BlamEngineExtension.cpp:65
BlamEngineExtensionCallback_TagPostprocess
void(CALLBACK * BlamEngineExtensionCallback_TagPostprocess)(BlamTagData *tag_data)
Definition: extensions.h:17
extensions.h
api.h