void DreamWebEngine::redes() { if (_channel1Playing != 255 || _talkMode != 2) { blank(); return; } if (_commandType != 217) { _commandType = 217; commandOnly(50); } if (!(_mouseButton & 1)) return; delPointer(); createPanel(); showPanel(); showMan(); showExit(); convIcons(); startTalk(); readMouse(); showPointer(); workToScreen(); delPointer(); }
void ClientThread::run() { memset(&client, 0, sizeof(struct sockaddr)); client.sin_family = AF_INET; client.sin_addr.s_addr = INADDR_ANY; client.sin_port = 0; sock = socket(PF_INET, SOCK_DGRAM, 0); setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)); if(gethostbyname_r(addr.toStdString().c_str(), &he, buf, sizeof(buf), &ip_addr, &status) || !ip_addr || sock < 0 || bind(sock, (struct sockaddr*)&client, sizeof(struct sockaddr)) < 0) { emit connectError(); ::close(sock); } else { memset(&server, 0, sizeof(struct sockaddr)); memcpy(&server.sin_addr.s_addr, ip_addr->h_addr, ip_addr->h_length); server.sin_family = AF_INET; server.sin_port = htons(port.toInt()); sendto(sock, "new0"+name.toUtf8(), name.toUtf8().length()+4, 0, (struct sockaddr*)&server, sizeof(struct sockaddr)); buf_size = recvfrom(sock, buf, 2048, 0, (struct sockaddr*)&server, &size); id = QString::fromUtf8(buf, buf_size); emit connectSuccess(id); while (true) { buf_size = recvfrom(sock, buf, 2048, 0, (struct sockaddr*)&consultant, &size); if(QString::fromUtf8(buf, 4) == "exit") { talk = false; emit newSysMessage("Rozmowa została zakończona."); sendto(sock, "exit"+id.toUtf8(), id.toUtf8().length()+4, 0, (struct sockaddr*)&server, sizeof(struct sockaddr)); emit exitTalk(); break; } else if(!talk && QString::fromUtf8(buf, 3) == "con") { talk = true; emit newSysMessage("Właśnie połączył się z Tobą konsultant "+QString::fromUtf8(buf, buf_size).mid(3,buf_size-3)+"."); emit startTalk(); } else if(talk && QString::fromUtf8(buf, 1) == ";") { emit newMessage(QString::fromUtf8(buf, buf_size).mid(1,buf_size-1)); } } } }
void DreamWebEngine::talk() { _talkPos = 0; _inMapArea = 0; _character = _command; createPanel(); showPanel(); showMan(); showExit(); underTextLine(); convIcons(); startTalk(); _commandType = 255; readMouse(); showPointer(); workToScreen(); RectWithCallback<DreamWebEngine> talkList[] = { { 273,320,157,198,&DreamWebEngine::getBack1 }, { 240,290,2,44,&DreamWebEngine::moreTalk }, { 0,320,0,200,&DreamWebEngine::blank }, { 0xFFFF,0,0,0,0 } }; do { delPointer(); readMouse(); animPointer(); showPointer(); vSync(); dumpPointer(); dumpTextLine(); _getBack = 0; checkCoords(talkList); if (_quitRequested) break; } while (!_getBack); if (_talkPos >= 4) _personData->b7 |= 128; redrawMainScrn(); workToScreenM(); if (_speechLoaded) { cancelCh1(); _volumeDirection = -1; _volumeTo = 0; } }