示例#1
0
void CallServerIPInputBox(POINT ptClientWorld)
{
	LusInputMsg Msg;
	Msg.hWnd = ghWndMain;
	Msg.Title = L"IP 주소 입력";
	Msg.Msg = L"\n서버의 IP 주소를 입력해주세요.\n아무것도 입력하지 않으면\n루프백 주소가 입력됩니다.";
	Msg.MsgStartPos = ptClientWorld;
	Msg.thisClass = nullptr;
	Msg.InputMax = 16;
	Msg.InputSize = 100;
	Msg.IsOnlyUseNum = false;
	Msg.MsgSize = { 0, 0, 300, DEFAULT_MSGHEIGHT };

	Msg.resultFunc = [](void* Class, LPWSTR str) {
		close_LusMsgProc();
		string serverIP("127.0.0.1");
		if (lstrlen(str) > 0)
		{
			wstring wstr = str;
			wstring p1, p2, p3, p4;
			auto p = wstr.begin();
			bool bInvalidIP = false;
			for (; p != wstr.end() && *p != '.' && p1.length() < 4; ++p) p1 += *p;
			if (p1.length() >= 4 || to_wstring(stoi(p1)) != p1) bInvalidIP = true;
			else ++p;
			if (!bInvalidIP)
			{
				for (; p != wstr.end() && *p != '.' && p2.length() < 4; ++p) p2 += *p;
				if (p2.length() >= 4 || to_wstring(stoi(p2)) != p2) bInvalidIP = true;
				else ++p;
				if (!bInvalidIP)
				{
					for (; p != wstr.end() && *p != '.' && p3.length() < 4; ++p) p3 += *p;
					if (p3.length() >= 4 || to_wstring(stoi(p3)) != p3) bInvalidIP = true;
					else ++p;
					if (!bInvalidIP)
					{
						for (; p != wstr.end() && *p != '.' && p4.length() < 4; ++p) p4 += *p;
						if (p4.length() >= 4 || to_wstring(stoi(p4)) != p4) bInvalidIP = true;
					}
				}
			}

			if (bInvalidIP)
			{
				//	데스크톱 윈도우 사이즈
				RECT getWinSize;
				GetWindowRect(GetDesktopWindow(), &getWinSize);

				//	클라이언트 사이즈
				RECT rc; rc.left = rc.top = 0; rc.right = CLIENT_WIDTH; rc.bottom = CLIENT_HEIGHT;
				AdjustWindowRect(&rc, WS_OVERLAPPED | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU | WS_BORDER, FALSE);

				//	클라이언트 절대좌표(left, top)
				POINT ptClientWorld;
				ptClientWorld.x = (getWinSize.right - CLIENT_WIDTH) / 2;
				ptClientWorld.y = (getWinSize.bottom - CLIENT_HEIGHT) / 2;

				wsprintf(Lus_strMsg, L"\n잘못된 주소입니다.");
				LusMsg Msg;
				Msg.hWnd = ghWndMain;
				Msg.Title = L"실패";
				Msg.Msg = Lus_strMsg;
				Msg.MsgStartPos = ptClientWorld;
				Msg.InBoxMsg_1 = L"확인";
				Msg.thisClass = nullptr;
				Msg.Msg_1_Func = [](void* Class) {
					close_LusMsgProc();
					//	데스크톱 윈도우 사이즈
					RECT getWinSize;
					GetWindowRect(GetDesktopWindow(), &getWinSize);

					//	클라이언트 사이즈
					RECT rc; rc.left = rc.top = 0; rc.right = CLIENT_WIDTH; rc.bottom = CLIENT_HEIGHT;
					AdjustWindowRect(&rc, WS_OVERLAPPED | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU | WS_BORDER, FALSE);

					//	클라이언트 절대좌표(left, top)
					POINT ptClientWorld;
					ptClientWorld.x = (getWinSize.right - CLIENT_WIDTH) / 2;
					ptClientWorld.y = (getWinSize.bottom - CLIENT_HEIGHT) / 2;

					CallServerIPInputBox(ptClientWorld);
				};
				LusMsgBox(Msg.hWnd, Msg, hInst, 175);
				return;
			}
			else serverIP = string(to_string(stoi(p1)) + '.' + to_string(stoi(p2)) + '.' + to_string(stoi(p3)) + '.' + to_string(stoi(p4)));
		}

		SetServerIP(serverIP);

		// 소켓 통신 스레드 생성
		CreateThread(NULL, 0, ServerMain, NULL, 0, NULL);
		Sleep(100);
		
	};
	Msg.undoFunc = [](void* Class) {
		close_LusMsgProc();
		DestroyWindow(ghWndMain);
	};

	LusInputMsgBox(Msg.hWnd, Msg, hInst, 175);
}
示例#2
0
int ClientNetwork::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QObject::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: packetReceived(); break;
        case 1: packetCorrupted(); break;
        case 2: pingUpdated((*reinterpret_cast< quint32(*)>(_a[1]))); break;
        case 3: chatReceived((*reinterpret_cast< CLID(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2])),(*reinterpret_cast< QString(*)>(_a[3])),(*reinterpret_cast< ENUM_TYPE(*)>(_a[4]))); break;
        case 4: serverInformationsChanged((*reinterpret_cast< ServerInformations(*)>(_a[1]))); break;
        case 5: clientIDChanged((*reinterpret_cast< CLID(*)>(_a[1]))); break;
        case 6: nicknameChanged((*reinterpret_cast< CLID(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break;
        case 7: error((*reinterpret_cast< ENUM_TYPE(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break;
        case 8: clientVoted((*reinterpret_cast< CLID(*)>(_a[1])),(*reinterpret_cast< CLID(*)>(_a[2]))); break;
        case 9: newGameMaster((*reinterpret_cast< CLID(*)>(_a[1]))); break;
        case 10: serverName((*reinterpret_cast< QString(*)>(_a[1]))); break;
        case 11: motdChanged((*reinterpret_cast< QString(*)>(_a[1]))); break;
        case 12: gameLaunched(); break;
        case 13: narrationChanged((*reinterpret_cast< QString(*)>(_a[1]))); break;
        case 14: mapChanged((*reinterpret_cast< MapPtr(*)>(_a[1]))); break;
        case 15: mapFlare((*reinterpret_cast< QPoint(*)>(_a[1])),(*reinterpret_cast< CLID(*)>(_a[2]))); break;
        case 16: scriptToGMMsg((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break;
        case 17: scriptToOwnerMsg((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break;
        case 18: scriptActionMsg((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break;
        case 19: scriptToPlayerMsg((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break;
        case 20: scriptMsg((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break;
        case 21: scriptError((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break;
        case 22: updateEntities((*reinterpret_cast< const QList<EntityInformations>(*)>(_a[1]))); break;
        case 23: updateEntity((*reinterpret_cast< const EntityInformations(*)>(_a[1]))); break;
        case 24: entityDeleted((*reinterpret_cast< const QString(*)>(_a[1]))); break;
        case 25: scriptReceived((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break;
        case 26: ressourcesUpdated((*reinterpret_cast< const QMap<QString,RSID>(*)>(_a[1]))); break;
        case 27: connectionEtablished(); break;
        case 28: connectionLost(); break;
        case 29: diceRolled((*reinterpret_cast< CLID(*)>(_a[1])),(*reinterpret_cast< quint16(*)>(_a[2])),(*reinterpret_cast< quint16(*)>(_a[3]))); break;
        case 30: sanctionned((*reinterpret_cast< CLID(*)>(_a[1])),(*reinterpret_cast< ENUM_TYPE(*)>(_a[2])),(*reinterpret_cast< QString(*)>(_a[3]))); break;
        case 31: clientJoined((*reinterpret_cast< CLID(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break;
        case 32: clientLeft((*reinterpret_cast< CLID(*)>(_a[1]))); break;
        case 33: playSound((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break;
        case 34: syncLibs((*reinterpret_cast< QList<SoundLibInformations>(*)>(_a[1]))); break;
        case 35: syncLanguagesList((*reinterpret_cast< QList<QPair<QString,QString> >(*)>(_a[1]))); break;
        case 36: syncDictionariesList((*reinterpret_cast< QStringList(*)>(_a[1]))); break;
        case 37: syncScriptList((*reinterpret_cast< QStringList(*)>(_a[1]))); break;
        case 38: updateCharacterList((*reinterpret_cast< const QStringList(*)>(_a[1]))); break;
        case 39: send((*reinterpret_cast< Packet*(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break;
        case 40: send((*reinterpret_cast< Packet*(*)>(_a[1]))); break;
        case 41: send((*reinterpret_cast< Packet(*)>(_a[1]))); break;
        case 42: send((*reinterpret_cast< qint32(*)>(_a[1])),(*reinterpret_cast< const QByteArray(*)>(_a[2]))); break;
        case 43: ping(); break;
        case 44: { qint32 _r = getPing();
            if (_a[0]) *reinterpret_cast< qint32*>(_a[0]) = _r; }  break;
        case 45: { QString _r = serverIP();
            if (_a[0]) *reinterpret_cast< QString*>(_a[0]) = _r; }  break;
        case 46: { quint16 _r = serverPort();
            if (_a[0]) *reinterpret_cast< quint16*>(_a[0]) = _r; }  break;
        case 47: flush(); break;
        case 48: connection(); break;
        case 49: disconnection(); break;
        case 50: { bool _r = setServer((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< quint16(*)>(_a[2])));
            if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; }  break;
        case 51: connected(); break;
        case 52: disconnected(); break;
        case 53: dataReceived(); break;
        case 54: socketError((*reinterpret_cast< QAbstractSocket::SocketError(*)>(_a[1]))); break;
        case 55: operatePacket((*reinterpret_cast< Packet*(*)>(_a[1]))); break;
        default: ;
        }
        _id -= 56;
    }
    return _id;
}