/********************************************************************************
	callback.h: Ultra 64 MARIO Brothers include file

	Copyright (c) 1996 Nintendo co., ltd.  All rights reserved

	February 20, 1996
 ********************************************************************************/

#ifndef CALLBACK_H
#define	CALLBACK_H


/********************************************************************************/
/*	Player shape control record													*/
/********************************************************************************/

typedef struct {
	ulong		status;					/* player's status						*/
	char		ctrlCap;				/* player's cap control					*/
	char		ctrlEye;				/* player's eye control					*/
	char		ctrlHand;				/* player's hand control				*/
	char		ctrlWing;				/* player's wing control				*/
	short		ctrlSkin;				/* player's skin control				*/
	char		ctrlSucker;				/* player's sucker control				*/
	uchar		handscale;				/* player's hand scale					*/
	SVector		waistang;				/* player's waist angle					*/
	SVector		headang;				/* player's head angle					*/
	FVector		handpos;				/* player's hand position				*/
	StrategyPtr	taking;					/* pointer to the taken object			*/
} PLShapeCtrl;

extern PLShapeCtrl	playerShapeCtrl[2];


/********************************************************************************/
/*	Stage effects control call back routines									*/
/********************************************************************************/

extern ulong
WeatherProc(int code, MapNode *node, void *data);

extern ulong
DrawBackGround(int code, MapNode *node, void *data);

extern ulong
WaterFilter(int code, MapNode *node, void *data);

extern ulong
DoMarioFaceAnime(int code, MapNode *node, void *data);

extern ulong
SwitchArea(int code, MapNode *node, void *data);

extern void
ExecDecorKinopio(void);

extern void
InitDecorKinopio(void);

extern void
InitStarDoorEffect(void);

extern void
ExecStarDoorEffect(void);

/********************************************************************************/
/*	Mario and Luigi shape control call back routines							*/
/********************************************************************************/

extern ulong
CtrlMarioAlpha(int code, MapNode *node, void *data);

extern ulong
CtrlMarioLOD(int code, MapNode *node, void *data);

extern ulong
CtrlMarioEye(int code, MapNode *node, void *data);

extern ulong
CtrlMarioWaist(int code, MapNode *node, void *data);

extern ulong
CtrlMarioHead(int code, MapNode *node, void *data);

extern ulong
CtrlMarioHand(int code, MapNode *node, void *data);

extern ulong
CtrlHandScale(int code, MapNode *node, void *data);

extern ulong
CtrlMarioSkin(int code, MapNode *node, void *data);

extern ulong
CtrlMarioCap(int code, MapNode *node, void *data);

extern ulong
CtrlMarioWing(int code, MapNode *node, void *data);

extern ulong
CtrlMarioTaking(int code, MapNode *node, void *data);

extern ulong
CtrlMirrorMario(int code, MapNode *node, void *data);

extern ulong
CtrlMarioGeoMode(int code, MapNode *node, void *data);

#endif
