#include "AktionsThread.h" #include "..\Global\Variablen.h" #include // Inhalt der AktionsThread Klasse aus AktionsThread.h // Konstruktor AktionsThread::AktionsThread(int aktion, const void* arg1, const void* arg2, const void* arg3, const void* arg4, const void* arg5) : Thread() { this->aktion = aktion; this->arg1 = arg1; this->arg2 = arg2; this->arg3 = arg3; this->arg4 = arg4; this->arg5 = arg5; start(); } // nicht constant void AktionsThread::thread() { switch (aktion) { case 1: // Login // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort if (1) { uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); int ret = 0; if (!loginClient) loginClient = mainClient->createLoginServerClient(); do { if (!loginClient) { lastError = mainClient->getLetzterFehler(); continue; } if (!loginClient->verbinde()) { lastError = loginClient->getLetzterFehler(); continue; } ret = loginClient->login((const char*)arg1, (const char*)arg2); if (ret != 1) { lastError = loginClient->getLetzterFehler(); continue; } if (!infoClient) infoClient = mainClient->createInformationServerClient(); if (!infoClient) { ret = 0; lastError = mainClient->getLetzterFehler(); loginClient->logout(); continue; } if (!infoClient->verbinde()) { ret = 0; lastError = mainClient->getLetzterFehler(); lastError = infoClient->getLetzterFehler(); loginClient->logout(); continue; } if (!chatClient) chatClient = mainClient->createChatServerClient(); if (!chatClient) { ret = 0; lastError = mainClient->getLetzterFehler(); loginClient->logout(); continue; } if (!chatClient->verbinde()) { ret = 0; loginClient->logout(); infoClient->trenne(0); lastError = chatClient->getLetzterFehler(); continue; } if (cmProcessor) cmProcessor = (ChatMessageProcessor*)cmProcessor->release(); cmProcessor = new ChatMessageProcessor(); loginClient->trenne(0); } while (0); ladeAnimation->setSichtbar(0); uiFactory.initParam.bildschirm->setOnTop(0); vorLogin->zLogin()->setLoginReturn(ret); } break; case 2: // Login Erfolgreich uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); for (unsigned char deckAlpha = 0; deckAlpha < 255; ) { uiFactory.initParam.bildschirm->setdeckFarbe(deckAlpha << 24); Sleep(40); deckAlpha += 15; } uiFactory.initParam.bildschirm->setdeckFarbe(255 << 24); uiFactory.initParam.bildschirm->setRenderZeichnungen(0); vorLogin->setSichtbar(0); nachLogin->setAnzeige(NLANormal); uiFactory.initParam.bildschirm->setRenderZeichnungen(1); ladeAnimation->setSichtbar(0); for (unsigned char deckAlpha = 255; deckAlpha > 0; ) { uiFactory.initParam.bildschirm->setdeckFarbe(deckAlpha << 24); Sleep(40); deckAlpha -= 15; } uiFactory.initParam.bildschirm->setdeckFarbe(0 << 24); uiFactory.initParam.bildschirm->setOnTop(0); break; case 3: // Kick // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort // arg3 = char* -- Account Geheimnis if (1) { uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); int ret = 0; if (!loginClient) loginClient = mainClient->createLoginServerClient(); do { if (!loginClient) { lastError = mainClient->getLetzterFehler(); continue; } if (!loginClient->verbinde()) { lastError = loginClient->getLetzterFehler(); continue; } ret = (int)loginClient->kick((const char*)arg1, (const char*)arg2, (const char*)arg3); if (!ret) { lastError = loginClient->getLetzterFehler(); continue; } if (!infoClient) infoClient = mainClient->createInformationServerClient(); if (!infoClient) { ret = 2; lastError = mainClient->getLetzterFehler(); loginClient->logout(); continue; } if (!infoClient->verbinde()) { ret = 2; lastError = infoClient->getLetzterFehler(); loginClient->logout(); continue; } if (!chatClient) chatClient = mainClient->createChatServerClient(); if (!chatClient) { ret = 2; lastError = mainClient->getLetzterFehler(); loginClient->logout(); continue; } if (!chatClient->verbinde()) { ret = 2; loginClient->logout(); infoClient->trenne(0); lastError = chatClient->getLetzterFehler(); continue; } if (cmProcessor) cmProcessor = (ChatMessageProcessor*)cmProcessor->release(); cmProcessor = new ChatMessageProcessor(); loginClient->trenne(0); } while (0); ladeAnimation->setSichtbar(0); uiFactory.initParam.bildschirm->setOnTop(0); vorLogin->zLogin()->setKickReturn(ret); } break; case 4: // Logout if (1) { uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); if (loginClient) { if (!loginClient->verbinde()) { nachLogin->zNachrichtenListe()->addNachricht(new Text("Fehler"), new Text("Das Ausloggen konnte nicht erfolgreich abgeschlossen werden."), new Text("Ok"), 0); ladeAnimation->setSichtbar(0); uiFactory.initParam.bildschirm->setOnTop(0); break; } bool ret = loginClient->logout(); if (ret) { uiFactory.initParam.bildschirm->lock(); nachLogin->zChatLeiste()->removeAll(); nachLogin->zFreundesListe()->removeAll(); nachLogin->zNachrichtenListe()->removeAll(); uiFactory.initParam.bildschirm->unlock(); if (infoClient) infoClient->trenne(0); if (spielClient) spielClient->trenne(); if (smProcessor) smProcessor = (SpielMessageProcessor*)smProcessor->release(); if (chatClient) chatClient->trenne(0); if (loginClient) loginClient->trenne(0); if (cmProcessor) cmProcessor = (ChatMessageProcessor*)cmProcessor->release(); } else { nachLogin->zNachrichtenListe()->addNachricht(new Text("Fehler"), new Text("Das Ausloggen konnte nicht erfolgreich abgeschlossen werden."), new Text("Ok"), 0); ladeAnimation->setSichtbar(0); uiFactory.initParam.bildschirm->setOnTop(0); break; } } ladeAnimation->setSichtbar(0); uiFactory.initParam.bildschirm->setOnTop(0); } case 5: // Logout Erfolgreich uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); for (unsigned char deckAlpha = 0; deckAlpha < 255; ) { uiFactory.initParam.bildschirm->setdeckFarbe(deckAlpha << 24); Sleep(40); deckAlpha += 15; } uiFactory.initParam.bildschirm->setdeckFarbe(255 << 24); _render = 0; uiFactory.initParam.bildschirm->lock(); nachLogin->setAnzeige(NLALogin); vorLogin->setSichtbar(1); uiFactory.initParam.bildschirm->unlock(); _render = 1; ladeAnimation->setSichtbar(0); for (unsigned char deckAlpha = 255; deckAlpha > 0; ) { uiFactory.initParam.bildschirm->setdeckFarbe(deckAlpha << 24); Sleep(40); deckAlpha -= 15; } uiFactory.initParam.bildschirm->setdeckFarbe(0 << 24); uiFactory.initParam.bildschirm->setOnTop(0); break; case 8: // Account E-Mail ändern // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort // arg3 = char* -- Account Geheimnis // arg4 = char* -- Neue E-Mail if (1) { uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); int ret = 0; if (!registerClient) registerClient = mainClient->createRegisterServerClient(); do { if (!registerClient) { lastError = mainClient->getLetzterFehler(); continue; } if (!registerClient->verbinde()) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->eMailÄndern((const char*)arg1, (const char*)arg2, (const char*)arg3, (const char*)arg4); if (!ret) { lastError = registerClient->getLetzterFehler(); continue; } } while (0); registerClient->trenne(0); ladeAnimation->setSichtbar(0); uiFactory.initParam.bildschirm->setOnTop(0); vorLogin->zEMailÄndern()->setReturn(ret); } break; case 9: // Account E-Mail Vergessen // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort // arg3 = char* -- Account Geheimnis if (1) { uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); char* eMail = 0; char** pEMail = &eMail; int ret = 0; if (!registerClient) registerClient = mainClient->createRegisterServerClient(); do { if (!registerClient) { lastError = mainClient->getLetzterFehler(); continue; } if (!registerClient->verbinde()) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->eMailVergessen((const char*)arg1, (const char*)arg2, (const char*)arg3, pEMail); if (!ret) { lastError = registerClient->getLetzterFehler(); continue; } } while (0); registerClient->trenne(0); ladeAnimation->setSichtbar(0); uiFactory.initParam.bildschirm->setOnTop(0); vorLogin->zEMailVergessen()->setReturn(ret, *pEMail); } break; case 10: // Account Geheimnis Ändern // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort // arg3 = char* -- Account Geheimnis // arg4 = char* -- Neues Geheimnis if (1) { uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); int ret = 0; if (!registerClient) registerClient = mainClient->createRegisterServerClient(); do { if (!registerClient) { lastError = mainClient->getLetzterFehler(); continue; } if (!registerClient->verbinde()) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->geheimnisÄndern((const char*)arg1, (const char*)arg2, (const char*)arg3, (const char*)arg4); if (!ret) { lastError = registerClient->getLetzterFehler(); continue; } } while (0); registerClient->trenne(0); ladeAnimation->setSichtbar(0); uiFactory.initParam.bildschirm->setOnTop(0); vorLogin->zGeheimnisÄndern()->setResult(ret); } break; case 11: // Account Geheimnis Vergessen // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort if (1) { uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); int ret = 0; if (!registerClient) registerClient = mainClient->createRegisterServerClient(); do { if (!registerClient) { lastError = mainClient->getLetzterFehler(); continue; } if (!registerClient->verbinde()) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->geheimnisVergessen((const char*)arg1, (const char*)arg2); if (!ret) { lastError = registerClient->getLetzterFehler(); continue; } } while (0); registerClient->trenne(0); ladeAnimation->setSichtbar(0); uiFactory.initParam.bildschirm->setOnTop(0); vorLogin->zGeheimnisVergessen()->setResult(ret); } break; case 12: // Account Name Vergessen // arg1 = char* -- Account Passwort // arg2 = char* -- Account Geheimnis if (1) { uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); int ret = 0; if (!registerClient) registerClient = mainClient->createRegisterServerClient(); do { if (!registerClient) { lastError = mainClient->getLetzterFehler(); continue; } if (!registerClient->verbinde()) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->nameVergessen((const char*)arg1, (const char*)arg2); if (!ret) { lastError = registerClient->getLetzterFehler(); continue; } } while (0); registerClient->trenne(0); ladeAnimation->setSichtbar(0); uiFactory.initParam.bildschirm->setOnTop(0); vorLogin->zNameVergessen()->setResult(ret); } break; case 13: // Account Passwort Ändern // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort // arg3 = char* -- Account Geheimnis // arg4 = char* -- Neues Passwort if (1) { uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); int ret = 0; if (!registerClient) registerClient = mainClient->createRegisterServerClient(); do { if (!registerClient) { lastError = mainClient->getLetzterFehler(); continue; } if (!registerClient->verbinde()) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->passwortÄndern((const char*)arg1, (const char*)arg2, (const char*)arg3, (const char*)arg4); if (!ret) { lastError = registerClient->getLetzterFehler(); continue; } } while (0); registerClient->trenne(0); ladeAnimation->setSichtbar(0); uiFactory.initParam.bildschirm->setOnTop(0); vorLogin->zPasswortÄndern()->setResult(ret); } break; case 14: // Account Passwort Vergessen // arg1 = char* -- Account Name // arg2 = char* -- Account Geheimnis if (1) { uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); int ret = 0; if (!registerClient) registerClient = mainClient->createRegisterServerClient(); do { if (!registerClient) { lastError = mainClient->getLetzterFehler(); continue; } if (!registerClient->verbinde()) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->passwortVergessen((const char*)arg1, (const char*)arg2); if (!ret) { lastError = registerClient->getLetzterFehler(); continue; } } while (0); registerClient->trenne(0); ladeAnimation->setSichtbar(0); uiFactory.initParam.bildschirm->setOnTop(0); vorLogin->zPasswortVergessen()->setResult(ret); } break; case 15: // Account Erstellen // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort // arg3 = char* -- Account Geheimnis // arg4 = char* -- Account E-Mail // arg5 = Datum* -- Geburtsdatum if (1) { uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); int ret = 0; if (!registerClient) registerClient = mainClient->createRegisterServerClient(); do { if (!registerClient) { lastError = mainClient->getLetzterFehler(); continue; } if (!registerClient->verbinde()) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->accountErstellen((const char*)arg1, (const char*)arg2, (const char*)arg3, (const char*)arg4, (unsigned short)((Datum*)arg5)->getJahr(), (char)((Datum*)arg5)->getMonat(), (char)((Datum*)arg5)->getTag()); if (!ret) { lastError = registerClient->getLetzterFehler(); continue; } } while (0); registerClient->trenne(0); ladeAnimation->setSichtbar(0); uiFactory.initParam.bildschirm->setOnTop(0); vorLogin->zRegistrierung()->setWeiterReturn(ret); ((Datum*)arg5)->release(); } break; case 17: // account Löschen Fertig // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort // arg3 = char* -- Account Geheimnis if (1) { uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); int ret = 0; if (!registerClient) registerClient = mainClient->createRegisterServerClient(); do { if (!registerClient) { lastError = mainClient->getLetzterFehler(); continue; } if (!registerClient->verbinde()) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->accountLöschen((const char*)arg1, (const char*)arg2, (const char*)arg3); if (!ret) { lastError = registerClient->getLetzterFehler(); continue; } } while (0); registerClient->trenne(0); ladeAnimation->setSichtbar(0); uiFactory.initParam.bildschirm->setOnTop(0); vorLogin->zUnregistrierung()->setWeiterReturn(ret); } break; case 19: // Spiel Laden if (1) { uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); for (unsigned char deckAlpha = 0; deckAlpha < 255; ) { uiFactory.initParam.bildschirm->setdeckFarbe(deckAlpha << 24); Sleep(40); deckAlpha += 15; } uiFactory.initParam.bildschirm->setdeckFarbe(255 << 24); _render = 0; uiFactory.initParam.bildschirm->lock(); int karteId = nachLogin->zSpielenFenster()->getKarteId(); SpielerTeamStruktur* sts = nachLogin->zSpielenFenster()->getSTS(); nachLogin->setAnzeige(NLAImSpiel); uiFactory.initParam.bildschirm->unlock(); _render = 1; nachLogin->zImSpiel()->beginnLaden(karteId, sts); ladeAnimation->setSichtbar(0); for (unsigned char deckAlpha = 255; deckAlpha > 0; ) { uiFactory.initParam.bildschirm->setdeckFarbe(deckAlpha << 24); Sleep(40); deckAlpha -= 15; } uiFactory.initParam.bildschirm->setdeckFarbe(0 << 24); uiFactory.initParam.bildschirm->setOnTop(0); } break; case 20: // Spiel Statistik laden if (1) { uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); for (unsigned char deckAlpha = 0; deckAlpha < 255; ) { uiFactory.initParam.bildschirm->setdeckFarbe(deckAlpha << 24); Sleep(40); deckAlpha += 15; } uiFactory.initParam.bildschirm->setdeckFarbe(255 << 24); _render = 0; uiFactory.initParam.bildschirm->lock(); int karteId = nachLogin->zImSpiel()->getKarteId(); nachLogin->setAnzeige(NLANormal); uiFactory.initParam.bildschirm->unlock(); _render = 1; if (spielClient && spielClient->istVerbunden()) nachLogin->zSpielenFenster()->ladeSpielStatistik(karteId); ladeAnimation->setSichtbar(0); for (unsigned char deckAlpha = 255; deckAlpha > 0; ) { uiFactory.initParam.bildschirm->setdeckFarbe(deckAlpha << 24); Sleep(40); deckAlpha -= 15; } uiFactory.initParam.bildschirm->setdeckFarbe(0 << 24); uiFactory.initParam.bildschirm->setOnTop(0); } break; case 21: // Spiel Aufzeichnung betreten if (1) { uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); for (unsigned char deckAlpha = 0; deckAlpha < 255; ) { uiFactory.initParam.bildschirm->setdeckFarbe(deckAlpha << 24); Sleep(40); deckAlpha += 15; } uiFactory.initParam.bildschirm->setdeckFarbe(255 << 24); _render = 0; uiFactory.initParam.bildschirm->lock(); nachLogin->setAnzeige(NLASpielVideo); uiFactory.initParam.bildschirm->unlock(); _render = 1; ladeAnimation->setSichtbar(0); for (unsigned char deckAlpha = 255; deckAlpha > 0; ) { uiFactory.initParam.bildschirm->setdeckFarbe(deckAlpha << 24); Sleep(40); deckAlpha -= 15; } uiFactory.initParam.bildschirm->setdeckFarbe(0 << 24); uiFactory.initParam.bildschirm->setOnTop(0); } break; case 22: // Spiel Aufzeichnung / Editor verlassen if (1) { uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); for (unsigned char deckAlpha = 0; deckAlpha < 255; ) { uiFactory.initParam.bildschirm->setdeckFarbe(deckAlpha << 24); Sleep(40); deckAlpha += 15; } uiFactory.initParam.bildschirm->setdeckFarbe(255 << 24); _render = 0; uiFactory.initParam.bildschirm->lock(); nachLogin->setAnzeige(NLANormal); uiFactory.initParam.bildschirm->unlock(); _render = 1; ladeAnimation->setSichtbar(0); for (unsigned char deckAlpha = 255; deckAlpha > 0; ) { uiFactory.initParam.bildschirm->setdeckFarbe(deckAlpha << 24); Sleep(40); deckAlpha -= 15; } uiFactory.initParam.bildschirm->setdeckFarbe(0 << 24); uiFactory.initParam.bildschirm->setOnTop(0); } break; case 23: // Editor betreten if (1) { uiFactory.initParam.bildschirm->setdeckFarbe(0x00000000); uiFactory.initParam.bildschirm->setOnTop(1); ladeAnimation->setSichtbar(1); for (unsigned char deckAlpha = 0; deckAlpha < 255; ) { uiFactory.initParam.bildschirm->setdeckFarbe(deckAlpha << 24); Sleep(40); deckAlpha += 15; } uiFactory.initParam.bildschirm->setdeckFarbe(255 << 24); _render = 0; uiFactory.initParam.bildschirm->lock(); nachLogin->setAnzeige(NLAEditor); uiFactory.initParam.bildschirm->unlock(); _render = 1; ladeAnimation->setSichtbar(0); for (unsigned char deckAlpha = 255; deckAlpha > 0; ) { uiFactory.initParam.bildschirm->setdeckFarbe(deckAlpha << 24); Sleep(40); deckAlpha -= 15; } uiFactory.initParam.bildschirm->setdeckFarbe(0 << 24); uiFactory.initParam.bildschirm->setOnTop(0); } break; } release(); }