Beispiel #1
0
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));
            }
        }
    }
}
Beispiel #3
0
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;
	}
}