123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- #include "..\Global\Variablen.h"
- #include <main.h>
- #include <MausEreignis.h>
- #include <TastaturEreignis.h>
- #include <Maus.h>
- #include <Punkt.h>
- #include "..\Global\Render.h"
- #include <Bild.h>
- #include <DateiSystem.h>
- #include <Globals.h>
- #include <Text.h>
- #include "..\Global\Initialisierung.h"
- #include <Datei.h>
- #include <iostream>
- #include <vector>
- #include <sstream>
- #include <InitDatei.h>
- #include <TexturList.h>
- #include <GraphicsApi.h>
- 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<WFenster*>(fenster->getThis()), DIRECTX9);
- else if (userOptions->wertExistiert("GraphicAPI") && userOptions->zWert("GraphicAPI")->istGleich("DX11"))
- bildschirm = new Bildschirm3D(dynamic_cast<WFenster*>(fenster->getThis()), DIRECTX11);
- else if (userOptions->wertExistiert("GraphicAPI") && userOptions->zWert("GraphicAPI")->istGleich("DX12"))
- bildschirm = new Bildschirm3D(dynamic_cast<WFenster*>(fenster->getThis()), DIRECTX12);
- else
- bildschirm = new Bildschirm3D(dynamic_cast<WFenster*>(fenster->getThis()));
- if (userOptions->wertExistiert("ScreenWidth") && userOptions->wertExistiert("ScreenHeight"))
- bildschirm->setBackBufferSize((int)*userOptions->zWert("ScreenWidth"), (int)*userOptions->zWert("ScreenHeight"));
- fenster->setBildschirm(dynamic_cast<Bildschirm*>(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;
- }
|