Strukturen.cpp 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. #include "Strukturen.h"
  2. #include <M2Datei.h>
  3. #include <DateiSystem.h>
  4. // Inhalt der RessourceStr Klasse aus Strukturen.h
  5. // Konstruktor
  6. RessourceStr::RessourceStr( Datei *zDatei, int karteId, Text *zGamePath )
  7. {
  8. zDatei->lese( (char*)&id, 4 );
  9. char län = 0;
  10. zDatei->lese( &län, 1 );
  11. Text txt;
  12. txt.fillText( '0', län + 1 );
  13. zDatei->lese( txt, län );
  14. txt.getText()[ län ] = 0;
  15. pfad = 0;
  16. if( txt.positionVon( "spiel:" ) == 0 )
  17. {
  18. pfad = new Text( zGamePath->getText() );
  19. if( pfad )
  20. pfad->append( txt.getTeilText( 6 ) );
  21. }
  22. if( txt.positionVon( "map:" ) == 0 )
  23. {
  24. pfad = new Text( "data/tmp/Karten/" );
  25. pfad->append( karteId );
  26. pfad->append( "/" );
  27. pfad->append( txt.getTeilText( 4 ) );
  28. }
  29. m2d = 0;
  30. bild = 0;
  31. if( pfad && pfad->hat( ".m2/" ) )
  32. {
  33. int pos = pfad->positionVon( ".m2/", pfad->anzahlVon( ".m2/" ) - 1 );
  34. M2Datei *datei = new M2Datei( pfad->getTeilText( 0, pos + 3 ) );
  35. datei->leseDaten();
  36. m2d = datei->ladeModel( pfad->getTeilText( pos + 4 ) );
  37. datei->release();
  38. }
  39. if( pfad && pfad->hat( ".ltdb/" ) )
  40. {
  41. int pos = pfad->positionVon( ".ltdb/", pfad->anzahlVon( ".ltdb/" ) - 1 );
  42. LTDBDatei *datei = new LTDBDatei();
  43. datei->setDatei( pfad->getTeilText( 0, pos + 5 ) );
  44. datei->leseDaten( 0 );
  45. bild = datei->laden( 0, pfad->getTeilText( pos + 6 ) );
  46. datei->release();
  47. }
  48. ref = 1;
  49. }
  50. // Destruktor
  51. RessourceStr::~RessourceStr()
  52. {
  53. if( pfad )
  54. pfad->release();
  55. if( m2d )
  56. m2d->release();
  57. if( bild )
  58. bild->release();
  59. }
  60. // constant
  61. int RessourceStr::getId() const
  62. {
  63. return id;
  64. }
  65. Model2DData *RessourceStr::zReccourceM2() const
  66. {
  67. return m2d;
  68. }
  69. Bild *RessourceStr::zReccourceTxt() const
  70. {
  71. return bild;
  72. }
  73. // Reference Counting
  74. RessourceStr *RessourceStr::getThis()
  75. {
  76. ref++;
  77. return this;
  78. }
  79. RessourceStr *RessourceStr::release()
  80. {
  81. ref--;
  82. if( !ref )
  83. delete this;
  84. return 0;
  85. }
  86. // Inhalt der ZeichnungStr Klasse aus Strukturen.h
  87. // Konstruktor
  88. ObjektStr::ObjektStr( Datei *zDatei )
  89. {
  90. zDatei->lese( (char*)&pos.x, 4 );
  91. zDatei->lese( (char*)&pos.y, 4 );
  92. zDatei->lese( (char*)&id, 4 );
  93. zDatei->lese( (char*)&m2d, 4 );
  94. zDatei->lese( (char*)&bild, 4 );
  95. zDatei->lese( (char*)&style, 4 );
  96. zDatei->lese( (char*)&maxStabilität, 4 );
  97. zDatei->lese( (char*)&maxEnergie, 4 );
  98. zDatei->lese( (char*)&energieRadius, 4 );
  99. zDatei->lese( (char*)&reparatur, 8 );
  100. zDatei->lese( (char*)&akkuLeistung, 8 );
  101. zDatei->lese( &team, 1 );
  102. ref = 1;
  103. }
  104. // Reference Counting
  105. ObjektStr *ObjektStr::getThis()
  106. {
  107. ref++;
  108. return this;
  109. }
  110. ObjektStr *ObjektStr::release()
  111. {
  112. ref--;
  113. if( !ref )
  114. delete this;
  115. return 0;
  116. }
  117. // Inhalt der SpielerStr Klasse aus Strukturen.h
  118. // Konstruktor
  119. SpielerStr::SpielerStr( Datei *zDatei )
  120. {
  121. zDatei->lese( (char*)&id, 4 );
  122. zDatei->lese( (char*)&pos.x, 4 );
  123. zDatei->lese( (char*)&pos.y, 4 );
  124. zDatei->lese( (char*)&rot, 8 );
  125. zDatei->lese( (char*)&beschleunigung, 8 );
  126. zDatei->lese( (char*)&maxStabilität, 4 );
  127. zDatei->lese( (char*)&maxEnergie, 4 );
  128. zDatei->lese( (char*)&reparatur, 8 );
  129. zDatei->lese( (char*)&akkuLeistung, 8 );
  130. zDatei->lese( (char*)&laserIntensität, 4 );
  131. zDatei->lese( (char*)&laserEffizienz, 4 );
  132. zDatei->lese( (char*)&laserTempo, 4 );
  133. zDatei->lese( (char*)&wendigkeit, 8 );
  134. zDatei->lese( (char*)&antriebEffizienz, 8 );
  135. zDatei->lese( (char*)&energieSchild, 8 );
  136. zDatei->lese( (char*)&energieSchildEffizienz, 8 );
  137. zDatei->lese( (char*)&netzwerk, 4 );
  138. zDatei->lese( (char*)&skillPunkte, 4 );
  139. zDatei->lese( (char*)&m2d, 4 );
  140. zDatei->lese( (char*)&bild, 4 );
  141. ref = 1;
  142. }
  143. // Reference Counting
  144. SpielerStr *SpielerStr::getThis()
  145. {
  146. ref++;
  147. return this;
  148. }
  149. SpielerStr *SpielerStr::release()
  150. {
  151. ref--;
  152. if( !ref )
  153. delete this;
  154. return 0;
  155. }
  156. // Inhalt der TeamStr Klasse aus Strukturen.h
  157. // Konstruktor
  158. TeamStr::TeamStr( Datei *zDatei )
  159. {
  160. zDatei->lese( (char*)&id, 4 );
  161. zDatei->lese( (char*)&maxPunkte, 4 );
  162. zDatei->lese( (char*)&beschleunigung, 8 );
  163. zDatei->lese( (char*)&maxStabilität, 4 );
  164. zDatei->lese( (char*)&maxEnergie, 4 );
  165. zDatei->lese( (char*)&reparatur, 8 );
  166. zDatei->lese( (char*)&akkuLeistung, 8 );
  167. zDatei->lese( (char*)&laserIntensität, 4 );
  168. zDatei->lese( (char*)&laserEffizienz, 4 );
  169. zDatei->lese( (char*)&laserTempo, 4 );
  170. zDatei->lese( (char*)&wendigkeit, 8 );
  171. zDatei->lese( (char*)&antriebEffizienz, 8 );
  172. zDatei->lese( (char*)&energieSchild, 8 );
  173. zDatei->lese( (char*)&energieSchildEffizienz, 8 );
  174. zDatei->lese( (char*)&punkte, 4 );
  175. ref = 1;
  176. }
  177. // Reference Counting
  178. TeamStr *TeamStr::getThis()
  179. {
  180. ref++;
  181. return this;
  182. }
  183. TeamStr *TeamStr::release()
  184. {
  185. ref--;
  186. if( !ref )
  187. delete this;
  188. return 0;
  189. }