Lvl Macros (#678)

for dynos levels that use the normal macros
This commit is contained in:
Sonic The 2025-02-22 15:44:53 -06:00 committed by GitHub
parent bc4679d2e0
commit e24431928c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 81 additions and 1 deletions

View file

@ -849,6 +849,8 @@ const char* DynOS_Builtin_Actor_GetFromData(const GeoLayout* aData);
const GeoLayout* DynOS_Builtin_Actor_GetFromIndex(s32 aIndex);
const char* DynOS_Builtin_Actor_GetNameFromIndex(s32 aIndex);
s32 DynOS_Builtin_Actor_GetCount();
const MacroObject* DynOS_Builtin_LvlMacro_GetFromName(const char* aDataName);
const char* DynOS_Builtin_LvlMacro_GetFromData(const MacroObject* aData);
const GeoLayout* DynOS_Builtin_LvlGeo_GetFromName(const char* aDataName);
const char* DynOS_Builtin_LvlGeo_GetFromData(const GeoLayout* aData);
const Collision* DynOS_Builtin_Col_GetFromName(const char* aDataName);

View file

@ -1919,6 +1919,12 @@ static BehaviorScript ParseBehaviorScriptSymbolArgInternal(GfxData *aGfxData, Da
return (BehaviorScript)builtinActor;
}
// Built-in Lvl Macros
auto builtinLvlMacro = DynOS_Builtin_LvlMacro_GetFromName(_Arg.begin());
if (builtinLvlMacro != NULL) {
return (BehaviorScript)builtinLvlMacro;
}
// Built-in Lvl Geos
auto builtinGeo = DynOS_Builtin_LvlGeo_GetFromName(_Arg.begin());
if (builtinGeo != NULL) {

View file

@ -495,6 +495,12 @@ static LevelScript ParseLevelScriptSymbolArgInternal(GfxData* aGfxData, DataNode
return (LevelScript)builtinActor;
}
// Built-in Lvl Macros
auto builtinLvlMacro = DynOS_Builtin_LvlMacro_GetFromName(_Arg.begin());
if (builtinLvlMacro != NULL) {
return (LevelScript)builtinLvlMacro;
}
// Built-in Lvl Geos
auto builtinGeo = DynOS_Builtin_LvlGeo_GetFromName(_Arg.begin());
if (builtinGeo != NULL) {

View file

@ -136,6 +136,12 @@ static PointerData GetDataFromPointer(const void* aPtr, GfxData* aGfxData) {
return { builtinActor, 0 };
}
// Built-in Level Macros
auto builtinLvlMacro = DynOS_Builtin_LvlMacro_GetFromData((const MacroObject*)aPtr);
if (builtinLvlMacro != NULL) {
return { builtinLvlMacro, 0 };
}
// Built-in Lvl Geos
auto builtinGeo = DynOS_Builtin_LvlGeo_GetFromData((const GeoLayout*)aPtr);
if (builtinGeo != NULL) {
@ -404,6 +410,12 @@ static void *GetPointerFromData(GfxData *aGfxData, const String &aPtrName, u32 a
return (void*)builtinActor;
}
// Built-in Lvl Macros
auto builtinLvlMacro = DynOS_Builtin_LvlMacro_GetFromName(aPtrName.begin());
if (builtinLvlMacro != NULL) {
return (void*)builtinLvlMacro;
}
// Built-in Lvl Geos
auto builtinGeo = DynOS_Builtin_LvlGeo_GetFromName(aPtrName.begin());
if (builtinGeo != NULL) {

View file

@ -54,6 +54,7 @@ extern "C" {
#include "levels/bits/header.h"
#include "levels/bob/header.h"
#include "levels/bowser_1/header.h"
#include "levels/wdw/header.h"
#include "levels/bowser_2/header.h"
#include "levels/bowser_2/header.h"
#include "levels/bowser_3/header.h"
@ -441,6 +442,59 @@ s32 DynOS_Builtin_Actor_GetCount() {
return sizeof(sDynosBuiltinActors) / (2 * sizeof(sDynosBuiltinActors[0]));
}
//////////////////
// Level Macros //
//////////////////
static const void* sDynosBuiltinLvlMacros[] = {
define_builtin(bbh_seg7_macro_objs),
define_builtin(bitdw_seg7_macro_objs),
define_builtin(bitfs_seg7_macro_objs),
define_builtin(bits_seg7_macro_objs),
define_builtin(bob_seg7_macro_objs),
define_builtin(castle_courtyard_seg7_macro_objs),
define_builtin(castle_grounds_seg7_macro_objs),
define_builtin(ccm_seg7_area_1_macro_objs),
define_builtin(ccm_seg7_area_2_macro_objs),
define_builtin(cotmc_seg7_macro_objs),
define_builtin(ddd_seg7_area_1_macro_objs),
define_builtin(ddd_seg7_area_2_macro_objs),
define_builtin(hmc_seg7_macro_objs),
define_builtin(jrb_seg7_area_1_macro_objs),
define_builtin(jrb_seg7_area_2_macro_objs),
define_builtin(lll_seg7_area_1_macro_objs),
define_builtin(lll_seg7_area_2_macro_objs),
define_builtin(pss_seg7_macro_objs),
define_builtin(rr_seg7_macro_objs),
define_builtin(sa_seg7_macro_objs),
define_builtin(sl_seg7_area_1_macro_objs),
define_builtin(sl_seg7_area_2_macro_objs),
define_builtin(ssl_seg7_area_1_macro_objs),
define_builtin(ssl_seg7_area_2_macro_objs),
define_builtin(ssl_seg7_area_3_macro_objs),
define_builtin(thi_seg7_area_1_macro_objs),
define_builtin(thi_seg7_area_2_macro_objs),
define_builtin(thi_seg7_area_3_macro_objs),
define_builtin(totwc_seg7_macro_objs),
define_builtin(ttc_seg7_macro_objs),
define_builtin(ttm_seg7_area_1_macro_objs),
define_builtin(ttm_seg7_area_2_macro_objs),
define_builtin(vcutm_seg7_macro_objs),
define_builtin(wdw_seg7_area_1_macro_objs),
define_builtin(wdw_seg7_area_2_macro_objs),
define_builtin(wf_seg7_macro_objs),
define_builtin(wmotr_seg7_macro_objs),
};
const MacroObject* DynOS_Builtin_LvlMacro_GetFromName(const char* aDataName) {
MGR_FIND_DATA(sDynosBuiltinLvlMacros, (const MacroObject*));
}
const char* DynOS_Builtin_LvlMacro_GetFromData(const MacroObject* aData) {
MGR_FIND_NAME(sDynosBuiltinLvlMacros);
}
////////////////
// Level Geos //
////////////////
@ -2002,4 +2056,4 @@ s32 DynOS_Builtin_Func_GetIndexFromData(const void* aData) {
}
}
return -1;
}
}