123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- #include <Bild.h>
- #include <Datei.h>
- #include <DateiSystem.h>
- #include <Globals.h>
- #include <GraphicsApi.h>
- #include <InitDatei.h>
- #include <iostream>
- #include <main.h>
- #include <Maus.h>
- #include <MausEreignis.h>
- #include <Punkt.h>
- #include <sstream>
- #include <TastaturEreignis.h>
- #include <Text.h>
- #include <TexturList.h>
- #include <vector>
- #include "..\Global\Initialisierung.h"
- #include "..\Global\Render.h"
- #include "..\Global\Variablen.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") && init.zWert("Log")->istGleich("1"))
- {
- Logging::LoggingChannel* channel
- = new Logging::FileLoggingChannel("data/log.txt");
- channel->setFormat(Logging::LoggingFormatBuilder()
- .datetime("y-m-d h:i:s")
- .text(" [")
- .level()
- .text("]: ")
- .build());
- Framework::Logging::zLoggingHandler()->addChannel(channel);
- }
- Framework::Logging::info() << "Anwendung wird gestartet...";
- WNDCLASS wc = F_Normal(p.hinst);
- wc.lpszClassName = "Game Client";
- Framework::Logging::info()
- << "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(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();
- Logging::info() << "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();
- Logging::info() << "Globale Variablen werden initialisiert...";
- initVariables(schrift, bildschirm);
- Render* render = new Render();
- Logging::info() << "Zeichen Thread wird gestartet...";
- render->start();
- Logging::info() << "Nachrichtenschleife wird ausgefuehrt...";
- StartNachrichtenSchleife();
- Logging::info() << "Zeichen Thread wird beendet...";
- render->beenden();
- render = (Render*)render->release();
- bildschirm->removeMember(vorLogin->zFenster());
- bildschirm->removeMember(nachLogin);
- Logging::info() << "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"));
- Logging::info() << "Programm wurde ordnungsgemaess beendet.";
- return 0;
- }
|