Files
ZombieGame-Rawr/inc/Exam_HelperStructs.h
github-classroom[bot] 294e9ab735 Initial commit
2025-05-08 08:33:11 +00:00

190 lines
3.8 KiB
C++

#pragma once
#pragma region MISC
#include <string>
struct SteeringPlugin_Output
{
Elite::Vector2 LinearVelocity = { 0.f,0.f };
float AngularVelocity = 0.f;
bool AutoOrient = true;
bool RunMode = false;
};
struct PluginInfo
{
std::string BotName = "NoName";
std::string Student_Name = "John Cena";
std::string Student_Class = "2DAE00";
std::string LB_Password = "ABC123";
};
struct GameDebugParams //Debuggin Purposes only (Ignored during release build)
{
GameDebugParams(bool spawnEnemies = true, int enemyCount = 20, bool godMode = false, bool autoFollowCam = false)
{
SpawnEnemies = spawnEnemies;
GodMode = godMode;
AutoFollowCam = autoFollowCam;
EnemyCount = enemyCount;
}
bool SpawnEnemies = true; //Spawn enemies?
int EnemyCount = 20; //Amount of enemies?
int ItemCount = 40; //Amount of items?
bool GodMode = false; //Use GodMode? (Invincible)
bool IgnoreEnergy = false; //Ignore energy depletion
bool AutoFollowCam = false; //Auto follow the player
bool RenderUI = false; //Render Player UI (Parameters)
bool AutoGrabClosestItem = false; //Auto Grab closest item (Item_Grab)
std::string LevelFile = "GameLevel.gppl"; //Level to load?
int Seed = -1; //Seed for random generator
int StartingDifficultyStage = 0; // Overwrites the difficulty stage
bool InfiniteStamina = false; // Agent has infinite stamina
bool SpawnDebugPistol = false; // Spawns pistol with 1000 ammo at start
bool SpawnDebugShotgun = false; // Spawns shotgun with 1000 ammo at start
bool SpawnPurgeZonesOnMiddleClick = false; // Middle mouse clicks spawn purge zones
bool SpawnZombieOnRightClick = false; // Right mouse clicks spawn purge zones
bool PrintDebugMessages = true;
bool ShowDebugItemNames = true;
};
#pragma endregion
#pragma region ENTITIES
//Enumerations
//************
enum class eEntityType
{
ITEM,
ENEMY,
PURGEZONE,
//@END
_LAST = PURGEZONE
};
enum class eItemType
{
PISTOL,
SHOTGUN,
MEDKIT,
FOOD,
GARBAGE,
RANDOM_DROP, //Internal Only
RANDOM_DROP_WITH_CHANCE, //Internal Only
//@END
_LAST = GARBAGE
};
enum class eEnemyType
{
DEFAULT,
ZOMBIE_NORMAL,
ZOMBIE_RUNNER,
ZOMBIE_HEAVY,
RANDOM_ENEMY, //Internal Only
//...
//@END
_LAST = ZOMBIE_HEAVY
};
//Structures
//**********
struct StatisticsInfo
{
int Score; //Current Score
float Difficulty; //Current difficulty (0 > 1 > ... / Easy > Normal > Hard)
float TimeSurvived; //Total time survived
float KillCountdown; //Make sure to make a kill before this timer runs out
int NumEnemiesKilled; //Amount of enemies killed
int NumEnemiesHit; //Amount of enemy hits
int NumItemsPickUp; //Amount of items picked up
int NumMissedShots; //Shots missed after firing
int NumChkpntsReached; //Amount of checkpoints reached
};
struct FOVStats
{
int NumHouses;
int NumEnemies;
int NumItems;
int NumPurgeZones;
};
struct HouseInfo
{
Elite::Vector2 Center;
Elite::Vector2 Size;
};
struct EnemyInfo
{
eEnemyType Type;
Elite::Vector2 Location;
Elite::Vector2 LinearVelocity;
int EnemyHash = 0;
float Size;
float Health;
};
struct ItemInfo
{
eItemType Type;
Elite::Vector2 Location;
int ItemHash = 0;
int Value = 0;
};
struct PurgeZoneInfo
{
Elite::Vector2 Center;
float Radius = 0.0f;
int ZoneHash = 0;
};
struct EntityInfo
{
eEntityType Type;
Elite::Vector2 Location;
int EntityHash = 0;
};
struct WorldInfo
{
Elite::Vector2 Center;
Elite::Vector2 Dimensions;
};
struct AgentInfo
{
float Stamina;
float Health;
float Energy;
bool RunMode;
bool IsInHouse;
bool Bitten; // agent was bitten by a zombie this frame (for internal use)
bool WasBitten; // agent was bitten by a zombie recently (0.5 seconds)
bool Death;
float FOV_Angle;
float FOV_Range;
Elite::Vector2 LinearVelocity;
float AngularVelocity;
float CurrentLinearSpeed;
Elite::Vector2 Position;
float Orientation;
float MaxLinearSpeed;
float MaxAngularSpeed;
float GrabRange;
float AgentSize;
};
#pragma endregion