2025-07-25 21:45:33 +03:00

167 lines
4.7 KiB
C

#pragma once
// @source: master/game/shared/cstrike15/gametypes.h
#pragma region valve_gametypes
enum EGameType : int
{
GAMETYPE_UNKNOWN = -1,
GAMETYPE_CLASSIC,
GAMETYPE_GUNGAME,
GAMETYPE_TRAINING,
GAMETYPE_CUSTOM,
GAMETYPE_COOPERATIVE,
GAMETYPE_SKIRMISH,
GAMETYPE_FREEFORALL
};
enum EGameMode : int
{
GAMEMODE_UNKNOWN = -1,
// GAMETYPE_CLASSIC
GAMEMODE_CLASSIC_CASUAL = 0,
GAMEMODE_CLASSIC_COMPETITIVE,
GAMEMODE_CLASSIC_SCRIM_COMPETITIVE2V2,
GAMEMODE_CLASSIC_SCRIM_COMPETITIVE5V5,
// GAMETYPE_GUNGAME
GAMEMODE_GUNGAME_PROGRESSIVE = 0,
GAMEMODE_GUNGAME_BOMB,
GAMEMODE_GUNGAME_DEATHMATCH,
// GAMETYPE_TRAINING
GAMEMODE_TRAINING_DEFAULT = 0,
// GAMETYPE_CUSTOM
GAMEMODE_CUSTOM_DEFAULT = 0,
// GAMETYPE_COOPERATIVE
GAMEMODE_COOPERATIVE_DEFAULT = 0,
GAMEMODE_COOPERATIVE_MISSION,
// GAMETYPE_SKIRMISH
GAMEMODE_SKIRMISH_DEFAULT = 0,
// GAMETYPE_FREEFORALL
GAMEMODE_FREEFORALL_SURVIVAL = 0
};
#pragma endregion
enum ELifeState : int
{
LIFE_ALIVE = 0,
LIFE_DYING,
LIFE_DEAD,
LIFE_RESPAWNABLE,
LIFE_DISCARDBODY
};
enum EFlags : int
{
FL_ONGROUND = (1 << 0), // entity is at rest / on the ground
FL_DUCKING = (1 << 1), // player is fully crouched/uncrouched
FL_ANIMDUCKING = (1 << 2), // player is in the process of crouching or uncrouching but could be in transition
FL_WATERJUMP = (1 << 3), // player is jumping out of water
FL_ONTRAIN = (1 << 4), // player is controlling a train, so movement commands should be ignored on client during prediction
FL_INRAIN = (1 << 5), // entity is standing in rain
FL_FROZEN = (1 << 6), // player is frozen for 3rd-person camera
FL_ATCONTROLS = (1 << 7), // player can't move, but keeps key inputs for controlling another entity
FL_CLIENT = (1 << 8), // entity is a client (player)
FL_FAKECLIENT = (1 << 9), // entity is a fake client, simulated server side; don't send network messages to them
FL_INWATER = (1 << 10), // entity is in water
FL_FLY = (1 << 11),
FL_SWIM = (1 << 12),
FL_CONVEYOR = (1 << 13),
FL_NPC = (1 << 14),
FL_GODMODE = (1 << 15),
FL_NOTARGET = (1 << 16),
FL_AIMTARGET = (1 << 17),
FL_PARTIALGROUND = (1 << 18), // entity is standing on a place where not all corners are valid
FL_STATICPROP = (1 << 19), // entity is a static property
FL_GRAPHED = (1 << 20),
FL_GRENADE = (1 << 21),
FL_STEPMOVEMENT = (1 << 22),
FL_DONTTOUCH = (1 << 23),
FL_BASEVELOCITY = (1 << 24), // entity have applied base velocity this frame
FL_WORLDBRUSH = (1 << 25), // entity is not moveable/removeable brush (part of the world, but represented as an entity for transparency or something)
FL_OBJECT = (1 << 26),
FL_KILLME = (1 << 27), // entity is marked for death and will be freed by the game
FL_ONFIRE = (1 << 28),
FL_DISSOLVING = (1 << 29),
FL_TRANSRAGDOLL = (1 << 30), // entity is turning into client-side ragdoll
FL_UNBLOCKABLE_BY_PLAYER = (1 << 31)
};
enum EEFlags : int
{
EFL_KILLME = (1 << 0),
EFL_DORMANT = (1 << 1),
EFL_NOCLIP_ACTIVE = (1 << 2),
EFL_SETTING_UP_BONES = (1 << 3),
EFL_KEEP_ON_RECREATE_ENTITIES = (1 << 4),
EFL_DIRTY_SHADOWUPDATE = (1 << 5),
EFL_NOTIFY = (1 << 6),
EFL_FORCE_CHECK_TRANSMIT = (1 << 7),
EFL_BOT_FROZEN = (1 << 8),
EFL_SERVER_ONLY = (1 << 9),
EFL_NO_AUTO_EDICT_ATTACH = (1 << 10),
EFL_DIRTY_ABSTRANSFORM = (1 << 11),
EFL_DIRTY_ABSVELOCITY = (1 << 12),
EFL_DIRTY_ABSANGVELOCITY = (1 << 13),
EFL_DIRTY_SURROUNDING_COLLISION_BOUNDS = (1 << 14),
EFL_DIRTY_SPATIAL_PARTITION = (1 << 15),
EFL_HAS_PLAYER_CHILD = (1 << 16),
EFL_IN_SKYBOX = (1 << 17),
EFL_USE_PARTITION_WHEN_NOT_SOLID = (1 << 18),
EFL_TOUCHING_FLUID = (1 << 19),
EFL_IS_BEING_LIFTED_BY_BARNACLE = (1 << 20),
EFL_NO_ROTORWASH_PUSH = (1 << 21),
EFL_NO_THINK_FUNCTION = (1 << 22),
EFL_NO_GAME_PHYSICS_SIMULATION = (1 << 23),
EFL_CHECK_UNTOUCH = (1 << 24),
EFL_DONTBLOCKLOS = (1 << 25),
EFL_DONTWALKON = (1 << 26),
EFL_NO_DISSOLVE = (1 << 27),
EFL_NO_MEGAPHYSCANNON_RAGDOLL = (1 << 28),
EFL_NO_WATER_VELOCITY_CHANGE = (1 << 29),
EFL_NO_PHYSCANNON_INTERACTION = (1 << 30),
EFL_NO_DAMAGE_FORCES = (1 << 31)
};
enum EMoveType : int
{
MOVETYPE_NONE = 0,
MOVETYPE_ISOMETRIC,
MOVETYPE_WALK,
MOVETYPE_STEP,
MOVETYPE_FLY, // no gravity, but still collides with stuff
MOVETYPE_FLYGRAVITY, // flies through the air and is affected by gravity
MOVETYPE_VPHYSICS,
MOVETYPE_PUSH, // no clip to world, push and crush
MOVETYPE_NOCLIP, // no gravity, no collisions, still do velocity/absvelocity
MOVETYPE_LADDER,
MOVETYPE_OBSERVER, // observer movement, depends on player's observer mode
MOVETYPE_CUSTOM,
MOVETYPE_LAST = MOVETYPE_CUSTOM,
MOVETYPE_MAX_BITS = 4
};
// identifies how submerged in water a player is
enum : int
{
WL_NOTINWATER = 0,
WL_FEET,
WL_WAIST,
WL_EYES
};
enum ETeamID : int
{
TEAM_UNK,
TEAM_SPECTATOR,
TEAM_TT,
TEAM_CT
};