|
|
@@ -19,7 +19,7 @@
|
|
|
|
|
|
static bool handle_game_state_msg(MultiPlayer *const mp) {
|
|
|
GameStateMsg msg;
|
|
|
- if (!recv_msg(mp->conn_s, NET_MSG_GAME_STATE, (uint8_t *) &msg)) {
|
|
|
+ if (!recv_msg(mp->conn, NET_MSG_GAME_STATE, (uint8_t *) &msg)) {
|
|
|
return false;
|
|
|
}
|
|
|
GameStateMsg_to_GameState(&msg, &mp->state);
|
|
|
@@ -65,29 +65,29 @@ bool MultiPlayer_alloc(
|
|
|
|
|
|
SE_LOG("Connected to server");
|
|
|
|
|
|
- mp->conn_s = fdopen(mp->sock, "r+");
|
|
|
- if (mp->conn_s == nullptr) {
|
|
|
+ mp->conn = fdopen(mp->sock, "r+");
|
|
|
+ if (mp->conn == nullptr) {
|
|
|
close(mp->sock);
|
|
|
SE_LOG_ERRORF("fdopen failed: (%d) %s", errno, strerror(errno));
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
NetMsgType msg_type;
|
|
|
- if (recv_msg_type(mp->conn_s, &msg_type) == ECONNRESET) {
|
|
|
- fclose(mp->conn_s);
|
|
|
+ if (recv_msg_type(mp->conn, &msg_type) == ECONNRESET) {
|
|
|
+ fclose(mp->conn);
|
|
|
close(mp->sock);
|
|
|
SE_LOG_ERROR("Connection reset");
|
|
|
return false;
|
|
|
}
|
|
|
if (msg_type != NET_MSG_IS_PLAYER_1) {
|
|
|
- fclose(mp->conn_s);
|
|
|
+ fclose(mp->conn);
|
|
|
close(mp->sock);
|
|
|
SE_LOG_ERRORF("Did not get IS_PLAYER_1 msg, got: %u", msg_type);
|
|
|
return false;
|
|
|
}
|
|
|
IsPlayer1Msg p1_msg = { 0 };
|
|
|
- if (!recv_msg(mp->conn_s, NET_MSG_IS_PLAYER_1, (uint8_t *) &p1_msg)) {
|
|
|
- fclose(mp->conn_s);
|
|
|
+ if (!recv_msg(mp->conn, NET_MSG_IS_PLAYER_1, (uint8_t *) &p1_msg)) {
|
|
|
+ fclose(mp->conn);
|
|
|
close(mp->sock);
|
|
|
SE_LOG_ERROR("Connection reset");
|
|
|
return false;
|
|
|
@@ -103,45 +103,45 @@ bool MultiPlayer_alloc(
|
|
|
|
|
|
mp->state = GameState_new(game_default_params, false);
|
|
|
|
|
|
- if (recv_msg_type(mp->conn_s, &msg_type) == ECONNRESET) {
|
|
|
- fclose(mp->conn_s);
|
|
|
+ if (recv_msg_type(mp->conn, &msg_type) == ECONNRESET) {
|
|
|
+ fclose(mp->conn);
|
|
|
close(mp->sock);
|
|
|
SE_LOG_ERROR("Connection reset");
|
|
|
return false;
|
|
|
}
|
|
|
if (msg_type != NET_MSG_GAME_STATE) {
|
|
|
- fclose(mp->conn_s);
|
|
|
+ fclose(mp->conn);
|
|
|
close(mp->sock);
|
|
|
SE_LOG_FATALF("[MultiPlayer_alloc] Did not get GAME_STATE msg, got: %u", msg_type);
|
|
|
}
|
|
|
if (!handle_game_state_msg(mp)) {
|
|
|
- fclose(mp->conn_s);
|
|
|
+ fclose(mp->conn);
|
|
|
close(mp->sock);
|
|
|
SE_LOG_ERROR("Connection reset");
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- if (recv_msg_type(mp->conn_s, &msg_type) == ECONNRESET) {
|
|
|
- fclose(mp->conn_s);
|
|
|
+ if (recv_msg_type(mp->conn, &msg_type) == ECONNRESET) {
|
|
|
+ fclose(mp->conn);
|
|
|
close(mp->sock);
|
|
|
SE_LOG_ERROR("Connection reset");
|
|
|
return false;
|
|
|
}
|
|
|
if (msg_type != NET_MSG_GAME_START) {
|
|
|
- fclose(mp->conn_s);
|
|
|
+ fclose(mp->conn);
|
|
|
close(mp->sock);
|
|
|
SE_LOG_FATALF("[MultiPlayer_alloc] Did not get GAME_START msg, got: %u", msg_type);
|
|
|
}
|
|
|
|
|
|
- if (!send_msg(mp->conn_s, NET_MSG_GAME_START, nullptr)) {
|
|
|
- fclose(mp->conn_s);
|
|
|
+ if (!send_msg(mp->conn, NET_MSG_GAME_START, nullptr)) {
|
|
|
+ fclose(mp->conn);
|
|
|
close(mp->sock);
|
|
|
SE_LOG_ERROR("Connection reset");
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
if (fcntl(mp->sock, F_SETFL, O_NONBLOCK) != 0) {
|
|
|
- fclose(mp->conn_s);
|
|
|
+ fclose(mp->conn);
|
|
|
close(mp->sock);
|
|
|
SE_LOG_ERRORF("fcntl failed on mp->sock: (%d) %s", errno, strerror(errno));
|
|
|
return false;
|
|
|
@@ -157,10 +157,8 @@ bool MultiPlayer_alloc(
|
|
|
}
|
|
|
|
|
|
void MultiPlayer_free(MultiPlayer *const mp) {
|
|
|
- fclose(mp->conn_s);
|
|
|
- mp->conn_s = nullptr;
|
|
|
- // close(mp->conn);
|
|
|
- // mp->conn = 0;
|
|
|
+ fclose(mp->conn);
|
|
|
+ mp->conn = nullptr;
|
|
|
close(mp->sock);
|
|
|
mp->sock = 0;
|
|
|
|
|
|
@@ -169,7 +167,7 @@ void MultiPlayer_free(MultiPlayer *const mp) {
|
|
|
|
|
|
static void handle_paddle_pos_msg(MultiPlayer *const mp) {
|
|
|
PaddleUpdateMsg msg;
|
|
|
- recv_msg(mp->conn_s, NET_MSG_PADDLE_POS, (uint8_t *) &msg);
|
|
|
+ recv_msg(mp->conn, NET_MSG_PADDLE_POS, (uint8_t *) &msg);
|
|
|
mp->state.paddle_l.pos[1] = msg.l_pos_y;
|
|
|
mp->state.paddle_l.dirv[1] = msg.l_dirv_y;
|
|
|
mp->state.paddle_r.pos[1] = msg.r_pos_y;
|
|
|
@@ -178,7 +176,7 @@ static void handle_paddle_pos_msg(MultiPlayer *const mp) {
|
|
|
|
|
|
static void handle_ball_update_msg(MultiPlayer *const mp) {
|
|
|
BallUpdateMsg msg;
|
|
|
- recv_msg(mp->conn_s, NET_MSG_BALL_UPDATE, (uint8_t *) &msg);
|
|
|
+ recv_msg(mp->conn, NET_MSG_BALL_UPDATE, (uint8_t *) &msg);
|
|
|
mp->state.ball.pos[0] = msg.ball_pos_x;
|
|
|
mp->state.ball.pos[1] = msg.ball_pos_y;
|
|
|
mp->state.ball.dirv[0] = msg.ball_dirv_x;
|
|
|
@@ -187,7 +185,7 @@ static void handle_ball_update_msg(MultiPlayer *const mp) {
|
|
|
|
|
|
static void handle_score_update_msg(MultiPlayer *const mp) {
|
|
|
ScoreUpdateMsg msg;
|
|
|
- recv_msg(mp->conn_s, NET_MSG_SCORE_UPDATE, (uint8_t *) &msg);
|
|
|
+ recv_msg(mp->conn, NET_MSG_SCORE_UPDATE, (uint8_t *) &msg);
|
|
|
mp->state.score_l = msg.l_score;
|
|
|
mp->state.score_r = msg.r_score;
|
|
|
SE_LOGF("score_l: %d score_r: %d", mp->state.score_l, mp->state.score_r);
|
|
|
@@ -226,7 +224,7 @@ static void handle_input(
|
|
|
Screen MultiPlayer_tick(MultiPlayer *const mp, const double delta) {
|
|
|
NetMsgType msg_type;
|
|
|
while (true) {
|
|
|
- const int res = recv_msg_type(mp->conn_s, &msg_type);
|
|
|
+ const int res = recv_msg_type(mp->conn, &msg_type);
|
|
|
if (res == 0) {
|
|
|
switch (msg_type) {
|
|
|
case NET_MSG_PADDLE_CHANGE_DIR:
|
|
|
@@ -249,7 +247,7 @@ Screen MultiPlayer_tick(MultiPlayer *const mp, const double delta) {
|
|
|
case NET_MSG_WIN:
|
|
|
{
|
|
|
WinMsg msg;
|
|
|
- if (!recv_msg(mp->conn_s, NET_MSG_WIN, (uint8_t *) &msg)) {
|
|
|
+ if (!recv_msg(mp->conn, NET_MSG_WIN, (uint8_t *) &msg)) {
|
|
|
SE_LOG_ERROR("Connection reset");
|
|
|
return PONG_MAIN_MENU;
|
|
|
}
|
|
|
@@ -292,7 +290,7 @@ Screen MultiPlayer_tick(MultiPlayer *const mp, const double delta) {
|
|
|
.dir = (uint8_t) new_dir
|
|
|
};
|
|
|
|
|
|
- if (!send_msg(mp->conn_s, NET_MSG_PADDLE_CHANGE_DIR, (uint8_t *) &msg)) {
|
|
|
+ if (!send_msg(mp->conn, NET_MSG_PADDLE_CHANGE_DIR, (uint8_t *) &msg)) {
|
|
|
SE_LOG_ERROR("Connection reset");
|
|
|
return PONG_MAIN_MENU;
|
|
|
}
|