import "network_connection.proto";

option cc_generic_services = false;

enum SIGNONSTATE {
	SIGNONSTATE_NONE = 0;
	SIGNONSTATE_CHALLENGE = 1;
	SIGNONSTATE_CONNECTED = 2;
	SIGNONSTATE_NEW = 3;
	SIGNONSTATE_PRESPAWN = 4;
	SIGNONSTATE_SPAWN = 5;
	SIGNONSTATE_FULL = 6;
	SIGNONSTATE_CHANGELEVEL = 7;
}

enum NET_Messages {
	net_NOP = 0;
	net_Disconnect = 1;
	net_File = 2;
	net_SplitScreenUser = 3;
	net_Tick = 4;
	net_StringCmd = 5;
	net_SetConVar = 6;
	net_SignonState = 7;
}

message CMsgVector {
	optional float x = 1;
	optional float y = 2;
	optional float z = 3;
}

message CMsgVector2D {
	optional float x = 1;
	optional float y = 2;
}

message CMsgQAngle {
	optional float x = 1;
	optional float y = 2;
	optional float z = 3;
}

message CMsg_CVars {
	message CVar {
		optional string name = 1;
		optional string value = 2;
	}

	repeated .CMsg_CVars.CVar cvars = 1;
}

message CNETMsg_NOP {
}

message CNETMsg_SplitScreenUser {
	optional int32 slot = 1;
}

message CNETMsg_Disconnect {
	optional .ENetworkDisconnectionReason reason = 2 [default = NETWORK_DISCONNECT_INVALID];
}

message CNETMsg_File {
	optional int32 transfer_id = 1;
	optional string file_name = 2;
	optional bool is_replay_demo_file = 3;
	optional bool deny = 4;
	optional bool is_file_requested = 5;
}

message CNETMsg_Tick {
	optional uint32 tick = 1;
	optional uint32 host_computationtime = 4;
	optional uint32 host_computationtime_std_deviation = 5;
	optional uint32 host_framestarttime_std_deviation = 6;
}

message CNETMsg_StringCmd {
	optional string command = 1;
}

message CNETMsg_SetConVar {
	optional .CMsg_CVars convars = 1;
}

message CNETMsg_SignonState {
	optional uint32 signon_state = 1;
	optional uint32 spawn_count = 2;
	optional uint32 num_server_players = 3;
	repeated string players_networkids = 4;
	optional string map_name = 5;
}

message CSVCMsg_GameEvent {
	message key_t {
		optional int32 type = 1;
		optional string val_string = 2;
		optional float val_float = 3;
		optional int32 val_long = 4;
		optional int32 val_short = 5;
		optional int32 val_byte = 6;
		optional bool val_bool = 7;
		optional uint64 val_uint64 = 8;
	}

	optional string event_name = 1;
	optional int32 eventid = 2;
	repeated .CSVCMsg_GameEvent.key_t keys = 3;
}

message CSVCMsgList_GameEvents {
	message event_t {
		optional int32 tick = 1;
		optional .CSVCMsg_GameEvent event = 2;
	}

	repeated .CSVCMsgList_GameEvents.event_t events = 1;
}

message CSVCMsg_UserMessage {
	optional int32 msg_type = 1;
	optional bytes msg_data = 2;
}

message CSVCMsgList_UserMessages {
	message usermsg_t {
		optional int32 tick = 1;
		optional .CSVCMsg_UserMessage msg = 2;
	}

	repeated .CSVCMsgList_UserMessages.usermsg_t usermsgs = 1;
}

