import "networkbasetypes.proto";

option optimize_for = SPEED;
option cc_generic_services = false;

enum EBaseUserMessages {
	UM_AchievementEvent = 101;
	UM_CloseCaption = 102;
	UM_CloseCaptionDirect = 103;
	UM_CurrentTimescale = 104;
	UM_DesiredTimescale = 105;
	UM_Fade = 106;
	UM_GameTitle = 107;
	UM_HintText = 109;
	UM_HudMsg = 110;
	UM_HudText = 111;
	UM_KeyHintText = 112;
	UM_ColoredText = 113;
	UM_RequestState = 114;
	UM_ResetHUD = 115;
	UM_Rumble = 116;
	UM_SayText = 117;
	UM_SayText2 = 118;
	UM_SayTextChannel = 119;
	UM_Shake = 120;
	UM_ShakeDir = 121;
	UM_TextMsg = 124;
	UM_ScreenTilt = 125;
	UM_Train = 126;
	UM_VGUIMenu = 127;
	UM_VoiceMask = 128;
	UM_VoiceSubtitle = 129;
	UM_SendAudio = 130;
	UM_ItemPickup = 131;
	UM_AmmoDenied = 132;
	UM_CrosshairAngle = 133;
	UM_ShowMenu = 134;
	UM_CreditsMsg = 135;
	UM_CloseCaptionPlaceholder = 142;
	UM_CameraTransition = 143;
	UM_AudioParameter = 144;
	UM_ParticleManager = 145;
	UM_HudError = 146;
	UM_CustomGameEvent = 148;
	UM_HandHapticPulse = 149;
	UM_AnimGraphUpdate = 150;
	UM_HandHapticPulsePrecise = 151;
	UM_MAX_BASE = 200;
}

enum EBaseEntityMessages {
	EM_PlayJingle = 136;
	EM_ScreenOverlay = 137;
	EM_RemoveAllDecals = 138;
	EM_PropagateForce = 139;
	EM_DoSpark = 140;
	EM_FixAngle = 141;
}

enum eRollType {
	ROLL_NONE = -1;
	ROLL_STATS = 0;
	ROLL_CREDITS = 1;
	ROLL_LATE_JOIN_LOGO = 2;
	ROLL_OUTTRO = 3;
}

enum PARTICLE_MESSAGE {
	GAME_PARTICLE_MANAGER_EVENT_CREATE = 0;
	GAME_PARTICLE_MANAGER_EVENT_UPDATE = 1;
	GAME_PARTICLE_MANAGER_EVENT_UPDATE_FORWARD = 2;
	GAME_PARTICLE_MANAGER_EVENT_UPDATE_ORIENTATION = 3;
	GAME_PARTICLE_MANAGER_EVENT_UPDATE_FALLBACK = 4;
	GAME_PARTICLE_MANAGER_EVENT_UPDATE_ENT = 5;
	GAME_PARTICLE_MANAGER_EVENT_UPDATE_OFFSET = 6;
	GAME_PARTICLE_MANAGER_EVENT_DESTROY = 7;
	GAME_PARTICLE_MANAGER_EVENT_DESTROY_INVOLVING = 8;
	GAME_PARTICLE_MANAGER_EVENT_RELEASE = 9;
	GAME_PARTICLE_MANAGER_EVENT_LATENCY = 10;
	GAME_PARTICLE_MANAGER_EVENT_SHOULD_DRAW = 11;
	GAME_PARTICLE_MANAGER_EVENT_FROZEN = 12;
	GAME_PARTICLE_MANAGER_EVENT_CHANGE_CONTROL_POINT_ATTACHMENT = 13;
	GAME_PARTICLE_MANAGER_EVENT_UPDATE_ENTITY_POSITION = 14;
	GAME_PARTICLE_MANAGER_EVENT_SET_FOW_PROPERTIES = 15;
	GAME_PARTICLE_MANAGER_EVENT_SET_TEXT = 16;
	GAME_PARTICLE_MANAGER_EVENT_SET_SHOULD_CHECK_FOW = 17;
	GAME_PARTICLE_MANAGER_EVENT_SET_CONTROL_POINT_MODEL = 18;
	GAME_PARTICLE_MANAGER_EVENT_SET_CONTROL_POINT_SNAPSHOT = 19;
}

enum EHapticPulseType {
	VR_HAND_HAPTIC_PULSE_LIGHT = 0;
	VR_HAND_HAPTIC_PULSE_MEDIUM = 1;
	VR_HAND_HAPTIC_PULSE_STRONG = 2;
}

message CUserMessageAchievementEvent {
	optional uint32 achievement = 1;
}

message CUserMessageCloseCaption {
	optional fixed32 hash = 1;
	optional float duration = 2;
	optional bool from_player = 3;
	optional int32 ent_index = 4;
}

message CUserMessageCloseCaptionDirect {
	optional fixed32 hash = 1;
	optional float duration = 2;
	optional bool from_player = 3;
	optional int32 ent_index = 4;
}

message CUserMessageCloseCaptionPlaceholder {
	optional string string = 1;
	optional float duration = 2;
	optional bool from_player = 3;
	optional int32 ent_index = 4;
}

message CUserMessageCurrentTimescale {
	optional float current = 1;
}

message CUserMessageDesiredTimescale {
	optional float desired = 1;
	optional float acceleration = 2;
	optional float minblendrate = 3;
	optional float blenddeltamultiplier = 4;
}

message CUserMessageFade {
	optional uint32 duration = 1;
	optional uint32 hold_time = 2;
	optional uint32 flags = 3;
	optional fixed32 color = 4;
}

message CUserMessageShake {
	optional uint32 command = 1;
	optional float amplitude = 2;
	optional float frequency = 3;
	optional float duration = 4;
}

message CUserMessageShakeDir {
	optional .CUserMessageShake shake = 1;
	optional .CMsgVector direction = 2;
}

message CUserMessageScreenTilt {
	optional uint32 command = 1;
	optional bool ease_in_out = 2;
	optional .CMsgVector angle = 3;
	optional float duration = 4;
	optional float time = 5;
}

message CUserMessageSayText {
	optional uint32 playerindex = 1;
	optional string text = 2;
	optional bool chat = 3;
}

message CUserMessageSayText2 {
	optional uint32 entityindex = 1;
	optional bool chat = 2;
	optional string messagename = 3;
	optional string param1 = 4;
	optional string param2 = 5;
	optional string param3 = 6;
	optional string param4 = 7;
}

message CUserMessageHudMsg {
	optional uint32 channel = 1;
	optional float x = 2;
	optional float y = 3;
	optional fixed32 color1 = 4;
	optional fixed32 color2 = 5;
	optional uint32 effect = 6;
	optional float fade_in_time = 7;
	optional float fade_out_time = 8;
	optional float hold_time = 9;
	optional float fx_time = 10;
	optional string message = 11;
}

message CUserMessageHudText {
	optional string message = 1;
}

message CUserMessageTextMsg {
	optional uint32 dest = 1;
	repeated string param = 2;
}

message CUserMessageGameTitle {
}

message CUserMessageResetHUD {
}

message CUserMessageSendAudio {
	optional string soundname = 1;
	optional bool stop = 2;
}

message CUserMessageAudioParameter {
	optional uint32 parameter_type = 1;
	optional uint32 name_hash_code = 2;
	optional float value = 3;
	optional uint32 int_value = 4;
}

message CUserMessageVoiceMask {
	repeated uint32 gamerules_masks = 1;
	repeated uint32 ban_masks = 2;
	optional bool mod_enable = 3;
}

message CUserMessageRequestState {
}

message CUserMessageHintText {
	optional string message = 1;
}

message CUserMessageKeyHintText {
	repeated string messages = 1;
}

message CUserMessageVoiceSubtitle {
	optional int32 player = 1;
	optional int32 menu = 2;
	optional int32 item = 3;
}

message CUserMessageVGUIMenu {
	message Keys {
		optional string name = 1;
		optional string value = 2;
	}

	optional string name = 1;
	optional bool show = 2;
	repeated .CUserMessageVGUIMenu.Keys keys = 3;
}

message CUserMessageRumble {
	optional int32 index = 1;
	optional int32 data = 2;
	optional int32 flags = 3;
}

message CUserMessageTrain {
	optional uint32 position = 1;
}

message CUserMessageSayTextChannel {
	optional int32 player = 1;
	optional int32 channel = 2;
	optional string text = 3;
}

message CUserMessageColoredText {
	optional uint32 color = 1;
	optional string text = 2;
	optional bool reset = 3;
	optional int32 context_player_id = 4;
	optional int32 context_value = 5;
	optional int32 context_team_id = 6;
}

message CUserMessageItemPickup {
	optional string itemname = 1;
}

message CUserMessageAmmoDenied {
	optional uint32 ammo_id = 1;
}

message CUserMessageCrosshairAngle {
	optional .CMsgQAngle angcrosshair = 1;
}

message CUserMessageShowMenu {
	optional uint32 validslots = 1;
	optional uint32 displaytime = 2;
	optional bool needmore = 3;
	optional string menustring = 4;
}

message CUserMessageCreditsMsg {
	optional .eRollType rolltype = 1 [default = ROLL_NONE];
	optional float logo_length = 2;
}

message CEntityMessagePlayJingle {
}

message CEntityMessageScreenOverlay {
	optional bool start_effect = 1;
}

message CEntityMessageRemoveAllDecals {
	optional bool remove_decals = 1;
}

message CEntityMessagePropagateForce {
	optional .CMsgVector impulse = 1;
}

message CEntityMessageDoSpark {
	optional .CMsgVector origin = 1;
	optional uint32 entityindex = 2;
	optional float radius = 3;
	optional fixed32 color = 4;
	optional uint32 beams = 5;
	optional float thick = 6;
	optional float duration = 7;
}

message CEntityMessageFixAngle {
	optional bool relative = 1;
	optional .CMsgQAngle angle = 2;
}

message CUserMessageCameraTransition {
	message Transition_DataDriven {
		optional string filename = 1;
		optional int32 attach_ent_index = 2;
	}

	optional uint32 camera_type = 1;
	optional float duration = 2;
	optional .CUserMessageCameraTransition.Transition_DataDriven params_data_driven = 3;
}

message CUserMsg_ParticleManager {
	message ReleaseParticleIndex {
	}

	message CreateParticle {
		optional fixed64 particle_name_index = 1;
		optional int32 attach_type = 2;
		optional int32 entity_handle = 3;
		optional int32 entity_handle_for_modifiers = 4;
	}

	message DestroyParticle {
		optional bool destroy_immediately = 1;
	}

	message DestroyParticleInvolving {
		optional bool destroy_immediately = 1;
		optional int32 entity_handle = 3;
	}

	message UpdateParticle {
		optional int32 control_point = 1;
		optional .CMsgVector position = 2;
	}

	message UpdateParticleFwd {
		optional int32 control_point = 1;
		optional .CMsgVector forward = 2;
	}

	message UpdateParticleOrient {
		optional int32 control_point = 1;
		optional .CMsgVector forward = 2;
		optional .CMsgVector right = 3 [deprecated = true];
		optional .CMsgVector up = 4;
		optional .CMsgVector left = 5;
	}

	message UpdateParticleFallback {
		optional int32 control_point = 1;
		optional .CMsgVector position = 2;
	}

	message UpdateParticleOffset {
		optional int32 control_point = 1;
		optional .CMsgVector origin_offset = 2;
		optional .CMsgQAngle angle_offset = 3;
	}

	message UpdateParticleEnt {
		optional int32 control_point = 1;
		optional int32 entity_handle = 2;
		optional int32 attach_type = 3;
		optional int32 attachment = 4;
		optional .CMsgVector fallback_position = 5;
		optional bool include_wearables = 6;
	}

	message UpdateParticleSetFrozen {
		optional bool set_frozen = 1;
	}

	message UpdateParticleShouldDraw {
		optional bool should_draw = 1;
	}

	message ChangeControlPointAttachment {
		optional int32 attachment_old = 1;
		optional int32 attachment_new = 2;
		optional int32 entity_handle = 3;
	}

	message UpdateEntityPosition {
		optional int32 entity_handle = 1;
		optional .CMsgVector position = 2;
	}

	message SetParticleFoWProperties {
		optional int32 fow_control_point = 1;
		optional int32 fow_control_point2 = 2;
		optional float fow_radius = 3;
	}

	message SetParticleShouldCheckFoW {
		optional bool check_fow = 1;
	}

	message SetControlPointModel {
		optional int32 control_point = 1;
		optional string model_name = 2;
	}

	message SetControlPointSnapshot {
		optional int32 control_point = 1;
		optional string snapshot_name = 2;
	}

	message SetParticleText {
		optional string text = 1;
	}

	required .PARTICLE_MESSAGE type = 1 [default = GAME_PARTICLE_MANAGER_EVENT_CREATE];
	required uint32 index = 2;
	optional .CUserMsg_ParticleManager.ReleaseParticleIndex release_particle_index = 3;
	optional .CUserMsg_ParticleManager.CreateParticle create_particle = 4;
	optional .CUserMsg_ParticleManager.DestroyParticle destroy_particle = 5;
	optional .CUserMsg_ParticleManager.DestroyParticleInvolving destroy_particle_involving = 6;
	optional .CUserMsg_ParticleManager.UpdateParticle update_particle = 7;
	optional .CUserMsg_ParticleManager.UpdateParticleFwd update_particle_fwd = 8;
	optional .CUserMsg_ParticleManager.UpdateParticleOrient update_particle_orient = 9;
	optional .CUserMsg_ParticleManager.UpdateParticleFallback update_particle_fallback = 10;
	optional .CUserMsg_ParticleManager.UpdateParticleOffset update_particle_offset = 11;
	optional .CUserMsg_ParticleManager.UpdateParticleEnt update_particle_ent = 12;
	optional .CUserMsg_ParticleManager.UpdateParticleShouldDraw update_particle_should_draw = 14;
	optional .CUserMsg_ParticleManager.UpdateParticleSetFrozen update_particle_set_frozen = 15;
	optional .CUserMsg_ParticleManager.ChangeControlPointAttachment change_control_point_attachment = 16;
	optional .CUserMsg_ParticleManager.UpdateEntityPosition update_entity_position = 17;
	optional .CUserMsg_ParticleManager.SetParticleFoWProperties set_particle_fow_properties = 18;
	optional .CUserMsg_ParticleManager.SetParticleText set_particle_text = 19;
	optional .CUserMsg_ParticleManager.SetParticleShouldCheckFoW set_particle_should_check_fow = 20;
	optional .CUserMsg_ParticleManager.SetControlPointModel set_control_point_model = 21;
	optional .CUserMsg_ParticleManager.SetControlPointSnapshot set_control_point_snapshot = 22;
}

message CUserMsg_HudError {
	optional int32 order_id = 1;
}

message CUserMsg_CustomGameEvent {
	optional string event_name = 1;
	optional bytes data = 2;
}

message CUserMessageHapticPulse {
	optional int32 hand_id = 1;
	optional .EHapticPulseType pulse_type = 2 [default = VR_HAND_HAPTIC_PULSE_LIGHT];
}

message CUserMessageHapticPulsePrecise {
	optional int32 hand_id = 1;
	optional int32 pulse_duration = 2;
}

message CUserMessageAnimStateGraphState {
	optional int32 entity_index = 1;
	optional bytes data = 2;
}

