import "networkbasetypes.proto";

option optimize_for = SPEED;
option cc_generic_services = false;

enum EBaseGameEvents {
	GE_VDebugGameSessionIDEvent = 200;
	GE_PlaceDecalEvent = 201;
	GE_ClearWorldDecalsEvent = 202;
	GE_ClearEntityDecalsEvent = 203;
	GE_ClearDecalsForSkeletonInstanceEvent = 204;
	GE_Source1LegacyGameEventList = 205;
	GE_Source1LegacyListenEvents = 206;
	GE_Source1LegacyGameEvent = 207;
	GE_SosStartSoundEvent = 208;
	GE_SosStopSoundEvent = 209;
	GE_SosSetSoundEventParams = 210;
	GE_SosSetLibraryStackFields = 211;
	GE_SosStopSoundEventHash = 212;
}

message CMsgVDebugGameSessionIDEvent {
	optional int32 clientid = 1;
	optional string gamesessionid = 2;
}

message CMsgPlaceDecalEvent {
	optional .CMsgVector position = 1;
	optional .CMsgVector normal = 2;
	optional .CMsgVector saxis = 3;
	optional uint32 decalmaterialindex = 4;
	optional uint32 flags = 5;
	optional fixed32 color = 6;
	optional float width = 7;
	optional float height = 8;
	optional float depth = 9;
	optional uint32 entityhandleindex = 10;
	optional fixed32 skeletoninstancehash = 11;
	optional int32 boneindex = 12;
	optional bool translucenthit = 13;
	optional bool is_adjacent = 14;
}

message CMsgClearWorldDecalsEvent {
	optional uint32 flagstoclear = 1;
}

message CMsgClearEntityDecalsEvent {
	optional uint32 flagstoclear = 1;
}

message CMsgClearDecalsForSkeletonInstanceEvent {
	optional uint32 flagstoclear = 1;
	optional uint32 entityhandleindex = 2;
	optional uint32 skeletoninstancehash = 3;
}

message CMsgSource1LegacyGameEventList {
	message key_t {
		optional int32 type = 1;
		optional string name = 2;
	}

	message descriptor_t {
		optional int32 eventid = 1;
		optional string name = 2;
		repeated .CMsgSource1LegacyGameEventList.key_t keys = 3;
	}

	repeated .CMsgSource1LegacyGameEventList.descriptor_t descriptors = 1;
}

message CMsgSource1LegacyListenEvents {
	optional int32 playerslot = 1;
	repeated uint32 eventarraybits = 2;
}

message CMsgSource1LegacyGameEvent {
	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 .CMsgSource1LegacyGameEvent.key_t keys = 3;
}

message CMsgSosStartSoundEvent {
	optional int32 soundevent_guid = 1;
	optional fixed32 soundevent_hash = 2;
	optional int32 source_entity_index = 3;
	optional int32 seed = 4;
	optional bytes packed_params = 5;
	optional float start_time = 6;
}

message CMsgSosStopSoundEvent {
	optional int32 soundevent_guid = 1;
}

message CMsgSosStopSoundEventHash {
	optional fixed32 soundevent_hash = 1;
	optional int32 source_entity_index = 2;
}

message CMsgSosSetSoundEventParams {
	optional int32 soundevent_guid = 1;
	optional bytes packed_params = 5;
}

message CMsgSosSetLibraryStackFields {
	optional fixed32 stack_hash = 1;
	optional bytes packed_fields = 5;
}
