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 SetNextAreaHint(u32 textId);
 | |
| 
 | |
| #endif // MANAGER_H
 |