Start.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #include "..\Global\Variablen.h"
  2. #include <main.h>
  3. #include <MausEreignis.h>
  4. #include <TastaturEreignis.h>
  5. #include <Maus.h>
  6. #include <Punkt.h>
  7. #include "..\Global\Render.h"
  8. #include <Bild.h>
  9. #include <DateiSystem.h>
  10. #include <Globals.h>
  11. #include <Text.h>
  12. #include "..\Global\Initialisierung.h"
  13. #include <Datei.h>
  14. #include <iostream>
  15. #include <vector>
  16. #include <sstream>
  17. #include <InitDatei.h>
  18. #include <TexturList.h>
  19. #include <GraphicsApi.h>
  20. void fensterVS(void* p, void* f)
  21. {
  22. PostQuitMessage(0);
  23. }
  24. bool fensterME(void* p, void* f, MausEreignis me)
  25. {
  26. return 1;
  27. }
  28. bool fensterTE(void* p, void* f, TastaturEreignis te)
  29. {
  30. return 1;
  31. }
  32. int KSGStart Framework::Start(Startparam p)
  33. {
  34. Network::Start(50);
  35. if (!DateiExistiert("data/user_options.ini"))
  36. {
  37. userOptions = new InitDatei("data/default_options.ini");
  38. userOptions->laden();
  39. userOptions->setPfad("data/user_options.ini");
  40. userOptions->speichern();
  41. }
  42. else
  43. {
  44. userOptions = new InitDatei("data/user_options.ini");
  45. userOptions->laden();
  46. }
  47. InitDatei init("data/optionen.ini");
  48. init.laden();
  49. if (init.wertExistiert("Log"))
  50. Framework::setLogEnabled(init.zWert("Log")->istGleich("1"));
  51. Framework::logLine("Anwendung wird gestartet...");
  52. WNDCLASS wc = F_Normal(p.hinst);
  53. wc.lpszClassName = "Game Client";
  54. Framework::logLine("Grafische Benutzeroberflaeche wird erstellt...");
  55. Monitor m = getMonitor(0);
  56. if (userOptions->wertExistiert("Monitor"))
  57. {
  58. Monitor tmp = getMonitor((int)*userOptions->zWert("Monitor"));
  59. if (tmp.existiert)
  60. m = tmp;
  61. }
  62. WFenster* fenster = new WFenster();
  63. fenster->erstellen(WS_POPUP, wc);
  64. fenster->setPosition(Punkt(m.x, m.y));
  65. fenster->setSize(Punkt(m.breite, m.height));
  66. fenster->setMausAktion(fensterME);
  67. fenster->setTastaturAktion(fensterTE);
  68. fenster->setVSchließAktion(fensterVS);
  69. Bildschirm* bildschirm = 0;
  70. if (userOptions->wertExistiert("GraphicAPI") && userOptions->zWert("GraphicAPI")->istGleich("DX9"))
  71. bildschirm = new Bildschirm3D(dynamic_cast<WFenster*>(fenster->getThis()), DIRECTX9);
  72. else if (userOptions->wertExistiert("GraphicAPI") && userOptions->zWert("GraphicAPI")->istGleich("DX11"))
  73. bildschirm = new Bildschirm3D(dynamic_cast<WFenster*>(fenster->getThis()), DIRECTX11);
  74. else if (userOptions->wertExistiert("GraphicAPI") && userOptions->zWert("GraphicAPI")->istGleich("DX12"))
  75. bildschirm = new Bildschirm3D(dynamic_cast<WFenster*>(fenster->getThis()), DIRECTX12);
  76. else
  77. bildschirm = new Bildschirm3D(dynamic_cast<WFenster*>(fenster->getThis()));
  78. if (userOptions->wertExistiert("ScreenWidth") && userOptions->wertExistiert("ScreenHeight"))
  79. bildschirm->setBackBufferSize((int)*userOptions->zWert("ScreenWidth"), (int)*userOptions->zWert("ScreenHeight"));
  80. fenster->setBildschirm(dynamic_cast<Bildschirm*>(bildschirm->getThis()));
  81. fenster->setAnzeigeModus(1);
  82. fenster->setFokus();
  83. bildschirm->update();
  84. bildschirm->render();
  85. Framework::logLine("Schrift wird geladen...");
  86. LTDSDatei* schriftDatei = new LTDSDatei();
  87. schriftDatei->setPfad(new Text("data/schriften/normal.ltds"));
  88. schriftDatei->leseDaten();
  89. Schrift* schrift = schriftDatei->ladeSchrift();
  90. schriftDatei = (LTDSDatei*)schriftDatei->release();
  91. Framework::logLine("Globale Variablen werden initialisiert...");
  92. initVariables(schrift, bildschirm);
  93. Render* render = new Render();
  94. Framework::logLine("Zeichen Thread wird gestartet...");
  95. render->start();
  96. Framework::logLine("Nachrichtenschleife wird ausgefuehrt...");
  97. StartNachrichtenSchleife();
  98. Framework::logLine("Zeichen Thread wird beendet...");
  99. render->beenden();
  100. render = (Render*)render->release();
  101. bildschirm->removeMember(vorLogin->zFenster());
  102. bildschirm->removeMember(nachLogin);
  103. Framework::logLine("Speicher wird freigegeben...");
  104. releaseVariables();
  105. schrift = (Schrift*)schrift->release();
  106. bildschirm = (Bildschirm*)bildschirm->release();
  107. fenster->setBildschirm(0);
  108. fenster->zerstören();
  109. fenster = (WFenster*)fenster->release();
  110. Network::Exit();
  111. DateiPfadErstellen(new Text("data/tmp/keinabsturz"));
  112. Framework::logLine("Programm wurde ordnungsgemaess beendet.");
  113. return 0;
  114. }