Remove player hitbox rendering and fix left anchor for sensors

This commit is contained in:
Lucas S. Vieira 2025-01-22 13:13:43 -03:00
parent 426778ad6e
commit 4e76d2e5aa
2 changed files with 33 additions and 23 deletions

View file

@ -72,22 +72,22 @@ static uint8_t player_attacking;
int player_hitbox_shown;
void
_draw_player_hitbox()
{
if(player_hitbox_shown) return;
player_hitbox_shown = 1;
uint16_t
rel_vx = player_vx - (camera.pos.vx >> 12) + CENTERX,
rel_vy = player_vy - (camera.pos.vy >> 12) + CENTERY;
POLY_F4 *hitbox = get_next_prim();
increment_prim(sizeof(POLY_F4));
setPolyF4(hitbox);
setSemiTrans(hitbox, 1);
setXYWH(hitbox, rel_vx, rel_vy, 16, player_height);
setRGB0(hitbox, 0xfb, 0x94, 0xdc);
sort_prim(hitbox, OTZ_LAYER_OBJECTS);
}
/* void */
/* _draw_player_hitbox() */
/* { */
/* if(player_hitbox_shown) return; */
/* player_hitbox_shown = 1; */
/* uint16_t */
/* rel_vx = player_vx - (camera.pos.vx >> 12) + CENTERX, */
/* rel_vy = player_vy - (camera.pos.vy >> 12) + CENTERY; */
/* POLY_F4 *hitbox = get_next_prim(); */
/* increment_prim(sizeof(POLY_F4)); */
/* setPolyF4(hitbox); */
/* setSemiTrans(hitbox, 1); */
/* setXYWH(hitbox, rel_vx, rel_vy, 16, player_height); */
/* setRGB0(hitbox, 0xfb, 0x94, 0xdc); */
/* sort_prim(hitbox, OTZ_LAYER_OBJECTS); */
/* } */
void
object_update(ObjectState *state, ObjectTableEntry *typedata, VECTOR *pos)
@ -106,9 +106,9 @@ object_update(ObjectState *state, ObjectTableEntry *typedata, VECTOR *pos)
: HEIGHT_RADIUS_NORMAL) << 1;
player_vy = (player.pos.vy >> 12) - (player_height >> 1) - 1;
if(debug_mode > 1) {
_draw_player_hitbox();
}
/* if(debug_mode > 1) { */
/* _draw_player_hitbox(); */
/* } */
switch(state->id) {
default: break;

View file

@ -447,26 +447,26 @@ _player_update_collision_tb(Player *player)
case CDIR_RWALL:
grndir = CDIR_RWALL;
ceildir = CDIR_LWALL;
anchory_left += grn_grnd_dist + 1;
anchory_left += grn_grnd_dist;
anchory_right -= grn_grnd_dist - 1;
break;
case CDIR_LWALL:
grndir = CDIR_LWALL;
ceildir = CDIR_RWALL;
anchory_left -= grn_grnd_dist - 1;
anchory_right += grn_grnd_dist + 1;
anchory_right += grn_grnd_dist;
break;
case CDIR_CEILING:
grndir = CDIR_CEILING;
ceildir = CDIR_FLOOR;
anchorx_left += grn_grnd_dist - 1;
anchorx_right -= grn_grnd_dist + 1;
anchorx_right -= grn_grnd_dist;
break;
case CDIR_FLOOR:
default:
grndir = CDIR_FLOOR;
ceildir = CDIR_CEILING;
anchorx_left -= grn_grnd_dist + 1;
anchorx_left -= grn_grnd_dist;
anchorx_right += grn_grnd_dist - 1;
break;
};
@ -515,6 +515,16 @@ _player_update_collision_tb(Player *player)
_draw_sensor(anchorx_right, anchory_right,
grndir, grn_mag,
0x38, 0xff, 0xa2);
// Ceiling sensors
_draw_sensor(anchorx_left, anchory_left,
ceildir, ceil_mag,
0x00, 0xae, 0xef);
_draw_sensor(anchorx_right, anchory_right,
ceildir, ceil_mag,
0xff, 0xf2, 0x38);
// Ledge sensor
if((player->vel.vz == 0) && (player->gsmode == CDIR_FLOOR)) {
_draw_sensor(anchorx, anchory_right,
CDIR_FLOOR, LEDGE_SENSOR_MAGNITUDE,