Files
perfect-dark/src/include/game/propobj.h
T
2024-08-31 21:10:44 +10:00

182 lines
11 KiB
C

#ifndef IN_GAME_PROPOBJ_H
#define IN_GAME_PROPOBJ_H
#include <ultra64.h>
#include "data.h"
#include "types.h"
extern u32 var800698f0;
extern u32 var800698f4;
extern struct prop *g_EmbedProp;
extern s32 g_EmbedHitPart;
extern f32 g_CctvWaitScale;
extern f32 g_CctvDamageRxScale;
extern f32 g_AutogunAccuracyScale;
extern f32 g_AutogunDamageTxScale;
extern f32 g_AutogunDamageRxScale;
extern struct beam *g_ThrownLaptopBeams;
void alarm_activate(void);
void alarm_deactivate(void);
bool alarm_is_active(void);
f32 countdown_timer_get_value60(void);
bool countdown_timer_is_visible(void);
bool countdown_timer_is_running(void);
void countdown_timer_set_running(bool running);
void countdown_timer_set_value60(f32 value);
void countdown_timer_set_visible(u32 reason, bool visible);
bool door_call_lift(struct prop *doorprop, bool allowclose);
bool obj_can_pickup_from_safe(struct defaultobj *obj);
void obj_update_linked_scenery(struct defaultobj *obj, struct prop *prop);
f32 obj_get_rotated_local_x_min_by_mtx3(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
f32 obj_get_rotated_local_x_max_by_mtx3(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
f32 obj_get_rotated_local_y_min_by_mtx3(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
f32 obj_get_rotated_local_y_max_by_mtx3(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
f32 obj_get_rotated_local_z_min_by_mtx3(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
f32 obj_get_rotated_local_z_max_by_mtx3(struct modelrodata_bbox *bbox, f32 realrot[3][3]);
bool func0f0679ac(struct model *model, f32 *max, f32 *min, f32 arg3[2], f32 arg4[2]);
void model_get_screen_coords3(struct model *model, f32 *xmax, f32 *xmin, f32 *ymax, f32 *ymin);
bool model_get_screen_coords(struct model *model, f32 *x2, f32 *x1, f32 *y2, f32 *y1);
void func0f06803c(struct coord *arg0, f32 *arg1, f32 *arg2, f32 *arg3, f32 *arg4);
struct defaultobj *obj_find_by_pad_num(s32 padnum);
void projectiles_unref_owner(struct prop *owner);
void func0f0685e4(struct prop *prop);
void projectile_set_sticky(struct prop *prop);
struct embedment *embedment_allocate(void);
s32 obj_get_destroyed_level(struct defaultobj *obj);
struct modelrodata_bbox *modeldef_find_bbox_rodata(struct modeldef *modeldef);
struct modelrodata_bbox *model_find_bbox_rodata(struct model *model);
struct modelrodata_bbox *obj_find_bbox_rodata(struct defaultobj *obj);
s32 func0f068fc8(struct prop *prop, bool arg1);
void prop_calculate_shade_colour(struct prop *prop, u8 *nextcol, u16 floorcol);
void colour_tween(u8 *col, u8 *nextcol);
void obj_merge_colour_fracs(s32 *colour, s32 shademode, f32 fracs[4]);
void obj_onmoved(struct defaultobj *obj, bool update_geometry, bool update_rooms);
struct prop *obj_init_with_model_def(struct defaultobj *obj, struct modeldef *modeldef);
struct prop *obj_init_with_auto_model(struct defaultobj *obj);
void func0f06a580(struct defaultobj *obj, struct coord *pos, Mtxf *matrix, RoomNum *rooms);
void func0f06a730(struct defaultobj *obj, struct coord *arg1, Mtxf *matrix, RoomNum *rooms, struct coord *arg4);
void func0f06ab60(struct defaultobj *obj, struct coord *arg1, Mtxf *matrix, RoomNum *rooms, struct coord *arg4);
void obj_free_projectile(struct defaultobj *obj);
void obj_free_embedment_or_projectile(struct prop *prop);
void obj_free(struct defaultobj *obj, bool freeprop, bool canregen);
void obj_free_permanently(struct defaultobj *obj, bool freeprop);
bool func0f06b39c(struct coord *pos, struct coord *dir, struct coord *aimpos, f32 arg3);
bool func0f06bea0(struct model *model, struct modelnode *arg1, struct modelnode *arg2, struct coord *arg3, struct coord *arg4, void *arg5, f32 *arg6, struct modelnode **arg7, s32 *hitpart, s32 *arg9, struct modelnode **arg10);
void apply_speed(f32 *distdone, f32 maxdist, f32 *speed, f32 accel, f32 decel, f32 maxspeed);
void apply_rotation(f32 *angle, f32 maxrot, f32 *speed, f32 accel, f32 decel, f32 maxspeed);
void func0f07063c(struct prop *prop, bool fulltick);
void obj_drop_recursively(struct prop *prop, bool arg1);
void func0f0706f8(struct prop *prop, bool fulltick);
void lift_activate(struct prop *prop, u8 liftnum);
struct prop *lift_find_by_pad(s16 padnum);
f32 lift_get_y(struct liftobj *lift);
void lift_update_tiles(struct liftobj *lift, bool stationary);
void lift_go_to_stop(struct liftobj *lift, s32 stopnum);
f32 obj_get_hov_bob_offset_y(struct defaultobj *obj);
void hov_update_ground(struct defaultobj *obj, struct hov *hov, struct coord *pos, RoomNum *rooms, f32 matrix[3][3]);
void hov_tick(struct defaultobj *obj, struct hov *hov);
f32 hoverprop_get_turn_angle(struct defaultobj *obj);
void hoverprop_set_turn_angle(struct defaultobj *obj, f32 angle);
s32 func0f072144(struct defaultobj *obj, struct coord *arg1, f32 arg2, bool arg3);
void hoverbike_update_movement(struct hoverbikeobj *hoverbike, f32 arg1, f32 arg2, f32 arg3);
s32 projectile_launch(struct defaultobj *obj, struct projectile *projectile, struct coord *arg2, struct coord *arg3);
s32 projectile_tick(struct defaultobj *obj, bool *embedded);
struct chopperobj *chopper_from_hovercar(struct chopperobj *obj);
bool chopper_check_target_in_fov(struct chopperobj *hovercar, u8 param_2);
bool chopper_check_target_in_sight(struct chopperobj *obj);
void chopper_set_target(struct chopperobj *obj, u32 chrnum);
bool chopper_attack(struct chopperobj *obj);
bool chopper_stop(struct chopperobj *obj);
bool chopper_set_armed(struct chopperobj *obj, bool armed);
void chopper_restart_timer(struct chopperobj *obj);
f32 chopper_get_timer(struct chopperobj *heli);
void chopper_set_max_damage(struct chopperobj *obj, u16 health);
void chopper_fire_rocket(struct chopperobj *chopper, bool side);
u32 obj_tick(struct prop *prop);
s32 obj_tick_player(struct prop *prop);
Gfx *props_render_beams(Gfx *gdl);
void tvscreen_set_image_by_num(struct tvscreen *screen, s32 imagenum);
Gfx *tvscreen_render(struct model *model, struct modelnode *node, struct tvscreen *screen, Gfx *gdl, s32 arg4, s32 arg5);
Gfx *gfx_render_radial_shadow(Gfx *gdl, f32 x, f32 y, f32 z, f32 angle, f32 radius, u32 colour);
Gfx *obj_render(struct prop *prop, Gfx *gdl, bool xlupass);
void obj_set_dropped(struct prop *prop, u32 droptype);
void obj_apply_momentum(struct defaultobj *obj, struct coord *speed, f32 rotation, bool addspeed, bool addrotation);
void piracy_restore(void);
void func0f082e84(struct defaultobj *obj, struct coord *pos, struct coord *dir, struct coord *tween, bool addrotation);
void obj_detach(struct prop *prop);
bool obj_drop(struct prop *prop, bool lazy);
bool func0f084594(struct model *model, struct modelnode *node, struct coord *arg2, struct coord *arg3, struct hitthing *arg4, s32 *arg5, struct modelnode **arg6);
void glass_destroy(struct defaultobj *obj);
void door_destroy_glass(struct doorobj *door);
void func0f085050(struct prop *prop, f32 damage, struct coord *pos, s32 arg3, s32 playernum);
bool func0f085194(struct defaultobj *obj);
void obj_take_gunfire(struct defaultobj *obj, f32 damage, struct coord *pos, s32 weaponnum, s32 playernum);
void obj_damage(struct defaultobj *obj, f32 damage, struct coord *pos, s32 weaponnum, s32 playernum);
void func0f0859a0(struct prop *prop, struct shotdata *shotdata);
void obj_test_hit(struct prop *prop, struct shotdata *shotdata);
void obj_hit(struct shotdata *shotdata, struct hit *hit);
bool obj_is_healthy(struct defaultobj *obj);
bool obj_test_for_interact(struct prop *prop);
bool current_player_try_mount_hoverbike(struct prop *prop);
bool propobj_interact(struct prop *prop);
void obj_set_perim_enabled(struct prop *prop, bool enable);
bool obj_get_geometry(struct prop *prop, u8 **start, u8 **end);
void obj_get_bbox(struct prop *prop, f32 *radius, f32 *ymax, f32 *ymin);
s32 prop_play_pickup_sound(struct prop *prop, s32 weapon);
void weapon_play_pickup_sound(s32 weaponnum);
s32 ammocrate_get_pickup_ammo_qty(struct ammocrateobj *crate);
s32 weapon_get_pickup_ammo_qty(struct weaponobj *weapon);
void current_player_queue_pickup_weapon_hudmsg(u32 weaponnum, bool dual);
s32 prop_pickup_by_player(struct prop *prop, bool showhudmsg);
s32 obj_test_for_pickup(struct prop *prop);
bool func0f0899dc(struct prop *prop, struct coord *arg1, f32 *xrange, f32 *yrange);
void model_free_vertices(s32 vtxstoretype, struct model *model);
void hat_assign_to_chr(struct hatobj *hat, struct chrdata *chr);
struct prop *hat_create_for_chr(struct chrdata *chr, s32 modelnum, u32 flags);
void player_activate_remote_mine_detonator(s32 playernum);
struct weaponobj *weapon_find_landed(s32 weaponnum);
void coord_trigger_proxies(struct coord *pos, bool arg1);
void propweapon_set_dual(struct weaponobj *weapon1, struct weaponobj *weapon2);
struct prop *func0f08ae0c(struct weaponobj *weapon, struct modeldef *modeldef);
bool chr_equip_weapon(struct weaponobj *weapon, struct chrdata *chr);
void func0f08b25c(struct weaponobj *weapon, struct chrdata *chr);
struct autogunobj *laptop_deploy(s32 modelnum, struct gset *gset, struct chrdata *chr);
struct weaponobj *weapon_create_projectile_from_gset(s32 modelnum, struct gset *gset, struct chrdata *chr);
struct weaponobj *weapon_create_projectile_from_weapon_num(s32 modelnum, s32 weaponnum, struct chrdata *chr);
void weapon_delete_from_chr(struct chrdata *chr, s32 hand);
struct prop *weapon_create_for_chr(struct chrdata *chr, s32 modelnum, s32 weaponnum, u32 flags, struct weaponobj *obj, struct modeldef *modeldef);
struct prop *chr_give_weapon(struct chrdata *chr, s32 model, s32 weaponnum, u32 flags);
s32 weapon_test_for_pickup(struct prop *prop);
void weapon_set_gunfire_visible(struct prop *prop, bool visible, RoomNum room);
bool weapon_is_gunfire_visible(struct prop *prop);
s32 hat_get_type(struct prop *prop);
void doors_check_automatic(void);
void door_update_tiles(struct doorobj *door);
void door_activate_portal(struct doorobj *door);
void door_deactivate_portal(struct doorobj *door);
struct prop *door_init(struct doorobj *door, struct coord *pos, Mtxf *mtx, RoomNum *rooms, struct coord *slidedist, struct coord *centre);
void door_finish_close(struct doorobj *door);
void door_set_mode(struct doorobj *door, s32 newmode);
void doors_request_mode(struct doorobj *door, s32 newmode);
s32 func0f08e5a8(RoomNum *rooms, struct screenbox *box);
f32 obj_calculate_fade_dist_opacity_frac(struct prop *prop, f32 modelscale);
bool func0f08e8ac(struct prop *prop, struct coord *pos, f32 arg2, bool arg3);
bool pos_is_in_draw_distance(struct coord *arg);
bool door_test_for_interact(struct prop *prop);
void doors_activate(struct prop *prop, bool allowliftclose);
void doors_choose_swing_direction(struct prop *chrprop, struct doorobj *door);
bool propdoor_interact(struct prop *doorprop);
void alarm_stop_audio(void);
void gas_stop_audio(void);
bool gas_is_active(void);
Gfx *countdown_timer_render(Gfx *gdl);
void projectiles_debug(void);
void alarm_tick(void);
void func0f091030(void);
void current_player_drop_all_items(void);
void weapon_create_for_player_drop(s32 weaponnum);
void projectile_create(struct prop *fromprop, struct fireslotthing *arg1, struct coord *pos, struct coord *direction, u8 weaponnum, struct prop *targetprop);
void obj_set_model_part_visible(struct defaultobj *obj, s32 partnum, bool visible);
#endif