mirror of https://github.com/zeldaret/tmc.git
				
				
				
			
		
			
				
	
	
		
			165 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			165 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C
		
	
	
	
#ifndef MANAGER_H
 | 
						|
#define MANAGER_H
 | 
						|
 | 
						|
#include "global.h"
 | 
						|
#include "entity.h"
 | 
						|
 | 
						|
union SplitSHWord {
 | 
						|
    s16 SHWORD;
 | 
						|
    struct {
 | 
						|
        u8 LO, HI;
 | 
						|
    } PACKED HALF;
 | 
						|
} PACKED;
 | 
						|
 | 
						|
typedef struct Manager {
 | 
						|
    /*0x00*/ struct Manager* prev; /**< previous Manager */
 | 
						|
    /*0x00*/ struct Manager* next; /**< next Manager */
 | 
						|
    /*0x08*/ u8 kind;              /**< @see EntityKind */
 | 
						|
    /*0x09*/ u8 id;                /**< Manager id. @see Managers */
 | 
						|
    /*0x0a*/ u8 type;              /**< For use internally to allow different variations. */
 | 
						|
    /*0x0b*/ u8 type2;             /**< For use internally. */
 | 
						|
    /*0x0c*/ u8 action;            /**< Current action. Usually used to index a function table. */
 | 
						|
    /*0x0d*/ u8 subAction;         /**< Optional sub-action. */
 | 
						|
    /*0x0e*/ u8 timer;             /**< General purpose timer. */
 | 
						|
    /*0x0f*/ u8 subtimer;          /**< General purpose timer. */
 | 
						|
    /*0x10*/ u8 flags;             /**< @see EntityFlags */
 | 
						|
    /*0x11*/ u8 unused[3];         /**< Not used by any manager. */
 | 
						|
    /*0x14*/ Entity* parent;       /**< Parent Entity. */
 | 
						|
    /*0x18*/ Entity* child;        /**< Child Entity. */
 | 
						|
    /*0x1c*/ u8 unused2[0x4];      /**< Not used by any manager. */
 | 
						|
} Manager;
 | 
						|
 | 
						|
typedef enum {
 | 
						|
    MANAGER_NONE,
 | 
						|
    LIGHT_RAY_MANAGER,
 | 
						|
    VERTICAL_MINISH_PATH_BACKGROUND_MANAGER,
 | 
						|
    MINISH_PORTAL_MANAGER,
 | 
						|
    DIGGING_CAVE_ENTRANCE_MANAGER,
 | 
						|
    BRIDGE_MANAGER,
 | 
						|
    SPECIAL_WARP_MANAGER,
 | 
						|
    MINISH_VILLAGE_MANAGER,
 | 
						|
    HORIZONTAL_MINISH_PATH_BACKGROUND_MANAGER,
 | 
						|
    MINISH_RAFTERS_BACKGROUND_MANAGER,
 | 
						|
    EZLO_HINT_MANAGER,
 | 
						|
    FIGHT_MANAGER,
 | 
						|
    ROLLING_BARREL_MANAGER,
 | 
						|
    TILE_CHANGE_OBSERVE_MANAGER,
 | 
						|
    ENTITY_SPAWN_MANAGER,
 | 
						|
    MISC_MANAGER,
 | 
						|
    WEATHER_CHANGE_MANAGER,
 | 
						|
    FLAG_AND_OPERATOR_MANAGER,
 | 
						|
    HYRULE_TOWN_TILESET_MANAGER,
 | 
						|
    HOUSE_SIGN_MANAGER,
 | 
						|
    STEAM_OVERLAY_MANAGER,
 | 
						|
    TEMPLE_OF_DROPLETS_MANAGER,
 | 
						|
    DELAYED_ENTITY_LOAD_MANAGER,
 | 
						|
    FALLING_ITEM_MANAGER,
 | 
						|
    CLOUD_OVERLAY_MANAGER,
 | 
						|
    POW_BACKGROUND_MANAGER,
 | 
						|
    HOLE_MANAGER,
 | 
						|
    STATIC_BACKGROUND_MANAGER,
 | 
						|
    RAINFALL_MANAGER,
 | 
						|
    ANIMATED_BACKGROUND_MANAGER,
 | 
						|
    REGION_TRIGGER_MANAGER,
 | 
						|
    RAIL_INTERSECTION_MANAGER,
 | 
						|
    MOVEABLE_OBJECT_MANAGER,
 | 
						|
    MINISH_SIZED_ENTRANCE_MANAGER,
 | 
						|
    LIGHT_MANAGER,
 | 
						|
    LIGHT_LEVEL_SET_MANAGER,
 | 
						|
    BOMBABLE_WALL_MANAGER,
 | 
						|
    FLAME_MANAGER,
 | 
						|
    PUSHABLE_FURNITURE_MANAGER,
 | 
						|
    ARMOS_INTERIOR_MANAGER,
 | 
						|
    ENEMY_INTERACTION_MANAGER,
 | 
						|
    MANAGER_29,
 | 
						|
    DESTRUCTIBLE_TILE_OBSERVE_MANAGER,
 | 
						|
    ANGRY_STATUE_MANAGER,
 | 
						|
    CLOUD_STAIRCASE_TRANSITION_MANAGER,
 | 
						|
    WATERFALL_BOTTOM_MANAGER,
 | 
						|
    SECRET_MANAGER,
 | 
						|
    VAATI3_BACKGROUND_MANAGER,
 | 
						|
    TILE_PUZZLE_MANAGER,
 | 
						|
    GORON_MERCHANT_SHOP_MANAGER,
 | 
						|
    VAATI_APPARATE_MANAGER,
 | 
						|
    HYRULE_TOWN_BELL_MANAGER,
 | 
						|
    VAATI3_INSIDE_ARM_MANAGER,
 | 
						|
    CAMERA_TARGET_MANAGER,
 | 
						|
    REPEATED_SOUND_MANAGER,
 | 
						|
    VAATI3_START_MANAGER,
 | 
						|
    FLOATING_PLATFORM_MANAGER,
 | 
						|
    ENTER_ROOM_TEXTBOX_MANAGER
 | 
						|
} Managers;
 | 
						|
 | 
						|
extern void LightRayManager_Main();
 | 
						|
extern void VerticalMinishPathBackgroundManager_Main();
 | 
						|
extern void MinishPortalManager_Main();
 | 
						|
extern void DiggingCaveEntranceManager_Main();
 | 
						|
extern void BridgeManager_Main();
 | 
						|
extern void SpecialWarpManager_Main();
 | 
						|
extern void MinishVillageTilesetManager_Main();
 | 
						|
extern void HorizontalMinishPathBackgroundManager_Main();
 | 
						|
extern void MinishRaftersBackgroundManager_Main();
 | 
						|
extern void EzloHintManager_Main();
 | 
						|
extern void FightManager_Main();
 | 
						|
extern void RollingBarrelManager_Main();
 | 
						|
extern void TileChangeObserveManager_Main();
 | 
						|
extern void EntitySpawnManager_Main();
 | 
						|
extern void MiscManager_Main();
 | 
						|
extern void WeatherChangeManager_Main();
 | 
						|
extern void FlagAndOperatorManager_Main();
 | 
						|
extern void HyruleTownTilesetManager_Main();
 | 
						|
extern void HouseSignManager_Main();
 | 
						|
extern void SteamOverlayManager_Main();
 | 
						|
extern void TempleOfDropletsManager_Main();
 | 
						|
extern void DelayedEntityLoadManager_Main();
 | 
						|
extern void FallingItemManager_Main();
 | 
						|
extern void CloudOverlayManager_Main();
 | 
						|
extern void PowBackgroundManager_Main();
 | 
						|
extern void HoleManager_Main();
 | 
						|
extern void StaticBackgroundManager_Main();
 | 
						|
extern void RainfallManager_Main();
 | 
						|
extern void AnimatedBackgroundManager_Main();
 | 
						|
extern void RegionTriggerManager_Main();
 | 
						|
extern void RailIntersectionManager_Main();
 | 
						|
extern void MoveableObjectManager_Main();
 | 
						|
extern void MinishSizedEntranceManager_Main();
 | 
						|
extern void LightManager_Main();
 | 
						|
extern void LightLevelSetManager_Main();
 | 
						|
extern void BombableWallManager_Main();
 | 
						|
extern void FlameManager_Main();
 | 
						|
extern void PushableFurnitureManager_Main();
 | 
						|
extern void ArmosInteriorManager_Main();
 | 
						|
extern void EnemyInteractionManager_Main();
 | 
						|
extern void Manager29_Main();
 | 
						|
extern void DestructibleTileObserveManager_Main();
 | 
						|
extern void AngryStatueManager_Main();
 | 
						|
extern void CloudStaircaseTransitionManager_Main();
 | 
						|
extern void WaterfallBottomManager_Main();
 | 
						|
extern void SecretManager_Main();
 | 
						|
extern void Vaati3BackgroundManager_Main();
 | 
						|
extern void TilePuzzleManager_Main();
 | 
						|
extern void GoronMerchantShopManager_Main();
 | 
						|
extern void VaatiAppearingManager_Main();
 | 
						|
extern void HyruleTownBellManager_Main();
 | 
						|
extern void Vaati3InsideArmManager_Main();
 | 
						|
extern void CameraTargetManager_Main();
 | 
						|
extern void RepeatedSoundManager_Main();
 | 
						|
extern void Vaati3StartManager_Main();
 | 
						|
extern void FloatingPlatformManager_Main();
 | 
						|
extern void EnterRoomTextboxManager_Main();
 | 
						|
 | 
						|
extern void (*const gMiscManagerunctions[58])();
 | 
						|
 | 
						|
Manager* GetEmptyManager(void);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Set manager responsible for handling room changes
 | 
						|
 */
 | 
						|
extern void RegisterTransitionManager(void* mgr, void (*onEnter)(), void (*onExit)());
 | 
						|
 | 
						|
extern u32 sub_0805ACC0(Entity*);
 | 
						|
extern void sub_0801855C(void);
 | 
						|
extern void sub_080186C0(u32);
 | 
						|
 | 
						|
#endif // MANAGER_H
 |