2020-12-21 13:16:29 -03:00
|
|
|
#pragma once
|
|
|
|
#include "lara.h"
|
2021-09-14 15:54:49 +03:00
|
|
|
|
2021-08-28 13:27:58 +02:00
|
|
|
struct ITEM_INFO;
|
|
|
|
struct COLL_INFO;
|
2021-09-14 15:54:49 +03:00
|
|
|
|
|
|
|
constexpr auto MAX_TARGETS = 8;
|
|
|
|
|
2021-07-18 15:22:15 +01:00
|
|
|
enum FireWeaponType
|
2020-12-21 13:16:29 -03:00
|
|
|
{
|
|
|
|
FW_MISS = -1,
|
|
|
|
FW_NOAMMO = 0,
|
|
|
|
FW_MAYBEHIT = 1
|
|
|
|
};
|
|
|
|
|
2021-07-18 15:22:15 +01:00
|
|
|
struct WEAPON_INFO
|
2020-12-21 13:16:29 -03:00
|
|
|
{
|
|
|
|
short lockAngles[4];
|
|
|
|
short leftAngles[4];
|
|
|
|
short rightAngles[4];
|
|
|
|
short aimSpeed;
|
|
|
|
short shotAccuracy;
|
|
|
|
short gunHeight;
|
|
|
|
short targetDist;
|
|
|
|
byte damage;
|
|
|
|
byte recoilFrame;
|
|
|
|
byte flashTime;
|
|
|
|
byte drawFrame;
|
|
|
|
short sampleNum;
|
|
|
|
byte explosiveDamage;
|
|
|
|
};
|
2021-11-20 15:39:05 +11:00
|
|
|
|
2021-01-26 13:07:08 +01:00
|
|
|
enum WeaponState {
|
|
|
|
WSTATE_AIM =0,
|
|
|
|
WSTATE_DRAW = 1,
|
|
|
|
WSTATE_RECOIL = 2,
|
|
|
|
WSTATE_UNAIM = 4,
|
|
|
|
WSTATE_UW_AIM = 6,
|
|
|
|
WSTATE_UW_UNAIM = 7,
|
|
|
|
WSTATE_UW_RECOIL = 8
|
|
|
|
};
|
2020-12-21 13:16:29 -03:00
|
|
|
|
|
|
|
extern WEAPON_INFO Weapons[static_cast<int>(LARA_WEAPON_TYPE::NUM_WEAPONS)];
|
|
|
|
|
|
|
|
void SmashItem(short itemNum);
|
2021-01-25 13:58:23 +01:00
|
|
|
GAME_OBJECT_ID WeaponObject(int weaponType);
|
2021-11-20 15:39:05 +11:00
|
|
|
void LaraGun(ITEM_INFO* lara);
|
|
|
|
Ammo& GetAmmo(ITEM_INFO* lara, int weaponType);
|
|
|
|
void InitialiseNewWeapon(ITEM_INFO* lara);
|
|
|
|
GAME_OBJECT_ID WeaponObjectMesh(ITEM_INFO* lara, int weaponType);
|
|
|
|
void AimWeapon(ITEM_INFO* lara, WEAPON_INFO* winfo, LARA_ARM* arm);
|
|
|
|
void HitTarget(ITEM_INFO* lara, ITEM_INFO* target, GAME_VECTOR* hitPos, int damage, int flag);
|
2021-08-11 15:18:22 +03:00
|
|
|
FireWeaponType FireWeapon(LARA_WEAPON_TYPE weaponType, ITEM_INFO* target, ITEM_INFO* src, short* angles);
|
2020-12-21 13:16:29 -03:00
|
|
|
void find_target_point(ITEM_INFO* item, GAME_VECTOR* target);
|
2021-11-20 15:39:05 +11:00
|
|
|
void LaraTargetInfo(ITEM_INFO* lara, WEAPON_INFO* weapon);
|
2020-12-21 13:16:29 -03:00
|
|
|
bool CheckForHoldingState(int state);
|
2021-11-20 15:39:05 +11:00
|
|
|
void LaraGetNewTarget(ITEM_INFO* lara, WEAPON_INFO* weapon);
|
|
|
|
HOLSTER_SLOT HolsterSlotForWeapon(LARA_WEAPON_TYPE weapon);
|