import "steammessages_base.proto";

option optimize_for = SPEED;
option cc_generic_services = false;

message CMsgClientGetUserStats {
	optional fixed64 game_id = 1;
	optional uint32 crc_stats = 2;
	optional int32 schema_local_version = 3;
	optional fixed64 steam_id_for_user = 4;
}

message CMsgClientGetUserStatsResponse {
	message Stats {
		optional uint32 stat_id = 1;
		optional uint32 stat_value = 2;
	}

	message Achievement_Blocks {
		optional uint32 achievement_id = 1;
		repeated fixed32 unlock_time = 2;
	}

	optional fixed64 game_id = 1;
	optional int32 eresult = 2 [default = 2];
	optional uint32 crc_stats = 3;
	optional bytes schema = 4;
	repeated .CMsgClientGetUserStatsResponse.Stats stats = 5;
	repeated .CMsgClientGetUserStatsResponse.Achievement_Blocks achievement_blocks = 6;
}

message CMsgClientStoreUserStatsResponse {
	message Stats_Failed_Validation {
		optional uint32 stat_id = 1;
		optional uint32 reverted_stat_value = 2;
	}

	optional fixed64 game_id = 1;
	optional int32 eresult = 2 [default = 2];
	optional uint32 crc_stats = 3;
	repeated .CMsgClientStoreUserStatsResponse.Stats_Failed_Validation stats_failed_validation = 4;
	optional bool stats_out_of_date = 5;
}

message CMsgClientStoreUserStats2 {
	message Stats {
		optional uint32 stat_id = 1;
		optional uint32 stat_value = 2;
	}

	optional fixed64 game_id = 1;
	optional fixed64 settor_steam_id = 2;
	optional fixed64 settee_steam_id = 3;
	optional uint32 crc_stats = 4;
	optional bool explicit_reset = 5;
	repeated .CMsgClientStoreUserStats2.Stats stats = 6;
}

message CMsgClientStatsUpdated {
	message Updated_Stats {
		optional uint32 stat_id = 1;
		optional uint32 stat_value = 2;
	}

	optional fixed64 steam_id = 1;
	optional fixed64 game_id = 2;
	optional uint32 crc_stats = 3;
	repeated .CMsgClientStatsUpdated.Updated_Stats updated_stats = 4;
}
