Spellforce-Spell-framework
Toggle main menu visibility
Loading...
Searching...
No Matches
sf_subeffect_registry.cpp
Go to the documentation of this file.
1
#include "
../../../api/sf_effect_functions.h
"
2
#include "
../../handlers/sf_sub_effect_handlers.h
"
3
#include "
../../core/sf_hooks.h
"
4
#include "
../../core/sf_wrappers.h
"
5
#include "
../../core/sf_modloader.h
"
6
7
#include "
../sf_registry.h
"
8
#include <map>
9
#include <cstdio>
10
11
static
std::map<uint16_t, sub_effect_handler_ptr> s_sub_effect_handler_map;
12
13
void
registerSubEffectHandler
(uint16_t spell_line,
14
sub_effect_handler_ptr
handler)
15
{
16
auto
check = s_sub_effect_handler_map.find(spell_line);
17
if
(check != s_sub_effect_handler_map.end())
18
{
19
char
message[256];
20
sprintf(message,
21
"%s (v%s) has replaced a Subeffect Handler [%d] (Was this on purpose?)"
,
22
g_current_mod
->mod_id,
g_current_mod
->mod_version, spell_line);
23
log_warning
(message);
24
}
25
26
s_sub_effect_handler_map[spell_line] = handler;
27
}
28
29
sub_effect_handler_ptr
get_sub_effect_handler
(uint16_t spell_line)
30
{
31
auto
it = s_sub_effect_handler_map.find(spell_line);
32
if
(it == s_sub_effect_handler_map.end())
33
{
34
// Element doesn't exist, insert the default value
35
log_warning
(
"Unknown Job ID for Spell End Effect, Assigning a default handler."
);
36
it = s_sub_effect_handler_map.emplace(spell_line, &
default_sub_effect_handler
).first;
37
}
38
return
it->second;
39
}
40
41
void
register_vanilla_sub_effect_handlers
()
42
{
43
registerSubEffectHandler
(0x01, &
elemental_sub_effect_handler
);
44
registerSubEffectHandler
(0x0e, &
elemental_sub_effect_handler
);
45
registerSubEffectHandler
(0xb6, &
elemental_sub_effect_handler
);
46
registerSubEffectHandler
(0xb7, &
elemental_sub_effect_handler
);
47
registerSubEffectHandler
(0xea, &
elemental_sub_effect_handler
);
48
registerSubEffectHandler
(0xeb, &
elemental_sub_effect_handler
);
49
registerSubEffectHandler
(0xef, &
elemental_sub_effect_handler
);
50
51
registerSubEffectHandler
(0xec, &
elemental_chain_sub_effect_handler
);
52
registerSubEffectHandler
(0x8b, &
elemental_chain_sub_effect_handler
);
53
54
registerSubEffectHandler
(0x02, &
common_sub_effect_handler
);
55
registerSubEffectHandler
(0x04, &
common_sub_effect_handler
);
56
registerSubEffectHandler
(0x13, &
common_sub_effect_handler
);
57
registerSubEffectHandler
(0x15, &
common_sub_effect_handler
);
58
registerSubEffectHandler
(0x22, &
common_sub_effect_handler
);
59
registerSubEffectHandler
(0x23, &
common_sub_effect_handler
);
60
registerSubEffectHandler
(0x30, &
common_sub_effect_handler
);
61
registerSubEffectHandler
(0x32, &
common_sub_effect_handler
);
62
registerSubEffectHandler
(0x34, &
common_sub_effect_handler
);
63
registerSubEffectHandler
(0x38, &
common_sub_effect_handler
);
64
registerSubEffectHandler
(0x3a, &
common_sub_effect_handler
);
65
registerSubEffectHandler
(0x41, &
common_sub_effect_handler
);
66
registerSubEffectHandler
(0x43, &
common_sub_effect_handler
);
67
registerSubEffectHandler
(0x63, &
common_sub_effect_handler
);
68
registerSubEffectHandler
(0x64, &
common_sub_effect_handler
);
69
registerSubEffectHandler
(0x65, &
common_sub_effect_handler
);
70
registerSubEffectHandler
(0x74, &
common_sub_effect_handler
);
71
registerSubEffectHandler
(0x75, &
common_sub_effect_handler
);
72
registerSubEffectHandler
(0x76, &
common_sub_effect_handler
);
73
registerSubEffectHandler
(0x92, &
common_sub_effect_handler
);
74
registerSubEffectHandler
(0x93, &
common_sub_effect_handler
);
75
registerSubEffectHandler
(0xa1, &
common_sub_effect_handler
);
76
registerSubEffectHandler
(0xa6, &
common_sub_effect_handler
);
77
registerSubEffectHandler
(0xa7, &
common_sub_effect_handler
);
78
registerSubEffectHandler
(0xa8, &
common_sub_effect_handler
);
79
registerSubEffectHandler
(0xa9, &
common_sub_effect_handler
);
80
registerSubEffectHandler
(0xaa, &
common_sub_effect_handler
);
81
registerSubEffectHandler
(0xac, &
common_sub_effect_handler
);
82
registerSubEffectHandler
(0xe5, &
common_sub_effect_handler
);
83
registerSubEffectHandler
(0xe6, &
common_sub_effect_handler
);
84
registerSubEffectHandler
(0xe7, &
common_sub_effect_handler
);
85
registerSubEffectHandler
(0xe8, &
common_sub_effect_handler
);
86
registerSubEffectHandler
(0xe9, &
common_sub_effect_handler
);
87
registerSubEffectHandler
(0xed, &
common_sub_effect_handler
);
88
registerSubEffectHandler
(0xee, &
common_sub_effect_handler
);
89
registerSubEffectHandler
(0xf0, &
common_sub_effect_handler
);
90
}
log_warning
void log_warning(const char *format,...)
Logs a warning at DEBUG_INFO, i.e. always shown.
Definition
sf_wrappers.c:124
sf_effect_functions.h
Header file for defining Visual Effects.
sub_effect_handler_ptr
void(__thiscall * sub_effect_handler_ptr)(SF_CGdEffect *, uint16_t effect_index)
Definition
sf_effect_functions.h:13
sf_hooks.h
sf_modloader.h
g_current_mod
SFMod * g_current_mod
Definition
sf_registry.cpp:45
sf_registry.h
elemental_chain_sub_effect_handler
void __thiscall elemental_chain_sub_effect_handler(SF_CGdEffect *_this, uint16_t effect_index)
Definition
sf_sub_effect_handlers.cpp:66
elemental_sub_effect_handler
void __thiscall elemental_sub_effect_handler(SF_CGdEffect *_this, uint16_t effect_index)
Definition
sf_sub_effect_handlers.cpp:6
common_sub_effect_handler
void __thiscall common_sub_effect_handler(SF_CGdEffect *_this, uint16_t effect_index)
Definition
sf_sub_effect_handlers.cpp:92
default_sub_effect_handler
void __thiscall default_sub_effect_handler(SF_CGdEffect *_this, uint16_t effect_index)
Definition
sf_sub_effect_handlers.cpp:120
sf_sub_effect_handlers.h
get_sub_effect_handler
sub_effect_handler_ptr get_sub_effect_handler(uint16_t spell_line)
Definition
sf_subeffect_registry.cpp:29
registerSubEffectHandler
void registerSubEffectHandler(uint16_t spell_line, sub_effect_handler_ptr handler)
Definition
sf_subeffect_registry.cpp:13
register_vanilla_sub_effect_handlers
void register_vanilla_sub_effect_handlers()
Definition
sf_subeffect_registry.cpp:41
sf_wrappers.h
src
internal
registry
spell_data_registries
sf_subeffect_registry.cpp
Generated by
1.17.0