import "networkbasetypes.proto";

message CInButtonStatePB {
	optional uint64 buttonstate1 = 1;
	optional uint64 buttonstate2 = 2;
	optional uint64 buttonstate3 = 3;
}

message CSubtickMoveStep {
	optional uint64 button = 1;
	optional bool pressed = 2;
	optional float when = 3;
	optional float analog_forward_delta = 4;
	optional float analog_left_delta = 5;
	optional float pitch_delta = 8;
	optional float yaw_delta = 9;
}

message CBaseUserCmdExecutionNotes {
	optional string ignored_reason = 1;
}

message CBaseUserCmdPB {
	optional int32 legacy_command_number = 1;
	optional int32 client_tick = 2;
	optional uint32 prediction_offset_ticks_x256 = 17;
	optional .CInButtonStatePB buttons_pb = 3;
	optional .CMsgQAngle viewangles = 4;
	optional float forwardmove = 5;
	optional float leftmove = 6;
	optional float upmove = 7;
	optional int32 impulse = 8;
	optional int32 weaponselect = 9;
	optional int32 random_seed = 10;
	optional int32 mousedx = 11;
	optional int32 mousedy = 12;
	optional uint32 pawn_entity_handle = 14 [default = 16777215];
	repeated .CSubtickMoveStep subtick_moves = 18;
	optional bytes move_crc = 19;
	optional uint32 consumed_server_angle_changes = 20;
	optional int32 cmd_flags = 21;
	optional .CBaseUserCmdExecutionNotes execution_notes = 22;
}

message CUserCmdBasePB {
	optional .CBaseUserCmdPB base = 1;
}
