Rename some mpstats symbols

This commit is contained in:
Ryan Dwyer 2025-02-19 11:33:25 +10:00
parent 8330c2ed3b
commit b2c19a5fa7
7 changed files with 60 additions and 50 deletions

View File

@ -4623,20 +4623,20 @@ void chr_damage(struct chrdata *chr, f32 damage, struct coord *vector, struct gs
if (!alreadydead && hitpart) {
switch (hitpart) {
case HITPART_HEAD:
mpstats_increment_player_shot_count2(gset, SHOTREGION_HEAD);
mpstats_increment_player_shotcount(gset, SHOTREGION_HEAD);
break;
case HITPART_GUN:
mpstats_increment_player_shot_count2(gset, SHOTREGION_GUN);
mpstats_increment_player_shotcount(gset, SHOTREGION_GUN);
break;
case HITPART_HAT:
mpstats_increment_player_shot_count2(gset, SHOTREGION_HAT);
mpstats_increment_player_shotcount(gset, SHOTREGION_HAT);
break;
case HITPART_PELVIS:
case HITPART_TORSO:
mpstats_increment_player_shot_count2(gset, SHOTREGION_BODY);
mpstats_increment_player_shotcount(gset, SHOTREGION_BODY);
break;
default:
mpstats_increment_player_shot_count2(gset, SHOTREGION_LIMB);
mpstats_increment_player_shotcount(gset, SHOTREGION_LIMB);
break;
}
}

View File

@ -253,44 +253,44 @@ char *endscreen_menu_text_num_kills(struct menuitem *item)
char *endscreen_menu_text_num_shots(struct menuitem *item)
{
sprintf(g_StringPointer, "%d", mpstats_get_player_shot_count_by_region(SHOTREGION_TOTAL));
sprintf(g_StringPointer, "%d", mpstats_get_player_shotcount_by_region(SHOTREGION_TOTAL));
return g_StringPointer;
}
char *endscreen_menu_text_num_head_shots(struct menuitem *item)
{
sprintf(g_StringPointer, "%d", mpstats_get_player_shot_count_by_region(SHOTREGION_HEAD));
sprintf(g_StringPointer, "%d", mpstats_get_player_shotcount_by_region(SHOTREGION_HEAD));
return g_StringPointer;
}
char *endscreen_menu_text_num_body_shots(struct menuitem *item)
{
sprintf(g_StringPointer, "%d", mpstats_get_player_shot_count_by_region(SHOTREGION_BODY));
sprintf(g_StringPointer, "%d", mpstats_get_player_shotcount_by_region(SHOTREGION_BODY));
return g_StringPointer;
}
char *endscreen_menu_text_num_limb_shots(struct menuitem *item)
{
sprintf(g_StringPointer, "%d", mpstats_get_player_shot_count_by_region(SHOTREGION_LIMB));
sprintf(g_StringPointer, "%d", mpstats_get_player_shotcount_by_region(SHOTREGION_LIMB));
return g_StringPointer;
}
char *endscreen_menu_text_num_other_shots(struct menuitem *item)
{
u32 total = mpstats_get_player_shot_count_by_region(SHOTREGION_GUN) + mpstats_get_player_shot_count_by_region(SHOTREGION_HAT);
u32 total = mpstats_get_player_shotcount_by_region(SHOTREGION_GUN) + mpstats_get_player_shotcount_by_region(SHOTREGION_HAT);
sprintf(g_StringPointer, "%d", total);
return g_StringPointer;
}
char *endscreen_menu_text_accuracy(struct menuitem *item)
{
s32 total = mpstats_get_player_shot_count_by_region(SHOTREGION_TOTAL);
s32 numhead = mpstats_get_player_shot_count_by_region(SHOTREGION_HEAD);
s32 numbody = mpstats_get_player_shot_count_by_region(SHOTREGION_BODY);
s32 numlimb = mpstats_get_player_shot_count_by_region(SHOTREGION_LIMB);
s32 numgun = mpstats_get_player_shot_count_by_region(SHOTREGION_GUN);
s32 numhat = mpstats_get_player_shot_count_by_region(SHOTREGION_HAT);
s32 numobject = mpstats_get_player_shot_count_by_region(SHOTREGION_OBJECT);
s32 total = mpstats_get_player_shotcount_by_region(SHOTREGION_TOTAL);
s32 numhead = mpstats_get_player_shotcount_by_region(SHOTREGION_HEAD);
s32 numbody = mpstats_get_player_shotcount_by_region(SHOTREGION_BODY);
s32 numlimb = mpstats_get_player_shotcount_by_region(SHOTREGION_LIMB);
s32 numgun = mpstats_get_player_shotcount_by_region(SHOTREGION_GUN);
s32 numhat = mpstats_get_player_shotcount_by_region(SHOTREGION_HAT);
s32 numobject = mpstats_get_player_shotcount_by_region(SHOTREGION_OBJECT);
f32 accuracy;
if (total > 0) {

View File

@ -2018,8 +2018,8 @@ void mp_calculate_awards(void)
g_Vars.currentplayer->award1 = NULL;
g_Vars.currentplayer->award2 = NULL;
metrics[i].numshots = mpstats_get_player_shot_count_by_region(SHOTREGION_TOTAL);
metrics[i].numheadshots = mpstats_get_player_shot_count_by_region(SHOTREGION_HEAD);
metrics[i].numshots = mpstats_get_player_shotcount_by_region(SHOTREGION_TOTAL);
metrics[i].numheadshots = mpstats_get_player_shotcount_by_region(SHOTREGION_HEAD);
metrics[i].numkills = 0;
metrics[i].numdeaths = 0;
metrics[i].numsuicides = 0;
@ -2056,12 +2056,12 @@ void mp_calculate_awards(void)
metrics[i].longestlife = g_Vars.playerstats[i].longestlife;
metrics[i].shortestlife = g_Vars.playerstats[i].shortestlife;
sum = mpstats_get_player_shot_count_by_region(SHOTREGION_HEAD)
+ mpstats_get_player_shot_count_by_region(SHOTREGION_BODY)
+ mpstats_get_player_shot_count_by_region(SHOTREGION_LIMB)
+ mpstats_get_player_shot_count_by_region(SHOTREGION_GUN)
+ mpstats_get_player_shot_count_by_region(SHOTREGION_HAT)
+ mpstats_get_player_shot_count_by_region(SHOTREGION_OBJECT);
sum = mpstats_get_player_shotcount_by_region(SHOTREGION_HEAD)
+ mpstats_get_player_shotcount_by_region(SHOTREGION_BODY)
+ mpstats_get_player_shotcount_by_region(SHOTREGION_LIMB)
+ mpstats_get_player_shotcount_by_region(SHOTREGION_GUN)
+ mpstats_get_player_shotcount_by_region(SHOTREGION_HAT)
+ mpstats_get_player_shotcount_by_region(SHOTREGION_OBJECT);
if (metrics[i].numshots > 0) {
metrics[i].accuracyfrac = sum / (f32)metrics[i].numshots;

View File

@ -17,41 +17,51 @@
#include "data.h"
#include "types.h"
u32 var80070590 = 0x00000000;
bool g_AllowRegionShot = false;
void mpstats_increment_player_shot_count(struct gset *gset, s32 region)
void mpstats_increment_player_shotcount_projectiles(struct gset *gset, s32 region)
{
if (!gset_has_weapon_flag(gset->weaponnum, WEAPONFLAG_DONTCOUNTSHOTS)) {
g_Vars.currentplayerstats->shotcount[region]++;
}
}
void mpstats_increment_player_shot_count2(struct gset *gset, s32 region)
/**
* The usage of g_AllowRegionShot ensures that the sum of region shots does not
* exceed the total shots.
*
* The sequence of calls when firing a shot is:
* - Call mpstats_increment_player_shotcount with SHOTREGION_TOTAL.
* - For each hits that landed (there can be multiple with the shotgun),
* call mpstats_increment_player_shotcount with that region.
* - Call mpstats_end_shot so any unexpected region shots will not be counted.
*/
void mpstats_increment_player_shotcount(struct gset *gset, s32 region)
{
if (region == 0) {
if (region == SHOTREGION_TOTAL) {
if (!gset_has_weapon_flag(gset->weaponnum, WEAPONFLAG_DONTCOUNTSHOTS)) {
var80070590 = 1;
g_AllowRegionShot = true;
g_Vars.currentplayerstats->shotcount[region]++;
}
} else {
if (var80070590) {
if (g_AllowRegionShot) {
if (!gset_has_weapon_flag(gset->weaponnum, WEAPONFLAG_DONTCOUNTSHOTS)) {
g_Vars.currentplayerstats->shotcount[region]++;
}
var80070590 = 0;
g_AllowRegionShot = false;
}
}
}
void mpstats0f0b0520(void)
void mpstats_end_shot(void)
{
var80070590 = 0;
g_AllowRegionShot = false;
}
s32 mpstats_get_player_shot_count_by_region(u32 type)
s32 mpstats_get_player_shotcount_by_region(s32 region)
{
return g_Vars.currentplayerstats->shotcount[type];
return g_Vars.currentplayerstats->shotcount[region];
}
void mpstats_increment_total_kill_count(void)

View File

@ -1316,7 +1316,7 @@ void hand_tick_attack(s32 handnum)
// right hand is not (ie. prevent firing both guns on the same tick)
if (handnum == HAND_RIGHT || !bgun_is_firing(HAND_RIGHT)) {
chr_uncloak_temporarily(g_Vars.currentplayer->prop->chr);
mpstats_increment_player_shot_count2(&gset, 0);
mpstats_increment_player_shotcount(&gset, SHOTREGION_TOTAL);
if (weaponnum == WEAPON_SHOTGUN) {
shot_create(handnum, true, true, 1, true);
@ -1329,7 +1329,7 @@ void hand_tick_attack(s32 handnum)
shot_create(handnum, true, true, bgun_get_shots_to_take(handnum), g_Vars.mplayerisrunning);
}
mpstats0f0b0520();
mpstats_end_shot();
}
break;
case HANDATTACKTYPE_MELEE:

View File

@ -7161,12 +7161,12 @@ bool projectile_tick(struct defaultobj *obj, bool *embedded)
if (obj->projectile->ownerprop && obj->projectile->ownerprop->type == PROPTYPE_PLAYER) {
s32 prevplayernum = g_Vars.currentplayernum;
set_current_player_num(playermgr_get_player_num_by_prop(obj->projectile->ownerprop));
mpstats_increment_player_shot_count(&weapon->gset, SHOTREGION_TOTAL);
mpstats_increment_player_shotcount_projectiles(&weapon->gset, SHOTREGION_TOTAL);
if (g_EmbedProp != NULL) {
if (g_EmbedProp->type == PROPTYPE_OBJ) {
if (obj_is_healthy(g_EmbedProp->obj)) {
mpstats_increment_player_shot_count(&weapon->gset, SHOTREGION_OBJECT);
mpstats_increment_player_shotcount_projectiles(&weapon->gset, SHOTREGION_OBJECT);
}
} else if (g_EmbedProp->type == PROPTYPE_CHR || g_EmbedProp->type == PROPTYPE_PLAYER) {
struct chrdata *embedchr = g_EmbedProp->chr;
@ -7185,20 +7185,20 @@ bool projectile_tick(struct defaultobj *obj, bool *embedded)
case 0:
break;
case HITPART_HEAD:
mpstats_increment_player_shot_count(&weapon->gset, SHOTREGION_HEAD);
mpstats_increment_player_shotcount_projectiles(&weapon->gset, SHOTREGION_HEAD);
break;
case HITPART_GUN:
mpstats_increment_player_shot_count(&weapon->gset, SHOTREGION_GUN);
mpstats_increment_player_shotcount_projectiles(&weapon->gset, SHOTREGION_GUN);
break;
case HITPART_HAT:
mpstats_increment_player_shot_count(&weapon->gset, SHOTREGION_HAT);
mpstats_increment_player_shotcount_projectiles(&weapon->gset, SHOTREGION_HAT);
break;
case HITPART_PELVIS:
case HITPART_TORSO:
mpstats_increment_player_shot_count(&weapon->gset, SHOTREGION_BODY);
mpstats_increment_player_shotcount_projectiles(&weapon->gset, SHOTREGION_BODY);
break;
default:
mpstats_increment_player_shot_count(&weapon->gset, SHOTREGION_LIMB);
mpstats_increment_player_shotcount_projectiles(&weapon->gset, SHOTREGION_LIMB);
break;
}
}
@ -14853,7 +14853,7 @@ void obj_hit(struct shotdata *shotdata, struct hit *hit)
// Increment object hit count
if (obj_is_healthy(obj) && obj_is_mortal(obj) && hit->slowsbullet) {
mpstats_increment_player_shot_count2(&shotdata->gset, SHOTREGION_OBJECT);
mpstats_increment_player_shotcount(&shotdata->gset, SHOTREGION_OBJECT);
}
// Play hit sound

View File

@ -4,10 +4,10 @@
#include "data.h"
#include "types.h"
void mpstats_increment_player_shot_count(struct gset *gset, s32 region);
void mpstats_increment_player_shot_count2(struct gset *gset, s32 region);
void mpstats0f0b0520(void);
s32 mpstats_get_player_shot_count_by_region(u32 type);
void mpstats_increment_player_shotcount_projectiles(struct gset *gset, s32 region);
void mpstats_increment_player_shotcount(struct gset *gset, s32 region);
void mpstats_end_shot(void);
s32 mpstats_get_player_shotcount_by_region(s32 region);
void mpstats_increment_total_kill_count(void);
void mpstats_increment_total_knockout_count(void);
void mpstats_decrement_total_knockout_count(void);