Spellforce-Spell-framework
Toggle main menu visibility
Loading...
Searching...
No Matches
sf_building_done_hook.c
Go to the documentation of this file.
1
#include "
sf_building_done_hook.h
"
2
#include <stdlib.h>
3
4
extern
BuildingFunctions
buildingAPI
;
5
typedef
void (__thiscall *
fun006c3650_ptr
)(
void
*autoclass30, uint16_t unkn, uint16_t index);
6
typedef
void (__thiscall *
fun0074ca30_ptr
)(uint32_t *god_object, uint32_t owner, uint32_t flag);
7
typedef
uint32_t *(__thiscall *
AC65_init_ptr
)(
void
*autoclass65);
8
9
typedef
uint16_t (__thiscall *
XDataListExists_ptr
)(
void
*SF_CGdXDataList, uint16_t index, uint8_t xdata_type);
10
typedef
uint16_t (__thiscall *
XDataListZero_ptr
)(
void
*SF_CGdXDataList, uint16_t xdata_key, uint8_t xdata_type);
11
typedef
void (__thiscall *
fun006c3ca0_ptr
)(
void
*autoclass30, uint16_t param_1, uint16_t owner,
12
SF_CGdTargetData
*source,
SF_CGdTargetData
*target);
13
typedef
uint32_t *(*getGlobalAC65_ptr)(void);
14
15
AC65_init_ptr
l_AC65_init
;
16
fun006c3650_ptr
l_fun006c3650
;
17
fun0074ca30_ptr
l_fun0074ca30
;
18
XDataListZero_ptr
XDataListZero
;
19
XDataListExists_ptr
XDataListExists
;
20
fun006c3ca0_ptr
fun006c3ca0
;
21
getGlobalAC65_ptr
getGlobalAC65
;
22
23
void
initialize_building_done_hooks
()
24
{
25
l_fun006c3650
= (
fun006c3650_ptr
)
ASI::AddrOf
(0x2c3650);
26
l_AC65_init
= (
AC65_init_ptr
)
ASI::AddrOf
(0x34c810);
27
l_fun0074ca30
= (
fun0074ca30_ptr
)
ASI::AddrOf
(0x34ca30);
28
XDataListZero
= (
XDataListZero_ptr
)
ASI::AddrOf
(0x353ef0);
29
XDataListExists
= (
XDataListExists_ptr
)
ASI::AddrOf
(0x3549d0);
30
fun006c3ca0
= (
fun006c3ca0_ptr
)
ASI::AddrOf
(0x2c3ca0);
31
getGlobalAC65
= (
getGlobalAC65_ptr
)(
ASI::AddrOf
(0x277330));
32
33
}
34
void
include_owner_on_map
(uint16_t owner)
35
{
36
uint32_t *AC65 =
getGlobalAC65
();
37
l_fun0074ca30
(AC65, owner, 1);
38
}
39
40
void
__thiscall
sf_building_done_hook
(
SF_CGdBuildingToolbox
*_this, uint16_t building_index)
41
{
42
l_fun006c3650
(_this->
AutoClass30
, 3, building_index);
43
_this->
CGdBuilding
->
buildings
[building_index].
build_up
= 0;
44
_this->
CGdBuilding
->
buildings
[building_index].
flags
|= 1;
45
if
(_this->
CGdBuilding
->
buildings
[building_index].
owner
!= 0)
46
{
47
include_owner_on_map
(_this->
CGdBuilding
->
buildings
[building_index].
owner
);
48
}
49
uint16_t building_xdata_key = _this->
CGdBuilding
->
buildings
[building_index].
xdata_key
;
50
if
(
XDataListExists
(_this->
CGdXDataList
, building_xdata_key,
SpellDataKey::SPELL_CONSERVATION_SHIELD
))
51
{
52
uint16_t value =
XDataListZero
(_this->
CGdXDataList
, building_xdata_key,
53
SpellDataKey::SPELL_CONSERVATION_SHIELD
);
54
if
(value != 0xffff)
55
{
56
_this->
CGdBuilding
->
buildings
[building_index].
xdata_key
= value;
57
}
58
}
59
60
uint8_t building_type = _this->
CGdBuilding
->
buildings
[building_index].
type
;
61
building_done_handler_ptr
handler =
get_building_done_handler
(building_type);
62
handler(_this, building_index);
63
}
buildingAPI
BuildingFunctions buildingAPI
Definition
sf_hooks.c:47
ASI::AddrOf
int AddrOf(int offset)
returns "real" virtual address of given memory offset
Definition
sf_asi.h:135
l_fun0074ca30
fun0074ca30_ptr l_fun0074ca30
Definition
sf_building_done_hook.c:17
l_AC65_init
AC65_init_ptr l_AC65_init
Definition
sf_building_done_hook.c:15
AC65_init_ptr
uint32_t *(__thiscall * AC65_init_ptr)(void *autoclass65)
Definition
sf_building_done_hook.c:7
fun006c3ca0
fun006c3ca0_ptr fun006c3ca0
Definition
sf_building_done_hook.c:20
l_fun006c3650
fun006c3650_ptr l_fun006c3650
Definition
sf_building_done_hook.c:16
fun006c3650_ptr
void(__thiscall * fun006c3650_ptr)(void *autoclass30, uint16_t unkn, uint16_t index)
Definition
sf_building_done_hook.c:5
getGlobalAC65
getGlobalAC65_ptr getGlobalAC65
Definition
sf_building_done_hook.c:21
XDataListExists
XDataListExists_ptr XDataListExists
Definition
sf_building_done_hook.c:19
sf_building_done_hook
void __thiscall sf_building_done_hook(SF_CGdBuildingToolbox *_this, uint16_t building_index)
Definition
sf_building_done_hook.c:40
XDataListZero
XDataListZero_ptr XDataListZero
Definition
sf_building_done_hook.c:18
initialize_building_done_hooks
void initialize_building_done_hooks()
Definition
sf_building_done_hook.c:23
getGlobalAC65_ptr
uint32_t *(* getGlobalAC65_ptr)(void)
Definition
sf_building_done_hook.c:13
fun0074ca30_ptr
void(__thiscall * fun0074ca30_ptr)(uint32_t *god_object, uint32_t owner, uint32_t flag)
Definition
sf_building_done_hook.c:6
fun006c3ca0_ptr
void(__thiscall * fun006c3ca0_ptr)(void *autoclass30, uint16_t param_1, uint16_t owner, SF_CGdTargetData *source, SF_CGdTargetData *target)
Definition
sf_building_done_hook.c:11
XDataListExists_ptr
uint16_t(__thiscall * XDataListExists_ptr)(void *SF_CGdXDataList, uint16_t index, uint8_t xdata_type)
Definition
sf_building_done_hook.c:9
include_owner_on_map
void include_owner_on_map(uint16_t owner)
Definition
sf_building_done_hook.c:34
XDataListZero_ptr
uint16_t(__thiscall * XDataListZero_ptr)(void *SF_CGdXDataList, uint16_t xdata_key, uint8_t xdata_type)
Definition
sf_building_done_hook.c:10
sf_building_done_hook.h
get_building_done_handler
building_done_handler_ptr get_building_done_handler(uint8_t building_type)
Definition
sf_building_done_registry.cpp:26
SPELL_CONSERVATION_SHIELD
@ SPELL_CONSERVATION_SHIELD
Definition
sf_general_structures.h:471
building_done_handler_ptr
void(__thiscall * building_done_handler_ptr)(SF_CGdBuildingToolbox *_this, uint16_t building_index)
Definition
sf_registration_structures.h:25
BuildingFunctions
Definition
sf_building_functions.h:61
GdBuilding::xdata_key
uint16_t xdata_key
Definition
sf_building_structures.h:48
GdBuilding::type
uint8_t type
Definition
sf_building_structures.h:39
GdBuilding::owner
uint16_t owner
Definition
sf_building_structures.h:38
GdBuilding::flags
uint8_t flags
Definition
sf_building_structures.h:41
GdBuilding::build_up
uint16_t build_up
Definition
sf_building_structures.h:42
SF_CGdBuilding::buildings
GdBuilding buildings[1000]
Definition
sf_building_structures.h:60
SF_CGdBuildingToolbox
Definition
sf_building_structures.h:97
SF_CGdBuildingToolbox::CGdBuilding
SF_CGdBuilding * CGdBuilding
Definition
sf_building_structures.h:101
SF_CGdBuildingToolbox::CGdXDataList
void * CGdXDataList
Definition
sf_building_structures.h:116
SF_CGdBuildingToolbox::AutoClass30
void * AutoClass30
Definition
sf_building_structures.h:104
SF_CGdTargetData
Definition
sf_general_structures.h:948
src
internal
core
hooks
sf_building_done_hook.c
Generated by
1.17.0