Spellforce-Spell-framework
Loading...
Searching...
No Matches
sf_building_done_registry.cpp
Go to the documentation of this file.
3#include <cstdint>
4#include <iostream>
5#include <map>
6#include <list>
7#include <utility>
8
9static std::map<uint8_t, building_done_handler_ptr> s_bulding_done_map;
10
11void registerBuildingDoneHandler(uint8_t building_type,
13{
14 auto check = s_bulding_done_map.find(building_type);
15 if (check != s_bulding_done_map.end())
16 {
17 char message[256];
18 sprintf(message, "%s (v%s) has replaced a Building Done Handler [%d] (Was this on purpose?)",
19 g_current_mod->mod_id, g_current_mod->mod_version, building_type);
20 log_warning(message);
21 }
22
23 s_bulding_done_map[building_type] = handler;
24}
25
27{
28 auto it = s_bulding_done_map.find(building_type);
29 if (it == s_bulding_done_map.end())
30 {
31 // Element doesn't exist, insert the default value
32 log_debug (DEBUG_HIGH,"Unknown buidling type [%d] for done handler, Assigning a default handler.",
33 building_type);
34 it = s_bulding_done_map.emplace(building_type, &default_done_handler).first;
35 }
36 return it->second;
37}
void log_warning(const char *format,...)
Logs a warning at DEBUG_INFO, i.e. always shown.
void log_debug(DebugLevel level, const char *format,...)
void __thiscall default_done_handler(SF_CGdBuildingToolbox *_this, uint16_t building_index)
building_done_handler_ptr get_building_done_handler(uint8_t building_type)
void registerBuildingDoneHandler(uint8_t building_type, building_done_handler_ptr handler)
SFMod * g_current_mod
void(__thiscall * building_done_handler_ptr)(SF_CGdBuildingToolbox *_this, uint16_t building_index)