sm64coopdx/data/dynos_main.cpp

70 lines
1.4 KiB
C++
Raw Normal View History

#include "dynos.cpp.h"
extern "C" {
#include "sm64.h"
#include "level_commands.h"
#include "game/level_update.h"
#include "game/object_list_processor.h"
extern s16 gMenuMode;
extern s8 gDialogBoxState;
#ifdef OMM_DEFINES_H
extern void omm_opt_init();
#endif
}
//
// Main Menu
//
void DynOS_ReturnToMainMenu() {
level_set_transition(0, NULL);
gDialogBoxState = 0;
gMenuMode = -1;
fade_into_special_warp(-2, 0);
}
//
// Update
//
static bool sDynosIsLevelEntry = false;
void *DynOS_SwapCmd(void *aCmd) {
return DynOS_Lvl_Override(aCmd);
}
void *DynOS_UpdateCmd(void *aCmd) {
2023-05-07 22:55:11 +00:00
if (!aCmd) { return NULL; }
2023-05-13 09:42:35 +00:00
static const uintptr_t sCmdLevelEntry[] = { CALL(0, lvl_init_or_update) };
2023-05-13 09:42:35 +00:00
sDynosIsLevelEntry |= (((uintptr_t*)aCmd)[0] == sCmdLevelEntry[0] && ((uintptr_t*)aCmd)[1] == sCmdLevelEntry[1]);
return DynOS_Warp_Update(aCmd, sDynosIsLevelEntry);
}
void DynOS_UpdateGfx() {
DynOS_Gfx_Update();
}
bool DynOS_IsTransitionActive() {
return gWarpTransition.isActive;
}
//
// Misc
//
2022-05-09 16:45:14 +00:00
static bool sDynosModShutdown = false;
void DynOS_Mod_Update() {
if (sDynosModShutdown) {
sDynosModShutdown = false;
DynOS_Actor_ModShutdown();
DynOS_Col_ModShutdown();
DynOS_Lvl_ModShutdown();
DynOS_Bhv_ModShutdown();
2022-05-09 16:45:14 +00:00
DynOS_MovtexQC_ModShutdown();
DynOS_Tex_ModShutdown();
}
}
void DynOS_Mod_Shutdown() {
2022-05-09 16:45:14 +00:00
sDynosModShutdown = true;
}