import "networkbasetypes.proto";

option optimize_for = SPEED;
option cc_generic_services = false;

enum EBaseUserMessages {
	UM_AchievementEvent = 1;
	UM_CloseCaption = 2;
	UM_CloseCaptionDirect = 3;
	UM_CurrentTimescale = 4;
	UM_DesiredTimescale = 5;
	UM_Fade = 6;
	UM_GameTitle = 7;
	UM_Geiger = 8;
	UM_HintText = 9;
	UM_HudMsg = 10;
	UM_HudText = 11;
	UM_KeyHintText = 12;
	UM_MessageText = 13;
	UM_RequestState = 14;
	UM_ResetHUD = 15;
	UM_Rumble = 16;
	UM_SayText = 17;
	UM_SayText2 = 18;
	UM_SayTextChannel = 19;
	UM_Shake = 20;
	UM_ShakeDir = 21;
	UM_StatsCrawlMsg = 22;
	UM_StatsSkipState = 23;
	UM_TextMsg = 24;
	UM_Tilt = 25;
	UM_Train = 26;
	UM_VGUIMenu = 27;
	UM_VoiceMask = 28;
	UM_VoiceSubtitle = 29;
	UM_SendAudio = 30;
	UM_CameraTransition = 31;
	UM_MAX_BASE = 63;
}

message CUserMsg_AchievementEvent {
	optional uint32 achievement = 1;
}

message CUserMsg_CloseCaption {
	optional fixed32 hash = 1;
	optional float duration = 2;
	optional bool from_player = 3;
	optional int32 ent_index = 4;
}

message CUserMsg_CurrentTimescale {
	optional float current = 1;
}

message CUserMsg_DesiredTimescale {
	optional float desired = 1;
	optional float duration = 2;
	optional uint32 interpolator = 3;
	optional float start_blend_time = 4;
}

message CUserMsg_Fade {
	optional uint32 duration = 1;
	optional uint32 hold_time = 2;
	optional uint32 flags = 3;
	optional fixed32 color = 4;
}

message CUserMsg_Shake {
	optional uint32 command = 1;
	optional float amplitude = 2;
	optional float frequency = 3;
	optional float duration = 4;
}

message CUserMsg_ShakeDir {
	optional .CUserMsg_Shake shake = 1;
	optional .CMsgVector direction = 2;
}

message CUserMsg_Tilt {
	optional uint32 command = 1;
	optional bool ease_in_out = 2;
	optional .CMsgVector angle = 3;
	optional float duration = 4;
	optional float time = 5;
}

message CUserMsg_SayText {
	optional uint32 client = 1;
	optional string text = 2;
	optional bool chat = 3;
}

message CUserMsg_SayText2 {
	optional uint32 client = 1;
	optional bool chat = 2;
	optional string format = 3;
	optional string prefix = 4;
	optional string text = 5;
	optional string location = 6;
}

message CUserMsg_HudMsg {
	optional uint32 channel = 1;
	optional float x = 2;
	optional float y = 3;
	optional uint32 color1 = 4;
	optional uint32 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 CUserMsg_HudText {
	optional string message = 1;
}

message CUserMsg_TextMsg {
	optional uint32 dest = 1;
	repeated string param = 2;
}

message CUserMsg_GameTitle {
}

message CUserMsg_ResetHUD {
}

message CUserMsg_SendAudio {
	optional bool stop = 2;
	optional string name = 3;
}

message CUserMsg_VoiceMask {
	repeated int32 audible_players_mask = 1;
	optional bool player_mod_enabled = 2;
}

message CUserMsg_RequestState {
}

message CUserMsg_HintText {
	optional string message = 1;
}

message CUserMsg_KeyHintText {
	repeated string messages = 1;
}

message CUserMsg_StatsCrawlMsg {
}

message CUserMsg_StatsSkipState {
	optional int32 num_skips = 1;
	optional int32 num_players = 2;
}

message CUserMsg_VoiceSubtitle {
	optional int32 ent_index = 1;
	optional int32 menu = 2;
	optional int32 item = 3;
}

message CUserMsg_VGUIMenu {
	message Keys {
		optional string name = 1;
		optional string value = 2;
	}

	optional string name = 1;
	optional bool show = 2;
	repeated .CUserMsg_VGUIMenu.Keys keys = 3;
}

message CUserMsg_Geiger {
	optional int32 range = 1;
}

message CUserMsg_Rumble {
	optional int32 index = 1;
	optional int32 data = 2;
	optional int32 flags = 3;
}

message CUserMsg_Train {
	optional int32 train = 1;
}

message CUserMsg_SayTextChannel {
	optional int32 player = 1;
	optional int32 channel = 2;
	optional string text = 3;
}

message CUserMsg_MessageText {
	optional uint32 color = 1;
	optional string text = 2;
}

message CUserMsg_CameraTransition {
	message Transition_DataDriven {
		optional string filename = 1;
		optional int32 attach_ent_index = 2;
	}

	optional uint32 camera_type = 1;
	optional float duration = 2;
	optional .CUserMsg_CameraTransition.Transition_DataDriven params_data_driven = 3;
}

