Files
DoomRTX/neo/doom3/game/bots/Bot_weights.h
T
2026-05-19 08:28:43 -07:00

53 lines
1.9 KiB
C++

// Bot_weights.h
//
#define MAX_INVENTORYVALUE 999999
#define EVALUATERECURSIVELY
#define MAX_WEIGHT_FILES 128
#define MAX_FUZZY_OPERATORS 8192
class idBotFuzzyWeightManager
{
public:
// Init the fuzzy weight manager.
void Init( void );
// Parses a weight config file.
weightconfig_t* ReadWeightConfig( char* filename );
void BotShutdownWeights( void );
// Fuzzy Weight simulation functions.
int FindFuzzyWeight( weightconfig_t* wc, char* name );
float FuzzyWeight( int* inventory, weightconfig_t* wc, int weightnum );
float FuzzyWeightUndecided( int* inventory, weightconfig_t* wc, int weightnum );
void EvolveFuzzySeperator_r( fuzzyseperator_t* fs );
void EvolveWeightConfig( weightconfig_t* config );
void ScaleWeight( weightconfig_t* config, char* name, float scale );
void ScaleFuzzyBalanceRange( weightconfig_t* config, float scale );
void InterbreedWeightConfigs( weightconfig_t* config1, weightconfig_t* config2, weightconfig_t* configout );
void FreeWeightConfig( weightconfig_t* config );
private:
fuzzyseperator_t* AllocFuzzyWeight( void );
bool ReadValue( idParser& source, float* value );
int ReadFuzzyWeight( idParser& source, fuzzyseperator_t* fs );
int InterbreedFuzzySeperator_r( fuzzyseperator_t* fs1, fuzzyseperator_t* fs2, fuzzyseperator_t* fsout );
fuzzyseperator_t* ReadFuzzySeperators_r( idParser& source );
void FreeWeightConfig2( weightconfig_t* config );
void FreeFuzzySeperators_r( fuzzyseperator_t* fs );
void ScaleFuzzySeperatorBalanceRange_r( fuzzyseperator_t* fs, float scale );
void ScaleFuzzySeperator_r( fuzzyseperator_t* fs, float scale );
float FuzzyWeight_r( int* inventory, fuzzyseperator_t* fs );
float FuzzyWeightUndecided_r( int* inventory, fuzzyseperator_t* fs );
weightconfig_t weightFileList[MAX_WEIGHT_FILES];
fuzzyseperator_t fuzzyseperators[MAX_FUZZY_OPERATORS];
};
extern idBotFuzzyWeightManager botFuzzyWeightManager;