Browse Source

client specific communication - now multiple clients can connect simulteneously

master
Victor Giers 5 years ago
parent
commit
17c6e6fc0e
3 changed files with 15 additions and 13 deletions
  1. 8
    9
      Server.pde
  2. BIN
      data/client/main_citizenlist
  3. 7
    4
      data/client/main_citizenlist.cpp

+ 8
- 9
Server.pde View File



String s_map[]; //send this via tcp String s_map[]; //send this via tcp

int i_citizenTransferC; int i_citizenTransferC;
void clientCommunication() { void clientCommunication() {
client = server.available(); client = server.available();
if (client != null) { if (client != null) {
s_fromClient = client.readString(); s_fromClient = client.readString();
if (s_fromClient.equals("give citizenC")) { if (s_fromClient.equals("give citizenC")) {
server.write(str(citizen.length));
client.write(str(citizen.length));
} }
if (s_fromClient.equals("give citizen")) { if (s_fromClient.equals("give citizen")) {
if(i_citizenTransferC >= citizen.length) i_citizenTransferC = 0; if(i_citizenTransferC >= citizen.length) i_citizenTransferC = 0;
server.write("Name: " + citizen[i_citizenTransferC].s_name + ", Gender: " + citizen[i_citizenTransferC].s_gender + ", Age: " + str(citizen[i_citizenTransferC].i_age) + ", Currently doing: " + citizen[i_citizenTransferC].s_currentAction);
client.write("Name: " + citizen[i_citizenTransferC].s_name + ", Gender: " + citizen[i_citizenTransferC].s_gender + ", Age: " + str(citizen[i_citizenTransferC].i_age) + ", Currently doing: " + citizen[i_citizenTransferC].s_currentAction);
i_citizenTransferC++; i_citizenTransferC++;
} }
if (s_fromClient.contains("give locx")) { if (s_fromClient.contains("give locx")) {
String[] list = split(s_fromClient, ':'); String[] list = split(s_fromClient, ':');
int requestedCitizen = int(list[1]); int requestedCitizen = int(list[1]);
server.write(str(citizen[requestedCitizen].f_xPos/i_sMapReso));
client.write(str(citizen[requestedCitizen].f_xPos/i_sMapReso));
} }
if (s_fromClient.contains("give locy")) { if (s_fromClient.contains("give locy")) {
String[] list = split(s_fromClient, ':'); String[] list = split(s_fromClient, ':');
int requestedCitizen = int(list[1]); int requestedCitizen = int(list[1]);
server.write(str(citizen[requestedCitizen].f_yPos/i_sMapReso));
client.write(str(citizen[requestedCitizen].f_yPos/i_sMapReso));
} }
if (s_fromClient.contains("give a")) { if (s_fromClient.contains("give a")) {
String[] list = split(s_fromClient, ':'); String[] list = split(s_fromClient, ':');
int requestedCitizen = int(list[1]); int requestedCitizen = int(list[1]);
server.write(str(citizen[requestedCitizen].f_angle));
client.write(str(citizen[requestedCitizen].f_angle));
} }
if (s_fromClient.equals("give mapw")) { if (s_fromClient.equals("give mapw")) {
server.write(str(img_houses.width/i_sMapReso));
client.write(str(img_houses.width/i_sMapReso));
} }
if (s_fromClient.equals("give maph")) { if (s_fromClient.equals("give maph")) {
server.write(str(img_houses.height/i_sMapReso));
client.write(str(img_houses.height/i_sMapReso));
} }
if (i_mapLevelTransferC >= img_houses.height/i_sMapReso) i_mapLevelTransferC = 0; if (i_mapLevelTransferC >= img_houses.height/i_sMapReso) i_mapLevelTransferC = 0;
if (s_fromClient.equals("give map")) { if (s_fromClient.equals("give map")) {
server.write(s_map[i_mapLevelTransferC]);
client.write(s_map[i_mapLevelTransferC]);
i_mapLevelTransferC++; i_mapLevelTransferC++;
} }
} }

BIN
data/client/main_citizenlist View File


+ 7
- 4
data/client/main_citizenlist.cpp View File

tcgetattr(STDIN_FILENO, &ttystate); tcgetattr(STDIN_FILENO, &ttystate);
ttystate.c_lflag &= (~ICANON & ~ECHO); //not display character || is this in conflict with what ncurses does in keyListener()? ttystate.c_lflag &= (~ICANON & ~ECHO); //not display character || is this in conflict with what ncurses does in keyListener()?
ttystate.c_cc[VMIN] = 1; ttystate.c_cc[VMIN] = 1;
tcsetattr(STDIN_FILENO, TCSANOW, &ttystate);
tcsetattr(STDIN_FILENO, TCSANOW, &ttystate); */
fputs("\e[?25h", stdout); //show cursor agein fputs("\e[?25h", stdout); //show cursor agein
fputs("\e[?25l", stdout); //remove cursor */
system("kbdrate -d 250 -r 10"); system("kbdrate -d 250 -r 10");
struct winsize size; struct winsize size;
ioctl(STDOUT_FILENO,TIOCGWINSZ,&size); ioctl(STDOUT_FILENO,TIOCGWINSZ,&size);
char bufferMap[4096] = {0}; char bufferMap[4096] = {0};
send(sock , mapRequest , strlen(mapRequest) , 0 ); send(sock , mapRequest , strlen(mapRequest) , 0 );
int getmap = read( sock , bufferMap, 4096); int getmap = read( sock , bufferMap, 4096);
map += ("%s\n",bufferMap ); //IS THIS WHERE IT BECOMES BROKEN!???!?!??!?! I THINK SO
map.pop_back(); //OR THIS! CAN BE FIXED BY KILLING THE BUG ABOVE
map += ("%s\n",bufferMap );
map.pop_back();
} }


//PREPARE MINIMAP //PREPARE MINIMAP
auto tp1 = clock::now(); auto tp1 = clock::now();
auto tp2 = clock::now(); auto tp2 = clock::now();





fputs("\e[?25l", stdout); //remove cursor
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
////////BEGINDRAW///// ////////BEGINDRAW/////
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////

Loading…
Cancel
Save