import "steammessages_base.proto";

option optimize_for = SPEED;
option cc_generic_services = false;

message CMsgClientLBSSetScore {
	optional uint32 app_id = 1;
	optional int32 leaderboard_id = 2;
	optional int32 score = 3;
	optional bytes details = 4;
	optional int32 upload_score_method = 5;
}

message CMsgClientLBSSetScoreResponse {
	optional int32 eresult = 1 [default = 2];
	optional int32 leaderboard_entry_count = 2;
	optional bool score_changed = 3;
	optional int32 global_rank_previous = 4;
	optional int32 global_rank_new = 5;
}

message CMsgClientLBSSetUGC {
	optional uint32 app_id = 1;
	optional int32 leaderboard_id = 2;
	optional fixed64 ugc_id = 3;
}

message CMsgClientLBSSetUGCResponse {
	optional int32 eresult = 1 [default = 2];
}

message CMsgClientLBSFindOrCreateLB {
	optional uint32 app_id = 1;
	optional int32 leaderboard_sort_method = 2;
	optional int32 leaderboard_display_type = 3;
	optional bool create_if_not_found = 4;
	optional string leaderboard_name = 5;
}

message CMsgClientLBSFindOrCreateLBResponse {
	optional int32 eresult = 1 [default = 2];
	optional int32 leaderboard_id = 2;
	optional int32 leaderboard_entry_count = 3;
	optional int32 leaderboard_sort_method = 4 [default = 0];
	optional int32 leaderboard_display_type = 5 [default = 0];
	optional string leaderboard_name = 6;
}

message CMsgClientLBSGetLBEntries {
	optional int32 app_id = 1;
	optional int32 leaderboard_id = 2;
	optional int32 range_start = 3;
	optional int32 range_end = 4;
	optional int32 leaderboard_data_request = 5;
	repeated fixed64 steamids = 6;
}

message CMsgClientLBSGetLBEntriesResponse {
	message Entry {
		optional fixed64 steam_id_user = 1;
		optional int32 global_rank = 2;
		optional int32 score = 3;
		optional bytes details = 4;
		optional fixed64 ugc_id = 5;
	}

	optional int32 eresult = 1 [default = 2];
	optional int32 leaderboard_entry_count = 2;
	repeated .CMsgClientLBSGetLBEntriesResponse.Entry entries = 3;
}