Add const, move driftskill to botdata
No more messing with respawn waypoints in K_BotTicker
This commit is contained in:
parent
bc4408b203
commit
c9802c36c8
6 changed files with 32 additions and 73 deletions
|
|
@ -439,9 +439,6 @@ struct botvars_t
|
|||
|
||||
fixed_t rubberband; // Bot rubberband value
|
||||
UINT16 controller; // Special bot controller linedef ID
|
||||
|
||||
fixed_t driftskill; // The bot's "skill" at drifts.
|
||||
// Determines how soon a bot starts to drift.
|
||||
};
|
||||
|
||||
struct sonicloopcamvars_t
|
||||
|
|
|
|||
|
|
@ -2664,10 +2664,8 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
|
|||
|
||||
p->botvars.rubberband = FRACUNIT;
|
||||
p->botvars.controller = UINT16_MAX;
|
||||
p->botvars.driftskill =
|
||||
FixedMul(MAXDRIFTSKILL, K_BotDetermineDriftSkill(p));
|
||||
|
||||
K_BotRespawn(p);
|
||||
K_BotReborn(p);
|
||||
|
||||
if (follower)
|
||||
P_RemoveMobj(follower);
|
||||
|
|
|
|||
|
|
@ -1067,18 +1067,8 @@ static void K_DrawPredictionDebug(botdata_t *bd, const player_t *player)
|
|||
}
|
||||
}
|
||||
|
||||
/*--------------------------------------------------
|
||||
fixed_t K_BotDetermineDriftSkill(player_t *player)
|
||||
|
||||
Calculates drift skill for a player based on stats.
|
||||
|
||||
Input Arguments:-
|
||||
player - Player to get drift skill for.
|
||||
|
||||
Return:-
|
||||
Calculated drift skill.
|
||||
--------------------------------------------------*/
|
||||
fixed_t K_BotDetermineDriftSkill(player_t *player)
|
||||
// Calculates drift skill for a player based on stats.
|
||||
fixed_t K_BotDetermineDriftSkill(const player_t *player)
|
||||
{
|
||||
return ((FRACUNIT * (player->kartspeed + player->kartweight)) / 18);
|
||||
}
|
||||
|
|
@ -1099,12 +1089,10 @@ static void K_WaypointGetDirectionVector(waypoint_t *wp1, waypoint_t *wp2, vecto
|
|||
FV3_Normalize(a_o);
|
||||
}
|
||||
|
||||
/*--------------------------------------------------
|
||||
void K_BotSetDriftState(player_t *player, botdrift_t newstate, tic_t lockout)
|
||||
|
||||
See header file for description.
|
||||
--------------------------------------------------*/
|
||||
void K_BotSetDriftState(player_t *player, botdrift_e newstate, tic_t lockout)
|
||||
// Changes a bot's drift state.
|
||||
// Resets the drift timer if the old and new state are different.
|
||||
// If lockout is non-zero, apply drift lockout for this many tics.
|
||||
void K_BotSetDriftState(const player_t *player, botdrift_e newstate, tic_t lockout)
|
||||
{
|
||||
botdata_t *bd = &botdata[player - players];
|
||||
|
||||
|
|
@ -1121,7 +1109,7 @@ void K_BotSetDriftState(player_t *player, botdrift_e newstate, tic_t lockout)
|
|||
#define MINBOTDRIFT (KART_FULLTURN * 2) / 3 // 0.66
|
||||
|
||||
// Begins and ends "forced" drifts on a per-waypoint basis.
|
||||
static void K_BotStartDrift(botdata_t *bd, player_t* player)
|
||||
static void K_BotStartDrift(botdata_t *bd, const player_t* player)
|
||||
{
|
||||
// Handle DRIFTING towards waypoints!
|
||||
boolean shouldDrift;
|
||||
|
|
@ -1192,7 +1180,7 @@ static void K_BotStartDrift(botdata_t *bd, player_t* player)
|
|||
// and how fast we're moving.
|
||||
fixed_t driftpotential = M_RandomKey(MAXDRIFTSKILL);
|
||||
|
||||
if ((driftpotential <= player->botvars.driftskill) &&
|
||||
if ((driftpotential <= bd->driftskill) &&
|
||||
(botDriftSpeed <= player->speed))
|
||||
{
|
||||
shouldDrift = true;
|
||||
|
|
@ -1360,7 +1348,7 @@ static INT32 K_HandleBotTrack(botdata_t *bd, const player_t *player, angle_t des
|
|||
|
||||
#undef MINBOTDRIFT
|
||||
|
||||
static void K_IncrementBotRespawn(player_t *player, UINT8 *respawn, const UINT8 respawnmax)
|
||||
static void K_IncrementBotRespawn(const player_t *player, UINT8 *respawn, const UINT8 respawnmax)
|
||||
{
|
||||
const fixed_t requireDist = (12*player->mo->scale) / FRACUNIT;
|
||||
INT32 progress = player->distancetofinishprev - player->distancetofinish;
|
||||
|
|
@ -1538,7 +1526,7 @@ static void K_IncrementBotRespawn(player_t *player, UINT8 *respawn, const UINT8
|
|||
}*/
|
||||
|
||||
// updates server-sided bot logic
|
||||
void K_BotTicker(player_t *player)
|
||||
void K_BotTicker(const player_t *player)
|
||||
{
|
||||
angle_t destangle = 0;
|
||||
INT32 turnamt = 0;
|
||||
|
|
@ -1600,7 +1588,7 @@ void K_BotTicker(player_t *player)
|
|||
if (bd->respawnconfirm >= BOTRESPAWNCONFIRM || player->speed < 10*FRACUNIT)
|
||||
{
|
||||
// Now a clean function! Neat, eh?
|
||||
K_SetRespawnAtNextWaypoint(player);
|
||||
//K_SetRespawnAtNextWaypoint(player);
|
||||
|
||||
// WHAT ARE YOU DOING??? RACE ALREADY!
|
||||
P_DamageMobj(player->mo, NULL, NULL, 1, DMG_INSTAKILL);
|
||||
|
|
@ -1834,11 +1822,13 @@ void K_UpdateBotGameplayVars(player_t *player)
|
|||
}
|
||||
|
||||
// resets some botdata stuff after respawning
|
||||
void K_BotRespawn(player_t *player)
|
||||
void K_BotReborn(const player_t *player)
|
||||
{
|
||||
botdata_t *bd = &botdata[player - players];
|
||||
memset(bd, 0, sizeof(*bd));
|
||||
|
||||
bd->driftstate = DRIFTSTATE_AUTO;
|
||||
bd->driftskill = FixedMul(MAXDRIFTSKILL, K_BotDetermineDriftSkill(player));
|
||||
|
||||
// drift parameters, just fixed values for now
|
||||
bd->driftmaxdist = 200 + gamespeed*50;
|
||||
|
|
@ -1846,7 +1836,7 @@ void K_BotRespawn(player_t *player)
|
|||
bd->driftstatedelay = TICRATE/2 - gamespeed*5;
|
||||
}
|
||||
|
||||
void K_BotResetItemConfirm(player_t *player, boolean setdelay)
|
||||
void K_BotResetItemConfirm(const player_t *player, boolean setdelay)
|
||||
{
|
||||
botdata_t *bd = &botdata[player - players];
|
||||
bd->itemconfirm = 0;
|
||||
|
|
|
|||
40
src/k_bot.h
40
src/k_bot.h
|
|
@ -90,6 +90,9 @@ struct botdata_t
|
|||
UINT16 driftpowerdiv; // arbitrary divider on drift turning
|
||||
UINT16 driftstatedelay; // max time to wait between drift state changes
|
||||
|
||||
fixed_t driftskill; // The bot's "skill" at drifts.
|
||||
// Determines how soon a bot starts to drift.
|
||||
|
||||
boolean acceldown, brakedown, driftdown, itemdown; // buttons
|
||||
boolean dolookback; // look out behind you
|
||||
boolean itemwasdown; // last tic's item button
|
||||
|
|
@ -99,7 +102,7 @@ struct botdata_t
|
|||
|
||||
// AVAILABLE FOR LUA
|
||||
|
||||
void K_BotTicker(player_t *player);
|
||||
void K_BotTicker(const player_t *player);
|
||||
|
||||
void K_DrawBotDebugger(const player_t *player);
|
||||
|
||||
|
|
@ -398,40 +401,13 @@ void K_UpdateBotGameplayVars(player_t *player);
|
|||
// Item usage part of ticcmd generation.
|
||||
void K_BotItemUsage(botdata_t *bd, const player_t *player);
|
||||
|
||||
void K_BotRespawn(player_t *player);
|
||||
void K_BotReborn(const player_t *player);
|
||||
|
||||
void K_BotResetItemConfirm(player_t *player, boolean setdelay);
|
||||
void K_BotResetItemConfirm(const player_t *player, boolean setdelay);
|
||||
|
||||
/*--------------------------------------------------
|
||||
fixed_t K_BotDetermineDriftSkill(player_t *player)
|
||||
fixed_t K_BotDetermineDriftSkill(const player_t *player);
|
||||
|
||||
Calculates drift skill for a player based on stats.
|
||||
|
||||
Input Arguments:-
|
||||
player - Player to get drift skill for.
|
||||
|
||||
Return:-
|
||||
Calculated drift skill.
|
||||
--------------------------------------------------*/
|
||||
|
||||
fixed_t K_BotDetermineDriftSkill(player_t *player);
|
||||
|
||||
/*--------------------------------------------------
|
||||
void K_BotSetDriftState(player_t *player, botdrift_t newstate, tic_t lockout)
|
||||
|
||||
Changes a bot's drift state.
|
||||
Resets the drift timer if the old and new state are different.
|
||||
|
||||
Input Arguments:-
|
||||
player - Player to set drift state for.
|
||||
newstate - The new drift state.
|
||||
lockout - If non-zero, apply drift lockout for this many tics.
|
||||
|
||||
Return:-
|
||||
None
|
||||
--------------------------------------------------*/
|
||||
|
||||
void K_BotSetDriftState(player_t *player, botdrift_e newstate, tic_t lockout);
|
||||
void K_BotSetDriftState(const player_t *player, botdrift_e newstate, tic_t lockout);
|
||||
|
||||
botdata_t *K_GetBotData(UINT8 num);
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ enum botvars {
|
|||
botvars_diffincrease,
|
||||
botvars_rival,
|
||||
botvars_rubberband,
|
||||
botvars_driftskill,
|
||||
};
|
||||
|
||||
static const char *const botvars_opt[] = {
|
||||
|
|
@ -35,7 +34,6 @@ static const char *const botvars_opt[] = {
|
|||
"diffincrease",
|
||||
"rival",
|
||||
"rubberband",
|
||||
"driftskill",
|
||||
NULL
|
||||
};
|
||||
|
||||
|
|
@ -69,9 +67,6 @@ static int botvars_get(lua_State *L)
|
|||
case botvars_rubberband:
|
||||
lua_pushfixed(L, botvars->rubberband);
|
||||
break;
|
||||
case botvars_driftskill:
|
||||
lua_pushfixed(L, botvars->driftskill);
|
||||
break;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -107,9 +102,6 @@ static int botvars_set(lua_State *L)
|
|||
case botvars_rubberband:
|
||||
botvars->rubberband = luaL_checkfixed(L, 3);
|
||||
break;
|
||||
case botvars_driftskill:
|
||||
botvars->driftskill = luaL_checkfixed(L, 3);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -129,6 +121,7 @@ enum botdata {
|
|||
botdata_driftmaxdist,
|
||||
botdata_driftpowerdiv,
|
||||
botdata_driftstatedelay,
|
||||
botdata_driftskill,
|
||||
botdata_acceldown,
|
||||
botdata_brakedown,
|
||||
botdata_driftdown,
|
||||
|
|
@ -152,6 +145,7 @@ static const char *const botdata_opt[] = {
|
|||
"driftmaxdist",
|
||||
"driftpowerdiv",
|
||||
"driftstatedelay",
|
||||
"driftskill",
|
||||
"acceldown",
|
||||
"brakedown",
|
||||
"driftdown",
|
||||
|
|
@ -209,6 +203,9 @@ static int botdata_get(lua_State *L)
|
|||
case botdata_driftstatedelay:
|
||||
lua_pushinteger(L, botdata->driftstatedelay);
|
||||
return 1;
|
||||
case botdata_driftskill:
|
||||
lua_pushfixed(L, botdata->driftskill);
|
||||
return 1;
|
||||
case botdata_acceldown:
|
||||
lua_pushboolean(L, botdata->acceldown);
|
||||
return 1;
|
||||
|
|
@ -282,6 +279,9 @@ static int botdata_set(lua_State *L)
|
|||
case botdata_driftstatedelay:
|
||||
botdata->driftstatedelay = luaL_checkinteger(L, 3);
|
||||
return 0;
|
||||
case botdata_driftskill:
|
||||
botdata->driftskill = luaL_checkfixed(L, 3);
|
||||
return 0;
|
||||
case botdata_acceldown:
|
||||
botdata->acceldown = luaL_checkboolean(L, 3);
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -402,7 +402,6 @@ static void P_NetArchivePlayers(savebuffer_t *save)
|
|||
WRITEUINT8(save->p, players[i].botvars.rival);
|
||||
WRITEFIXED(save->p, players[i].botvars.rubberband);
|
||||
WRITEUINT16(save->p, players[i].botvars.controller);
|
||||
WRITEFIXED(save->p, players[i].botvars.driftskill);
|
||||
|
||||
WRITEFIXED(save->p, players[i].outrun);
|
||||
WRITEUINT8(save->p, players[i].outruntime);
|
||||
|
|
@ -750,7 +749,6 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
|
|||
players[i].botvars.rival = (boolean)READUINT8(save->p);
|
||||
players[i].botvars.rubberband = READFIXED(save->p);
|
||||
players[i].botvars.controller = READUINT16(save->p);
|
||||
players[i].botvars.driftskill = READFIXED(save->p);
|
||||
|
||||
players[i].outrun = READFIXED(save->p);
|
||||
players[i].outruntime = READUINT8(save->p);
|
||||
|
|
|
|||
Loading…
Reference in a new issue