/********************************************************************************
	physics.h: Ultra 64 MARIO Brothers include file

	Copyright (c) 1996 Nintendo co., ltd.  All rights reserved

	March 26, 1996
 ********************************************************************************/

#ifndef PHYSICS_H
#define	PHYSICS_H


#define	PWALK_LANDING		0x00
#define	PWALK_RUNNING		0x01
#define	PWALK_CLASHED		0x02
#define	PWALK_WALL			0x03
#define	PWALK_FIREDMG		0x04

#define	PJUMP_JUMPING		0x00
#define	PJUMP_JUMPEND		0x01
#define	PJUMP_CLASHED		0x02
#define	PJUMP_HANGING		0x03
#define	PJUMP_HANGRUF		0x04
#define	PJUMP_FIREDMG		0x06

#define	PHANG_DISABLE		0x00
#define	PHANG_ENABLE		0x01
#define	PHANG_WALL			0x01
#define	PHANG_ROOF			0x02

typedef struct {
	float	pow, radius;
	float	posx, posz;
	float	spdx, spdz;
} BallRecord, *BallPtr;

extern BGCheckData skatingWaterSurface;

/********************************************************************************/
/*																				*/
/*	Define function prototypes.													*/
/*																				*/
/********************************************************************************/

extern void
DoTrampoline(void);

extern float
PL_GetTrampolinePower(void);

extern void
PL_CheckTrampolineJump(PlayerPtr player);

extern int
PL_CollideBalls(BallPtr pick, BallPtr ball);

extern int
PL_SetBallRecord(BallPtr ball, float posx, float posz, float speed, short angle, float pow, float radius);



extern void
PL_PlayerRefrection(PlayerPtr player, int negative);

extern int
PL_CheckPlayerSinking(PlayerPtr player, float power);

extern int
PL_FallFromHeavySlope(PlayerPtr player, ulong status, ulong auxinfo);

extern int
PL_QuicksandProcess(PlayerPtr player);

extern int
PL_GustProcess(PlayerPtr player);

extern void
PL_StopProcess(PlayerPtr player);

extern int
PL_WaitProcess(PlayerPtr player);

extern int
PL_WalkProcess(PlayerPtr player);

extern int
PL_JumpProcess(PlayerPtr player, int hangflag);

extern void
PL_Set3DSpeed(PlayerPtr player);

#endif
