Example #1
0
StringBuilder *MatchRecorder::export_str_player() {

	int flag = 0; // 什么也不做
/*	if (_penalty_count > 0) // 点球大战计数器
	{
		_reverse = 0; // 方向进攻方向

		if (_penalty_count % 2 == 0) {
			flag = 1; // player_id 取反
		}
	}*/

	StringBuilder *str = new StringBuilder(40*1024); // 压缩前长度

	MsgMatchPlayerRoundData msg;//= new MsgMatchRoundData();
	msg.mid = 1;
	msg.player_count = RECORDER_PLAYER_COUNT;
	str->append((const char*) &msg, sizeof(msg) - sizeof(void*));

	for (int i = 0; i < RECORDER_PLAYER_COUNT; ++i) {
		PlayerRoundInfo info;
		info.time_sacle_numbers = _players_frames[i].size();
		info.pid = (*_players_frames[i].begin())->get_player_id();
		info.cond = (*_players_frames[i].begin())->get_player_cond();
		str->append((const char*) &info, sizeof(info) - sizeof(void*));
		save_data(_players_frames[i].begin(), _players_frames[i].end(), str,
				_reverse, _is_half, flag);
	}
	((MsgMatchPlayerRoundData*) str->get_buffer())->msg_size = str->len();
	return str;
}
Example #2
0
StringBuilder *MatchRecorder::export_str_ball() {

	int string_len = 100;

	string_len += _ball_frames.size() * 20;
	StringBuilder *str = new StringBuilder(string_len); // 压缩前长度

	MsgGameBallRoundData msg;
	msg.mid =1;
	msg.time_counts = _ball_frames.size();
	str->append((const char*)&msg,sizeof(msg) - sizeof(void*));

	save_data(_ball_frames.begin(), _ball_frames.end(), str, _reverse, _is_half, 0);
	((MsgGameBallRoundData*)str->get_buffer())->msg_size = str->len();

	return str;
}