#include "..\Global\Variablen.h" #include #include #include #include #include #include "..\Global\Render.h" #include #include #include #include #include "..\Global\Initialisierung.h" #include #include #include #include #include #include #include void fensterVS(void* p, void* f) { PostQuitMessage(0); } bool fensterME(void* p, void* f, MausEreignis me) { return 1; } bool fensterTE(void* p, void* f, TastaturEreignis te) { return 1; } int KSGStart Framework::Start(Startparam p) { Network::Start(50); if (!DateiExistiert("data/user_options.ini")) { userOptions = new InitDatei("data/default_options.ini"); userOptions->laden(); userOptions->setPfad("data/user_options.ini"); userOptions->speichern(); } else { userOptions = new InitDatei("data/user_options.ini"); userOptions->laden(); } InitDatei init("data/optionen.ini"); init.laden(); if (init.wertExistiert("Log")) Framework::setLogEnabled(init.zWert("Log")->istGleich("1")); Framework::logLine("Anwendung wird gestartet..."); WNDCLASS wc = F_Normal(p.hinst); wc.lpszClassName = "Game Client"; Framework::logLine("Grafische Benutzeroberflaeche wird erstellt..."); Monitor m = getMonitor(0); if (userOptions->wertExistiert("Monitor")) { Monitor tmp = getMonitor((int)*userOptions->zWert("Monitor")); if (tmp.existiert) m = tmp; } WFenster* fenster = new WFenster(); fenster->erstellen(WS_POPUP, wc); fenster->setPosition(Punkt(m.x, m.y)); fenster->setSize(Punkt(m.breite, m.height)); fenster->setMausAktion(fensterME); fenster->setTastaturAktion(fensterTE); fenster->setVSchließAktion(fensterVS); Bildschirm* bildschirm = 0; if (userOptions->wertExistiert("GraphicAPI") && userOptions->zWert("GraphicAPI")->istGleich("DX9")) bildschirm = new Bildschirm3D(dynamic_cast(fenster->getThis()), DIRECTX9); else if (userOptions->wertExistiert("GraphicAPI") && userOptions->zWert("GraphicAPI")->istGleich("DX11")) bildschirm = new Bildschirm3D(dynamic_cast(fenster->getThis()), DIRECTX11); else if (userOptions->wertExistiert("GraphicAPI") && userOptions->zWert("GraphicAPI")->istGleich("DX12")) bildschirm = new Bildschirm3D(dynamic_cast(fenster->getThis()), DIRECTX12); else bildschirm = new Bildschirm3D(dynamic_cast(fenster->getThis())); if (userOptions->wertExistiert("ScreenWidth") && userOptions->wertExistiert("ScreenHeight")) bildschirm->setBackBufferSize((int)*userOptions->zWert("ScreenWidth"), (int)*userOptions->zWert("ScreenHeight")); fenster->setBildschirm(dynamic_cast(bildschirm->getThis())); fenster->setAnzeigeModus(1); fenster->setFokus(); bildschirm->update(); bildschirm->render(); Framework::logLine("Schrift wird geladen..."); LTDSDatei* schriftDatei = new LTDSDatei(); schriftDatei->setPfad(new Text("data/schriften/normal.ltds")); schriftDatei->leseDaten(); Schrift* schrift = schriftDatei->ladeSchrift(); schriftDatei = (LTDSDatei*)schriftDatei->release(); Framework::logLine("Globale Variablen werden initialisiert..."); initVariables(schrift, bildschirm); Render* render = new Render(); Framework::logLine("Zeichen Thread wird gestartet..."); render->start(); Framework::logLine("Nachrichtenschleife wird ausgefuehrt..."); StartNachrichtenSchleife(); Framework::logLine("Zeichen Thread wird beendet..."); render->beenden(); render = (Render*)render->release(); bildschirm->removeMember(vorLogin->zFenster()); bildschirm->removeMember(nachLogin); Framework::logLine("Speicher wird freigegeben..."); releaseVariables(); schrift = (Schrift*)schrift->release(); bildschirm = (Bildschirm*)bildschirm->release(); fenster->setBildschirm(0); fenster->zerstören(); fenster = (WFenster*)fenster->release(); Network::Exit(); DateiPfadErstellen(new Text("data/tmp/keinabsturz")); Framework::logLine("Programm wurde ordnungsgemaess beendet."); return 0; }