Main.cpp 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. #include <Bildschirm.h>
  2. #include <Datei.h>
  3. #include <DateiSystem.h>
  4. #include <Fenster.h>
  5. #include <GraphicsApi.h>
  6. #include <HttpRequest.h>
  7. #include <JSON.h>
  8. #include <main.h>
  9. #include <Network.h>
  10. #include <RenderThread.h>
  11. #include <Schrift.h>
  12. #include <Textur.h>
  13. #include "CustomDX11API.h"
  14. #include "Globals.h"
  15. void createModels(Bildschirm* zScreen);
  16. /* Test rendering of specific block types
  17. int KSGStart Framework::Start(Framework::Startparam p)
  18. {
  19. Network::Start(20);
  20. initVariables();
  21. setDebugDX(1);
  22. Datei d;
  23. d.setDatei("data/schriften");
  24. auto list = d.getDateiListe();
  25. for (Text* fontFile : *list)
  26. {
  27. LTDSDatei dat;
  28. dat.setPfad(
  29. new Text(Text("data/schriften/").operator+(fontFile->getText())));
  30. dat.leseDaten();
  31. Text* name = fontFile->getTeilText(0, fontFile->getLength() - 5);
  32. fontRegister->put(*name, RCPointer<Schrift>::of(dat.ladeSchrift()));
  33. name->release();
  34. }
  35. list->release();
  36. WFenster window;
  37. ::window = &window;
  38. WNDCLASS wc = Framework::F_Normal(p.hinst);
  39. wc.lpszClassName = "Factory Craft";
  40. window.erstellen(WS_POPUPWINDOW, wc);
  41. Monitor m = Framework::getMonitor(0);
  42. window.setBounds(Punkt(m.x, m.y), Punkt(m.breite, m.height));
  43. window.setAnzeigeModus(SW_SHOWNORMAL);
  44. window.setVSchließAktion([&window](void* p, void* f) {
  45. StopNachrichtenSchleife(window.getFensterHandle());
  46. });
  47. window.setMausAktion(_ret1ME);
  48. window.setTastaturAktion(_ret1TE);
  49. Bildschirm3D screen(
  50. dynamic_cast<WFenster*>(window.getThis()), new CustomDX11API());
  51. screen.setHandleUserInputsOnTick(1);
  52. window.setBildschirm(dynamic_cast<Bildschirm*>(screen.getThis()));
  53. screen.setFillFarbe(0);
  54. uiFactory = Framework::defaultUI(fontRegister->get("normal"), &screen);
  55. createModels(&screen);
  56. // loading textures
  57. Datei texturF;
  58. texturF.setDatei("data/textures");
  59. RCArray<Text>* files = texturF.getDateiListe();
  60. if (files)
  61. {
  62. int count = 0;
  63. for (Text* fileName : *files)
  64. {
  65. LTDBDatei dat;
  66. dat.setDatei(new Text(Text("data/textures/") + *fileName));
  67. dat.leseDaten(0);
  68. count += dat.getBildAnzahl();
  69. }
  70. for (Text* fileName : *files)
  71. {
  72. LTDBDatei dat;
  73. dat.setDatei(new Text(Text("data/textures/") + *fileName));
  74. dat.leseDaten(0);
  75. for (Text* name : *dat.zBildListe())
  76. {
  77. Bild* b = dat.laden(0, new Text(*name));
  78. screen.zGraphicsApi()
  79. ->createOrGetTextur(*fileName + "/" + *name, b)
  80. ->release();
  81. }
  82. }
  83. files->release();
  84. }
  85. BlockType* type = new BlockType(
  86. 26, 1, ModelInfo("cube", "fluids.ltdb/water.png", 0, 6), 10, 1); // block type to render
  87. Block* b = type->createBlock(Vec3<float>(0, 0, 0));
  88. unsigned char light[] = {255, 255, 255, 255, 255, 255};
  89. b->setLightData(TOP, light);
  90. b->setLightData(NORTH, light);
  91. b->setLightData(EAST, light);
  92. b->setLightData(SOUTH, light);
  93. b->setLightData(WEST, light);
  94. b->setLightData(BOTTOM, light);
  95. Chunk *c = new Chunk(Punkt(0, 0));
  96. c->setBlock(b);
  97. Welt3D* w = new Welt3D();
  98. w->addCollection(c);
  99. Kam3D* kam = new Kam3D();
  100. kam->setStyle(
  101. Kam3D::Style::Movable | Kam3D::Style::Rotatable | Kam3D::Style::Tick);
  102. kam->setPosition(Vec3<float>(10, 0, 0));
  103. kam->setAusrichtung(Vec3<float>(0, 0, 0));
  104. kam->setWelt(w);
  105. screen.addKamera(kam);
  106. RenderTh rTh;
  107. rTh.setMaxFps(60);
  108. rTh.setQuiet(1);
  109. rTh.setBildschirm(dynamic_cast<Bildschirm*>(screen.getThis()));
  110. rTh.beginn();
  111. StartNachrichtenSchleife();
  112. rTh.beenden();
  113. releaseVariables();
  114. Network::Exit();
  115. return 0;
  116. }
  117. */
  118. int KSGStart Framework::Start(Framework::Startparam p)
  119. {
  120. Network::Start(20);
  121. initVariables();
  122. setDebugDX(1);
  123. Datei d;
  124. d.setDatei("data/schriften");
  125. auto list = d.getDateiListe();
  126. for (Text* fontFile : *list)
  127. {
  128. LTDSDatei dat;
  129. dat.setPfad(
  130. new Text(Text("data/schriften/").operator+(fontFile->getText())));
  131. dat.leseDaten();
  132. Text* name = fontFile->getTeilText(0, fontFile->getLength() - 5);
  133. fontRegister->put(*name, RCPointer<Schrift>::of(dat.ladeSchrift()));
  134. name->release();
  135. }
  136. list->release();
  137. WFenster window;
  138. ::window = &window;
  139. WNDCLASS wc = Framework::F_Normal(p.hinst);
  140. wc.lpszClassName = "Factory Craft";
  141. window.erstellen(WS_POPUPWINDOW, wc);
  142. Monitor m = Framework::getMonitor(0);
  143. window.setBounds(Punkt(m.x, m.y), Punkt(m.breite, m.height));
  144. window.setAnzeigeModus(SW_SHOWNORMAL);
  145. window.setVSchließAktion([&window](void* p, void* f) {
  146. StopNachrichtenSchleife(window.getFensterHandle());
  147. });
  148. window.setMausAktion(_ret1ME);
  149. window.setTastaturAktion(_ret1TE);
  150. Bildschirm3D screen(
  151. dynamic_cast<WFenster*>(window.getThis()), new CustomDX11API());
  152. screen.setHandleUserInputsOnTick(1);
  153. window.setBildschirm(dynamic_cast<Bildschirm*>(screen.getThis()));
  154. screen.setFillFarbe(0);
  155. uiFactory = Framework::defaultUI(fontRegister->get("normal"), &screen);
  156. initMenus();
  157. RenderTh rTh;
  158. rTh.setMaxFps(60);
  159. rTh.setQuiet(1);
  160. rTh.setBildschirm(dynamic_cast<Bildschirm*>(screen.getThis()));
  161. rTh.beginn();
  162. StartNachrichtenSchleife();
  163. rTh.beenden();
  164. releaseVariables();
  165. Network::Exit();
  166. return 0;
  167. }