#include <StdAfx.h>
#include "TR3_Functions.h"
#include "phd_math.h"
#include "utility.h"
#include "Class/TRLara.h"
#include "Class/TRWeapons.h"

extern TYPE_GetWaterHeight GetWaterHeight;
extern TYPE2_GetFloor GetFloor_2;
extern TYPE_GetHeight GetHeight;
extern TYPE2_AnimateItem AnimateItem_2;
extern TYPE_ItemNewRoom ItemNewRoom;
extern TYPE_CreatureDie CreatureDie;
extern TYPE2_GetBoundsAccurate GetBoundsAccurate_2;
extern TYPE_CreatureTilt CreatureTilt;
extern TYPE_CreatureCreature CreatureCreature;
extern TYPE2_GetCeiling GetCeiling_2;
extern TYPE_phd_atan phd_atan;
extern TYPE_GetRandomControl GetRandomControl;
extern TYPE_phd_GenerateW2V phd_GenerateW2V;
extern TYPE_GetSpheres GetSpheres;
extern TYPE_GetFloor GetFloor;
extern TYPE_ObjectOnLOS2 ObjectOnLOS2;
extern TYPE_LOS LOS;
extern TYPE_Richochet Richochet;
extern TYPE_DoBloodSplat DoBloodSplat;
extern TYPE_CheckHitTarget CheckHitTarget;
extern TYPE_HitTarget HitTarget;
extern TYPE_LaraTargetInfo LaraTargetInfo;
extern TYPE_find_target_point find_target_point;
extern TYPE_phd_GetVectorAngles phd_GetVectorAngles;

// Get the correct zone from the allowed step height for the creature
// TR4 Version !
#define ZONE(A) (TestAttivataUnaFlipMap + 2 * A)

// for zone[BOX(XX)] only (the return value not ZoneGrid) !!
// TR4 Version !
#define BOX(A) ((A >> 4) & NO_BOX)

#define CREATURE_FLOAT_SPEED (WALL_L/32)
#define CREATURE_UNDERWATER_ROTATE (ONE_DEGREE * 2)
#define BIFF (WALL_L>>1)
#define BIFF_AVOID_TURN 0x800
#define FLY_ZONE 0x2000
#define PREDICTIVE_SCALE_FACTOR 14

/* Limit amount that flying/swimming baddies tilt forward and backward */
#define MAX_X_ROT (ONE_DEGREE*20)

void TR3_AimWeapon(WEAPON_INFO* winfo, LARA_ARM* arm)
{

}

BOOL TR3_BadFloor(sint32 x, sint32 y, sint32 z, sint32 box_height, sint32 next_height, sint16 room_number, LOT* LOT)
{
    return FALSE;
}

BOOL TR3_CreatureAnimation(sint16 ItemIndex, sint16 angle, sint16 tilt)
{
    return TRUE;
}

void TR3_CreatureFloat(short ItemIndex)
{

}

void TR3_CreatureUnderwater(ITEM_INFO* item, sint32 depth)
{

}

void TR3_CreatureAIInfo(ITEM_INFO* item, AI_INFO* info)
{

}

void TR3_HitTarget(ITEM_INFO* item, GAME_VECTOR* hitpos, int damage)
{

}

int TR3_FireWeapon(int weapon_type, ITEM_INFO *target, ITEM_INFO *src, short angles[2])
{
    return 0;
}