SpielerGUI.cpp 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432
  1. #include "SpielerGUI.h"
  2. #include "../../Initialisierung/Initialisierung.h"
  3. #include <MausEreignis.h>
  4. #include <Rahmen.h>
  5. #include <Fortschritt.h>
  6. using namespace Framework;
  7. int getStellen( double d )
  8. {
  9. int ret = 0;
  10. for( int i = 1; d >= i; i *= 10 )
  11. ret++;
  12. return ret;
  13. }
  14. // Inhalt der Ship Klasse aus Ship.h
  15. // Konstruktor
  16. SpielerGUI::SpielerGUI( UIInit& uiFactory )
  17. : ReferenceCounter()
  18. {
  19. player = 0;
  20. ram = new LRahmen();
  21. ram->setSize( 200, 417 );
  22. ram->setFarbe( 0xFFFFFFFF );
  23. spieler = initTextFeld( 5, 5, 190, 20, uiFactory, TextFeld::Style::Text | TextFeld::Style::Center, "" );
  24. stabilität = initTextFeld( 5, 30, 165, 20, uiFactory, TextFeld::Style::Text | TextFeld::Style::Center, "" );
  25. energie = initTextFeld( 5, 55, 165, 20, uiFactory, TextFeld::Style::Text | TextFeld::Style::Center, "" );
  26. stabilitätB = new FBalken();
  27. stabilitätB->setPosition( 5, 30 );
  28. stabilitätB->setSize( 165, 20 );
  29. stabilitätB->setHintergrundFarbe( 0xFF000000 );
  30. stabilitätB->setFBgFarbe( 0xFF55FF55 );
  31. stabilitätB->setRahmenFarbe( 0xFF00FF00 );
  32. stabilitätB->setRahmenBreite( 1 );
  33. stabilitätB->setFRFarbe( 0xFF00FF00 );
  34. stabilitätB->setFRBreite( 1 );
  35. stabilitätB->setStyle( FBalken::Style::Sichtbar | FBalken::Style::L_R | FBalken::Style::Hintergrund | FBalken::Style::FFarbe | FBalken::Style::Rahmen | FBalken::Style::FRahmen );
  36. energieB = new FBalken();
  37. energieB->setPosition( 5, 55 );
  38. energieB->setSize( 165, 20 );
  39. energieB->setHintergrundFarbe( 0xFF000000 );
  40. energieB->setFBgFarbe( 0xFF5555FF );
  41. energieB->setRahmenFarbe( 0xFF0000FF );
  42. energieB->setRahmenBreite( 1 );
  43. energieB->setFRFarbe( 0xFF0000FF );
  44. energieB->setFRBreite( 1 );
  45. energieB->setStyle( FBalken::Style::Sichtbar | FBalken::Style::L_R | FBalken::Style::Hintergrund | FBalken::Style::FFarbe | FBalken::Style::Rahmen | FBalken::Style::FRahmen );
  46. reparatur = initTextFeld( 5, 80, 165, 20, uiFactory, TextFeld::Style::Sichtbar | TextFeld::Style::VCenter, "" );
  47. akkuLeistung = initTextFeld( 5, 105, 165, 20, uiFactory, TextFeld::Style::Sichtbar | TextFeld::Style::VCenter, "" );
  48. wendigkeit = initTextFeld( 5, 130, 165, 20, uiFactory, TextFeld::Style::Sichtbar | TextFeld::Style::VCenter, "" );
  49. beschleunigung = initTextFeld( 5, 155, 165, 20, uiFactory, TextFeld::Style::Sichtbar | TextFeld::Style::VCenter, "" );
  50. antriebEffizienz = initTextFeld( 5, 180, 165, 20, uiFactory, TextFeld::Style::Sichtbar | TextFeld::Style::VCenter, "" );
  51. laserIntensität = initTextFeld( 5, 205, 165, 20, uiFactory, TextFeld::Style::Sichtbar | TextFeld::Style::VCenter, "" );
  52. laserEffizienz = initTextFeld( 5, 230, 165, 20, uiFactory, TextFeld::Style::Sichtbar | TextFeld::Style::VCenter, "" );
  53. laserTempo = initTextFeld( 5, 255, 165, 20, uiFactory, TextFeld::Style::Sichtbar | TextFeld::Style::VCenter, "" );
  54. energieSchild = initTextFeld( 5, 280, 165, 20, uiFactory, TextFeld::Style::Sichtbar | TextFeld::Style::VCenter, "" );
  55. energieSchildEffizienz = initTextFeld( 5, 305, 165, 20, uiFactory, TextFeld::Style::Sichtbar | TextFeld::Style::VCenter, "" );
  56. netzwerk = initTextFeld( 5, 330, 165, 20, uiFactory, TextFeld::Style::Sichtbar | TextFeld::Style::VCenter, "" );
  57. stabilitätSkill = initKnopf( 172, 30, 20, 20, uiFactory, Knopf::Style::Sichtbar, "+" );
  58. energieSkill = initKnopf( 172, 55, 20, 20, uiFactory, Knopf::Style::Sichtbar, "+" );
  59. reparaturSkill = initKnopf( 172, 80, 20, 20, uiFactory, Knopf::Style::Sichtbar, "+" );
  60. akkuLeistungSkill = initKnopf( 172, 105, 20, 20, uiFactory, Knopf::Style::Sichtbar, "+" );
  61. wendigkeitSkill = initKnopf( 172, 130, 20, 20, uiFactory, Knopf::Style::Sichtbar, "+" );
  62. beschleunigungSkill = initKnopf( 172, 155, 20, 20, uiFactory, Knopf::Style::Sichtbar, "+" );
  63. antriebEffizienzSkill = initKnopf( 172, 180, 20, 20, uiFactory, Knopf::Style::Sichtbar, "+" );
  64. laserIntensitätSkill = initKnopf( 172, 205, 20, 20, uiFactory, Knopf::Style::Sichtbar, "+" );
  65. laserEffizienzSkill = initKnopf( 172, 230, 20, 20, uiFactory, Knopf::Style::Sichtbar, "+" );
  66. laserTempoSkill = initKnopf( 172, 255, 20, 20, uiFactory, Knopf::Style::Sichtbar, "+" );
  67. energieSchildSkill = initKnopf( 172, 280, 20, 20, uiFactory, Knopf::Style::Sichtbar, "+" );
  68. energieSchildEffizienzSkill = initKnopf( 172, 305, 20, 20, uiFactory, Knopf::Style::Sichtbar, "+" );
  69. netzwerkSkill = initKnopf( 172, 330, 20, 20, uiFactory, Knopf::Style::Sichtbar, "+" );
  70. stabilitätSkill->removeStyle( Knopf::Style::Erlaubt );
  71. energieSkill->removeStyle( Knopf::Style::Erlaubt );
  72. reparaturSkill->removeStyle( Knopf::Style::Erlaubt );
  73. akkuLeistungSkill->removeStyle( Knopf::Style::Erlaubt );
  74. wendigkeitSkill->removeStyle( Knopf::Style::Erlaubt );
  75. beschleunigungSkill->removeStyle( Knopf::Style::Erlaubt );
  76. laserIntensitätSkill->removeStyle( Knopf::Style::Erlaubt );
  77. laserEffizienzSkill->removeStyle( Knopf::Style::Erlaubt );
  78. laserTempoSkill->removeStyle( Knopf::Style::Erlaubt );
  79. energieSchildSkill->removeStyle( Knopf::Style::Erlaubt );
  80. energieSchildEffizienzSkill->removeStyle( Knopf::Style::Erlaubt );
  81. netzwerkSkill->removeStyle( Knopf::Style::Erlaubt );
  82. skillPoints = initTextFeld( 5, 355, 180, 20, uiFactory, TextFeld::Style::Sichtbar | TextFeld::Style::VCenter, "" );
  83. speed = initTextFeld( 5, 380, 180, 20, uiFactory, TextFeld::Style::Sichtbar | TextFeld::Style::VCenter, "" );
  84. renderer = new TextRenderer( dynamic_cast<Schrift*>(uiFactory.initParam.schrift->getThis()) );
  85. }
  86. // Destruktor
  87. SpielerGUI::~SpielerGUI()
  88. {
  89. player->release();
  90. ram->release();
  91. spieler->release();
  92. stabilität->release();
  93. energie->release();
  94. stabilitätB->release();
  95. energieB->release();
  96. reparatur->release();
  97. akkuLeistung->release();
  98. wendigkeit->release();
  99. beschleunigung->release();
  100. antriebEffizienz->release();
  101. laserIntensität->release();
  102. laserEffizienz->release();
  103. laserTempo->release();
  104. energieSchild->release();
  105. energieSchildEffizienz->release();
  106. netzwerk->release();
  107. stabilitätSkill->release();
  108. energieSkill->release();
  109. reparaturSkill->release();
  110. akkuLeistungSkill->release();
  111. wendigkeitSkill->release();
  112. beschleunigungSkill->release();
  113. antriebEffizienzSkill->release();
  114. laserIntensitätSkill->release();
  115. laserEffizienzSkill->release();
  116. laserTempoSkill->release();
  117. energieSchildSkill->release();
  118. energieSchildEffizienzSkill->release();
  119. netzwerkSkill->release();
  120. skillPoints->release();
  121. speed->release();
  122. renderer->release();
  123. }
  124. // nicht constant
  125. void SpielerGUI::update( Spieler* zSpieler )
  126. {
  127. if( !player )
  128. player = dynamic_cast<Spieler*>(zSpieler->getThis());
  129. spieler->setText( zSpieler->name->getText() );
  130. spieler->setSchriftFarbe( zSpieler->farbe );
  131. Text txt;
  132. txt.setPrecision( getStellen( zSpieler->stabilität ) + 2 );
  133. txt = zSpieler->stabilität;
  134. txt += "/";
  135. txt.setPrecision( getStellen( zSpieler->maxStabilität ) + 2 );
  136. txt += zSpieler->maxStabilität;
  137. int pos = txt.getLength();
  138. txt += "(+";
  139. txt.setPrecision( getStellen( zSpieler->zteam->maxStabilität ) + 2 );
  140. txt += zSpieler->zteam->maxStabilität;
  141. txt += ")";
  142. stabilität->setText( txt );
  143. stabilität->setSchriftFarbe( pos, txt.getLength(), 0xFF00FF00 );
  144. stabilitätB->reset();
  145. stabilitätB->setAktionAnzahl( (int)(zSpieler->maxStabilität + zSpieler->zteam->maxStabilität) );
  146. stabilitätB->aktionPlus( (int)(zSpieler->stabilität) );
  147. txt.setPrecision( getStellen( zSpieler->energie ) + 2 );
  148. txt = zSpieler->energie;
  149. txt += "/";
  150. txt.setPrecision( getStellen( zSpieler->maxEnergie ) + 2 );
  151. txt += zSpieler->maxEnergie;
  152. pos = txt.getLength();
  153. txt += "(+";
  154. txt.setPrecision( getStellen( zSpieler->zteam->maxEnergie ) + 2 );
  155. txt += zSpieler->zteam->maxEnergie;
  156. txt += ")";
  157. energie->setText( txt );
  158. energie->setSchriftFarbe( pos, txt.getLength(), 0xFF00FF00 );
  159. energieB->reset();
  160. energieB->setAktionAnzahl( (int)(zSpieler->maxEnergie + zSpieler->zteam->maxEnergie) );
  161. energieB->aktionPlus( (int)(zSpieler->energie) );
  162. txt = "Reparatur:";
  163. txt.setPrecision( getStellen( zSpieler->reparatur ) + 2 );
  164. txt += zSpieler->reparatur;
  165. pos = txt.getLength();
  166. txt += "(+";
  167. txt.setPrecision( getStellen( zSpieler->zteam->reparatur ) + 2 );
  168. txt += zSpieler->zteam->reparatur;
  169. txt += ")";
  170. reparatur->setText( txt );
  171. reparatur->setSchriftFarbe( pos, txt.getLength(), 0xFF00FF00 );
  172. txt = "Akku:";
  173. txt.setPrecision( getStellen( zSpieler->akkuLeistung ) + 2 );
  174. txt += zSpieler->akkuLeistung;
  175. pos = txt.getLength();
  176. txt += "(+";
  177. txt.setPrecision( getStellen( zSpieler->zteam->akkuLeistung ) + 2 );
  178. txt += zSpieler->zteam->akkuLeistung;
  179. txt += ")";
  180. akkuLeistung->setText( txt );
  181. akkuLeistung->setSchriftFarbe( pos, txt.getLength(), 0xFF00FF00 );
  182. txt = "Wendigkeit:";
  183. txt.setPrecision( getStellen( zSpieler->wendigkeit ) + 2 );
  184. txt += zSpieler->wendigkeit;
  185. pos = txt.getLength();
  186. txt += "(+";
  187. txt.setPrecision( getStellen( zSpieler->zteam->wendigkeit ) + 2 );
  188. txt += zSpieler->zteam->wendigkeit;
  189. txt += ")";
  190. wendigkeit->setText( txt );
  191. wendigkeit->setSchriftFarbe( pos, txt.getLength(), 0xFF00FF00 );
  192. txt = "Beschleunigung:";
  193. txt.setPrecision( getStellen( zSpieler->beschleunigung ) + 2 );
  194. txt += zSpieler->beschleunigung;
  195. pos = txt.getLength();
  196. txt += "(+";
  197. txt.setPrecision( getStellen( zSpieler->zteam->beschleunigung ) + 2 );
  198. txt += zSpieler->zteam->beschleunigung;
  199. txt += ")";
  200. beschleunigung->setText( txt );
  201. beschleunigung->setSchriftFarbe( pos, txt.getLength(), 0xFF00FF00 );
  202. txt = "Antrieb effizienz:";
  203. txt.setPrecision( getStellen( zSpieler->antriebEffizienz ) + 2 );
  204. txt += zSpieler->antriebEffizienz;
  205. pos = txt.getLength();
  206. txt += "(+";
  207. txt.setPrecision( getStellen( zSpieler->zteam->antriebEffizienz ) + 2 );
  208. txt += zSpieler->zteam->antriebEffizienz;
  209. txt += ")";
  210. antriebEffizienz->setText( txt );
  211. antriebEffizienz->setSchriftFarbe( pos, txt.getLength(), 0xFF00FF00 );
  212. txt = "Laser intensität:";
  213. txt.setPrecision( getStellen( zSpieler->laserIntensität ) + 2 );
  214. txt += zSpieler->laserIntensität;
  215. pos = txt.getLength();
  216. txt += "(+";
  217. txt.setPrecision( getStellen( zSpieler->zteam->laserIntensität ) + 2 );
  218. txt += zSpieler->zteam->laserIntensität;
  219. txt += ")";
  220. laserIntensität->setText( txt );
  221. laserIntensität->setSchriftFarbe( pos, txt.getLength(), 0xFF00FF00 );
  222. txt = "Laser effizienz:";
  223. txt.setPrecision( getStellen( zSpieler->laserEffizienz ) + 2 );
  224. txt += zSpieler->laserEffizienz;
  225. pos = txt.getLength();
  226. txt += "(+";
  227. txt.setPrecision( getStellen( zSpieler->zteam->laserEffizienz ) + 2 );
  228. txt += zSpieler->zteam->laserEffizienz;
  229. txt += ")";
  230. laserEffizienz->setText( txt );
  231. laserEffizienz->setSchriftFarbe( pos, txt.getLength(), 0xFF00FF00 );
  232. txt = "Laser tempo:";
  233. txt.setPrecision( getStellen( zSpieler->laserTempo ) + 2 );
  234. txt += zSpieler->laserTempo;
  235. pos = txt.getLength();
  236. txt += "(+";
  237. txt.setPrecision( getStellen( zSpieler->zteam->laserTempo ) + 2 );
  238. txt += zSpieler->zteam->laserTempo;
  239. txt += ")";
  240. laserTempo->setText( txt );
  241. laserTempo->setSchriftFarbe( pos, txt.getLength(), 0xFF00FF00 );
  242. txt = "Energie Schild:";
  243. txt.setPrecision( getStellen( zSpieler->energieSchild ) + 2 );
  244. txt += zSpieler->energieSchild;
  245. pos = txt.getLength();
  246. txt += "(+";
  247. txt.setPrecision( getStellen( zSpieler->zteam->energieSchild ) + 2 );
  248. txt += zSpieler->zteam->energieSchild;
  249. txt += ")";
  250. energieSchild->setText( txt );
  251. energieSchild->setSchriftFarbe( pos, txt.getLength(), 0xFF00FF00 );
  252. txt = "Schild effizienz:";
  253. txt.setPrecision( getStellen( zSpieler->energieSchildEffizienz ) + 2 );
  254. txt += zSpieler->energieSchildEffizienz;
  255. pos = txt.getLength();
  256. txt += "(+";
  257. txt.setPrecision( getStellen( zSpieler->zteam->energieSchildEffizienz ) + 2 );
  258. txt += zSpieler->zteam->energieSchildEffizienz;
  259. txt += ")";
  260. energieSchildEffizienz->setText( txt );
  261. energieSchildEffizienz->setSchriftFarbe( pos, txt.getLength(), 0xFF00FF00 );
  262. txt = "Netzwerk:";
  263. txt.setPrecision( getStellen( zSpieler->netzwerk ) + 2 );
  264. txt += zSpieler->netzwerk;
  265. netzwerk->setText( txt );
  266. stabilitätSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
  267. energieSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
  268. reparaturSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
  269. akkuLeistungSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
  270. wendigkeitSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
  271. beschleunigungSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
  272. antriebEffizienzSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
  273. laserIntensitätSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
  274. laserEffizienzSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
  275. laserTempoSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
  276. energieSchildSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
  277. energieSchildEffizienzSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
  278. netzwerkSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
  279. skillPoints->setText( Text( zSpieler->skillPunkte ) += " Punkte" );
  280. }
  281. int SpielerGUI::doPublicMausEreignis( MausEreignis& me )
  282. {
  283. me.mx -= ram->getX();
  284. me.my -= ram->getY();
  285. if( me.mx < 0 || me.my < 0 )
  286. {
  287. me.mx += ram->getX();
  288. me.my += ram->getY();
  289. return -1;
  290. }
  291. int aktion = me.verarbeitet;
  292. stabilitätSkill->doPublicMausEreignis( me );
  293. if( !aktion && me.verarbeitet && me.id == ME_RLinks )
  294. aktion = 2;
  295. energieSkill->doPublicMausEreignis( me );
  296. if( !aktion && me.verarbeitet && me.id == ME_RLinks )
  297. aktion = 3;
  298. reparaturSkill->doPublicMausEreignis( me );
  299. if( !aktion && me.verarbeitet && me.id == ME_RLinks )
  300. aktion = 4;
  301. antriebEffizienzSkill->doPublicMausEreignis( me );
  302. if( !aktion && me.verarbeitet && me.id == ME_RLinks )
  303. aktion = 12;
  304. laserIntensitätSkill->doPublicMausEreignis( me );
  305. if( !aktion && me.verarbeitet && me.id == ME_RLinks )
  306. aktion = 5;
  307. laserEffizienzSkill->doPublicMausEreignis( me );
  308. if( !aktion && me.verarbeitet && me.id == ME_RLinks )
  309. aktion = 6;
  310. laserTempoSkill->doPublicMausEreignis( me );
  311. if( !aktion && me.verarbeitet && me.id == ME_RLinks )
  312. aktion = 7;
  313. beschleunigungSkill->doPublicMausEreignis( me );
  314. if( !aktion && me.verarbeitet && me.id == ME_RLinks )
  315. aktion = 8;
  316. wendigkeitSkill->doPublicMausEreignis( me );
  317. if( !aktion && me.verarbeitet && me.id == ME_RLinks )
  318. aktion = 9;
  319. netzwerkSkill->doPublicMausEreignis( me );
  320. if( !aktion && me.verarbeitet && me.id == ME_RLinks )
  321. aktion = 10;
  322. akkuLeistungSkill->doPublicMausEreignis( me );
  323. if( !aktion && me.verarbeitet && me.id == ME_RLinks )
  324. aktion = 11;
  325. energieSchildSkill->doPublicMausEreignis( me );
  326. if( !aktion && me.verarbeitet && me.id == ME_RLinks )
  327. aktion = 13;
  328. energieSchildEffizienzSkill->doPublicMausEreignis( me );
  329. if( !aktion && me.verarbeitet && me.id == ME_RLinks )
  330. aktion = 14;
  331. me.mx += ram->getX();
  332. me.my += ram->getY();
  333. if( aktion > 1 )
  334. return aktion - 2;
  335. return -1;
  336. }
  337. bool SpielerGUI::tick( double tickVal )
  338. {
  339. bool ret = stabilitätSkill->tick( tickVal );
  340. ret |= energieSkill->tick( tickVal );
  341. ret |= reparaturSkill->tick( tickVal );
  342. ret |= akkuLeistungSkill->tick( tickVal );
  343. ret |= wendigkeitSkill->tick( tickVal );
  344. ret |= beschleunigungSkill->tick( tickVal );
  345. ret |= antriebEffizienzSkill->tick( tickVal );
  346. ret |= laserIntensitätSkill->tick( tickVal );
  347. ret |= laserEffizienzSkill->tick( tickVal );
  348. ret |= laserTempoSkill->tick( tickVal );
  349. ret |= energieSchildSkill->tick( tickVal );
  350. ret |= energieSchildEffizienzSkill->tick( tickVal );
  351. ret |= netzwerkSkill->tick( tickVal );
  352. return ret;
  353. }
  354. void SpielerGUI::render( Bild& zRObj )
  355. {
  356. ram->setPosition( Punkt( zRObj.getBreite() - 210, 10 ) );
  357. zRObj.alphaRegion( ram->getX() + 1, ram->getY() + 1, ram->getBreite() - 2, ram->getHeight() - 2, 0xA0000000 );
  358. ram->render( zRObj );
  359. if( !zRObj.setDrawOptions( ram->getPosition() + Punkt( 1, 1 ), ram->getSize() - Punkt( 2, 2 ) ) )
  360. return;
  361. spieler->render( zRObj );
  362. stabilitätB->render( zRObj );
  363. stabilität->render( zRObj );
  364. stabilitätSkill->render( zRObj );
  365. energieB->render( zRObj );
  366. energie->render( zRObj );
  367. energieSkill->render( zRObj );
  368. reparatur->render( zRObj );
  369. reparaturSkill->render( zRObj );
  370. akkuLeistung->render( zRObj );
  371. akkuLeistungSkill->render( zRObj );
  372. wendigkeit->render( zRObj );
  373. wendigkeitSkill->render( zRObj );
  374. beschleunigung->render( zRObj );
  375. beschleunigungSkill->render( zRObj );
  376. antriebEffizienz->render( zRObj );
  377. antriebEffizienzSkill->render( zRObj );
  378. laserIntensität->render( zRObj );
  379. laserIntensitätSkill->render( zRObj );
  380. laserEffizienz->render( zRObj );
  381. laserEffizienzSkill->render( zRObj );
  382. laserTempo->render( zRObj );
  383. laserTempoSkill->render( zRObj );
  384. energieSchild->render( zRObj );
  385. energieSchildSkill->render( zRObj );
  386. energieSchildEffizienz->render( zRObj );
  387. energieSchildEffizienzSkill->render( zRObj );
  388. netzwerk->render( zRObj );
  389. netzwerkSkill->render( zRObj );
  390. skillPoints->render( zRObj );
  391. if( player )
  392. {
  393. Text txt( "Geschwindigkeit: " );
  394. float sp = player->speed.getLength();
  395. txt.setPrecision( getStellen( sp ) + 2 );
  396. txt += sp;
  397. txt += " p/s";
  398. speed->setText( txt );
  399. speed->render( zRObj );
  400. zRObj.drawLinieH( 5, ram->getHeight() - 12, ram->getBreite() - 12, 0xFFFFFFFF );
  401. zRObj.drawLinieH( 5, ram->getHeight() - 7, ram->getBreite() - 12, 0xFFFFFFFF );
  402. zRObj.drawLinieV( 5, ram->getHeight() - 12, 5, 0xFFFFFFFF );
  403. zRObj.drawLinieV( ram->getBreite() - 7, ram->getHeight() - 12, 5, 0xFFFFFFFF );
  404. zRObj.fillRegion( 5, ram->getHeight() - 12, (int)((ram->getBreite() - 12) * (player->getEp() / player->getMaxEp())), 5, 0xFFFFFFFF );
  405. }
  406. zRObj.releaseDrawOptions();
  407. if( player )
  408. {
  409. int anz = player->activeSkills->getEintragAnzahl();
  410. int x = zRObj.getBreite() - anz * 51 - 1 - 220;
  411. int y = zRObj.getHeight() - 56;
  412. int index = 0;
  413. for( auto s : *player->activeSkills )
  414. {
  415. s->render( x + 1, y + 1, zRObj );
  416. zRObj.drawLinieH( x, y, 51, 0xFFFFFFFF );
  417. zRObj.drawLinieH( x, y + 55, 51, 0xFFFFFFFF );
  418. zRObj.drawLinieV( x, y, 56, 0xFFFFFFFF );
  419. zRObj.drawLinieV( x + 51, y, 56, 0xFFFFFFFF );
  420. renderer->renderText( x + 3, y + 3, Text( ++index ), zRObj, 0xFFFFFFFF );
  421. x += 51;
  422. }
  423. }
  424. }