示例#1
0
void SPiece::rotate() {
	if (active_state == 1) {
		assign_state(2, s_state2);
	} else {
		assign_state(1, s_state1);
	}
}
示例#2
0
void JPiece::rotate_back() {
	if (active_state == 1) {
		assign_state(4, j_state4);
	} else if (active_state == 2) {
		assign_state(1, j_state1);
	} else if (active_state == 3) {
		assign_state(2, j_state2);
	} else {
		assign_state(3, j_state3);
	}
}
示例#3
0
int input_handshake(DESC_DATA *d, char *orig, int bytes)
{
	if (bytes < 4)
		return 0;

	if (d->handshake == *(DWORD *) orig)
		assign_state(d, STATE_MAIN);
	else
	{
		sys_log("SYSERR: BAD_HANDSHAKE: %d %d", d->handshake, *(DWORD *) orig);
		assign_state(d, STATE_CLOSE);
	}

	return 4;
}
示例#4
0
int input_main(DESC_DATA *d, char *orig, int bytes)
{
	char 	*data = orig;
	BYTE	header, last_header = 0;
	WORD	desc_num;
	int		i, pl, last_pl = 0, bytes_proceed = 0;

	for (i = bytes; i > 0;)
	{
		header = (BYTE) *(data++);
		i--;

		// desc_num 은 2 bytes 이므로 2 bytes 보다 내용이 적으면 bytes 를 리턴
		if (i < 2)
			return (bytes_proceed);

		desc_num = *((WORD *) data);

		data	+= 2;
		i	-= 2;

		pl	= 0;

		switch (header)
		{
			case HEADER_GT_LOGIN:
				if (!(pl = input_login(d, data, i)))
					return (bytes_proceed);

				break;

			case HEADER_GT_LOGOUT:
				if (!(pl = input_logout(d, data, i)))
					return (bytes_proceed);

				break;

			default:
				sys_log("UNKNOWN HEADER: %d, LAST HEADER: %d(%d), REMAIN BYTES: %d, DESC: %d", 
						header, last_header, last_pl, i, d->desc_num);

				printdata((BYTE*)orig, bytes);
				assign_state(d, STATE_CLOSE);
				return (bytes);
		}

		data		+= pl;
		i		-= pl;

		bytes_proceed	+= 3 + pl;

		last_pl		= pl;
		last_header	= header;
	}

	return (bytes);
}
示例#5
0
SPiece::SPiece() {
	assign_state(1, s_state1);
}
示例#6
0
JPiece::JPiece() {
	assign_state(1, j_state1);
}