-
Notifications
You must be signed in to change notification settings - Fork 0
/
Room.cpp
77 lines (67 loc) · 2 KB
/
Room.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include "Room.h"
Room::Room() {
isPlayerSet = false;
isGameEnd = false;
isLeftReady = false;
isLeftReady = false;
}
Room::~Room() {
closesocket(leftPlayer);
closesocket(rightPlayer);
}
bool Room::getIsPlayerSet() {
return isPlayerSet;
}
bool Room::getIsGameEnd() {
return isGameEnd;
}
void Room::SetPlayer(SOCKET leftPlayer, SOCKADDR_IN leftPlayerAddr, SOCKET rightPlayer, SOCKADDR_IN rightPlayerAddr) {
char sendData[BUFFER_SIZE] = { '0','0','0','0','0','1', ';'};
this->leftPlayer = leftPlayer;
this->leftPlayerAddr = leftPlayerAddr;
send(leftPlayer, sendData, BUFFER_SIZE, 0);
this->rightPlayer = rightPlayer;
this->rightPlayerAddr = rightPlayerAddr;
sendData[5] = '0';
send(rightPlayer, sendData, BUFFER_SIZE, 0);
isPlayerSet = true;
}
void Room::Update() {
if (recv(leftPlayer, leftBuffer, BUFFER_SIZE, 0) == SOCKET_ERROR) {
Release();
return;
}
if (recv(rightPlayer, rightBuffer, BUFFER_SIZE, 0) == SOCKET_ERROR) {
Release();
return;
}
if (isLeftReady && isRightReady) {
send(rightPlayer, leftBuffer, BUFFER_SIZE, 0);
send(leftPlayer, rightBuffer, BUFFER_SIZE, 0);
}
else {
if (leftBuffer[4] == '1') {
isLeftReady = true;
char data[BUFFER_SIZE] = { '0','0','0','0','1','0',';' };
send(rightPlayer, data, BUFFER_SIZE, 0);
}
else {
char data[BUFFER_SIZE] = { '0','0','0','0','0','0',';' };
send(rightPlayer, data, BUFFER_SIZE, 0);
}
if (rightBuffer[4] == '1') {
isRightReady = true;
char data[BUFFER_SIZE] = { '0','0','0','0','1','1',';' };
send(leftPlayer, data, BUFFER_SIZE, 0);
}
else {
char data[BUFFER_SIZE] = { '0','0','0','0','0','1',';' };
send(leftPlayer, data, BUFFER_SIZE, 0);
}
}
}
void Room::Release() {
isGameEnd = true;
closesocket(leftPlayer);
closesocket(rightPlayer);
}