mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
- Update SAV_VERSIONMINOR so 2.0/2.1 cup backup files won't load - Move specialDamage to grandprixinfo_t (from rank_t, per Sal review)
208 lines
5.4 KiB
C
208 lines
5.4 KiB
C
// DR. ROBOTNIK'S RING RACERS
|
|
//-----------------------------------------------------------------------------
|
|
// Copyright (C) 2024 by Sally "TehRealSalt" Cochenour
|
|
// Copyright (C) 2024 by Kart Krew
|
|
//
|
|
// This program is free software distributed under the
|
|
// terms of the GNU General Public License, version 2.
|
|
// See the 'LICENSE' file for more details.
|
|
//-----------------------------------------------------------------------------
|
|
/// \file k_grandprix.h
|
|
/// \brief Grand Prix mode game logic & bot behaviors
|
|
|
|
#ifndef __K_GRANDPRIX__
|
|
#define __K_GRANDPRIX__
|
|
|
|
#include "doomdef.h"
|
|
#include "doomstat.h"
|
|
#include "k_rank.h" // gpRank_t
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef enum
|
|
{
|
|
GPEVENT_NONE = 0,
|
|
GPEVENT_BONUS,
|
|
GPEVENT_SPECIAL,
|
|
} gpEvent_e;
|
|
|
|
// Please also see P_ArchiveMisc
|
|
extern struct grandprixinfo
|
|
{
|
|
boolean gp; ///< If true, then we are in a Grand Prix.
|
|
cupheader_t *cup; ///< Which cup are we playing?
|
|
UINT8 gamespeed; ///< Copy of gamespeed, just to make sure you can't cheat it with cvars
|
|
boolean encore; ///< Ditto, but for encore mode
|
|
boolean masterbots; ///< If true, all bots should be max difficulty (Master Mode)
|
|
boolean initalize; ///< If true, we need to initialize a new session.
|
|
boolean wonround; ///< If false, then we retry the map instead of going to the next.
|
|
gpEvent_e eventmode; ///< Special event mode, bots are set to spectate and a special gametype is played
|
|
UINT32 specialDamage; ///< Accumulated Sealed Star difficulty reduction
|
|
gpRank_t rank; ///< Struct containing grading information. (See also: k_rank.h)
|
|
} grandprixinfo;
|
|
|
|
/*--------------------------------------------------
|
|
UINT8 K_BotStartingDifficulty(SINT8 value);
|
|
|
|
Determines the starting difficulty of the bots
|
|
for a specific game speed.
|
|
|
|
Input Arguments:-
|
|
value - Game speed value to use.
|
|
|
|
Return:-
|
|
Bot difficulty level.
|
|
--------------------------------------------------*/
|
|
|
|
UINT8 K_BotStartingDifficulty(SINT8 value);
|
|
|
|
|
|
/*--------------------------------------------------
|
|
INT16 K_CalculateGPRankPoints(UINT8 position, UINT8 numplayers);
|
|
|
|
Calculates the number of points that a player would
|
|
recieve if they won the round.
|
|
|
|
Input Arguments:-
|
|
position - Finishing position.
|
|
numplayers - Number of players in the game.
|
|
|
|
Return:-
|
|
Number of points to give.
|
|
--------------------------------------------------*/
|
|
|
|
INT16 K_CalculateGPRankPoints(UINT8 position, UINT8 numplayers);
|
|
|
|
|
|
/*--------------------------------------------------
|
|
UINT8 K_GetGPPlayerCount(UINT8 humans)
|
|
|
|
Counts the number of total players,
|
|
including humans and bots, to put into
|
|
a GP session.
|
|
|
|
Input Arguments:-
|
|
humans - Number of human players.
|
|
|
|
Return:-
|
|
Number of both human players and CPU.
|
|
--------------------------------------------------*/
|
|
|
|
UINT8 K_GetGPPlayerCount(UINT8 humans);
|
|
|
|
|
|
/*--------------------------------------------------
|
|
void K_InitGrandPrixBots(void);
|
|
|
|
Spawns bots specifically tailored for Grand Prix mode.
|
|
--------------------------------------------------*/
|
|
|
|
void K_InitGrandPrixBots(void);
|
|
|
|
|
|
/*--------------------------------------------------
|
|
void K_LoadGrandPrixSaveGame(void)
|
|
|
|
Handles loading savedata_t info for Grand Prix context.
|
|
---------------------------------------------------*/
|
|
|
|
void K_LoadGrandPrixSaveGame(void);
|
|
|
|
|
|
/*--------------------------------------------------
|
|
void K_UpdateGrandPrixBots(void);
|
|
|
|
Updates bot settings based on the the results of the race.
|
|
--------------------------------------------------*/
|
|
|
|
void K_UpdateGrandPrixBots(void);
|
|
|
|
|
|
/*--------------------------------------------------
|
|
void K_IncreaseBotDifficulty(player_t *bot);
|
|
|
|
Increases the difficulty of this bot when they finish the race.
|
|
|
|
Input Arguments:-
|
|
bot - Player to do this for.
|
|
|
|
Return:-
|
|
None
|
|
--------------------------------------------------*/
|
|
|
|
void K_IncreaseBotDifficulty(player_t *bot);
|
|
|
|
|
|
/*--------------------------------------------------
|
|
void K_RetireBots(void);
|
|
|
|
Replaces PF_NOCONTEST bots, by refreshing their difficulty
|
|
and changing their skin.
|
|
--------------------------------------------------*/
|
|
|
|
void K_RetireBots(void);
|
|
|
|
|
|
/*--------------------------------------------------
|
|
void K_FakeBotResults(player_t *bot);
|
|
|
|
Fakes the results of the race, when all human players have
|
|
already finished and only bots were remaining.
|
|
|
|
Input Arguments:-
|
|
bot - Player to do this for.
|
|
|
|
Return:-
|
|
None
|
|
--------------------------------------------------*/
|
|
|
|
void K_FakeBotResults(player_t *bot);
|
|
|
|
|
|
/*--------------------------------------------------
|
|
void K_PlayerLoseLife(player_t *player);
|
|
|
|
Removes a life from a human player.
|
|
|
|
Input Arguments:-
|
|
player - Player to do this for.
|
|
|
|
Return:-
|
|
None
|
|
--------------------------------------------------*/
|
|
|
|
void K_PlayerLoseLife(player_t *player);
|
|
|
|
|
|
/*--------------------------------------------------
|
|
boolean K_CanChangeRules(boolean allowdemos);
|
|
|
|
Returns whenver or not the server is allowed
|
|
to change the game rules.
|
|
|
|
Input Arguments:-
|
|
allowdemos - permits this behavior during demo playback
|
|
|
|
Return:-
|
|
true if can change important gameplay rules, otherwise false.
|
|
--------------------------------------------------*/
|
|
|
|
boolean K_CanChangeRules(boolean allowdemos);
|
|
|
|
|
|
/*--------------------------------------------------
|
|
boolean K_BotDefaultSpectator(void)
|
|
|
|
Check whether bots should spectate this round.
|
|
--------------------------------------------------*/
|
|
|
|
boolean K_BotDefaultSpectator(void);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
} // extern "C"
|
|
#endif
|
|
|
|
#endif
|