KartenLeser.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #include "KartenLeser.h"
  2. #include <Datei.h>
  3. // Inhalt der KartenLeser Klasse aus KartenLeser.h
  4. // Kontruktor
  5. KartenLeser::KartenLeser(int karteId, SSDatenbankV* db, const char* mapPfad)
  6. : ReferenceCounter()
  7. {
  8. this->karteId = karteId;
  9. this->db = db;
  10. pfad = new Text(mapPfad);
  11. }
  12. // Destruktor
  13. KartenLeser::~KartenLeser()
  14. {
  15. db->release();
  16. if (pfad)
  17. pfad->release();
  18. }
  19. // nicht constant
  20. bool KartenLeser::ladeSpielerTeamStruktur(SpielerTeamStruktur* zSts)
  21. {
  22. if (!pfad)
  23. return 0;
  24. Text* pf = new Text(pfad->getText());
  25. pf->append("sts.ltgd");
  26. Datei* datei = new Datei();
  27. datei->setDatei(pf);
  28. if (!datei->existiert() || datei->istOrdner())
  29. {
  30. datei->release();
  31. return 0;
  32. }
  33. datei->open(Datei::Style::lesen);
  34. datei->lese((char*)&zSts->spielerAnzahl, 4);
  35. datei->lese((char*)&zSts->teamAnzahl, 4);
  36. if (zSts->spielerFarbe)
  37. zSts->spielerFarbe->release();
  38. zSts->spielerFarbe = new Array< int >();
  39. for (int i = 0; i < zSts->spielerAnzahl; i++)
  40. {
  41. int farbe = 0;
  42. datei->lese((char*)&farbe, 4);
  43. zSts->spielerFarbe->set(farbe, i);
  44. }
  45. if (zSts->teamFarbe)
  46. zSts->teamFarbe->release();
  47. zSts->teamFarbe = new Array< int >();
  48. for (int i = 0; i < zSts->teamAnzahl; i++)
  49. {
  50. int farbe = 0;
  51. datei->lese((char*)&farbe, 4);
  52. zSts->teamFarbe->set(farbe, i);
  53. }
  54. if (zSts->teamName)
  55. zSts->teamName->release();
  56. zSts->teamName = new RCArray< Text >();
  57. for (int i = 0; i < zSts->teamAnzahl; i++)
  58. {
  59. char len = 0;
  60. datei->lese(&len, 1);
  61. char* txt = new char[len + 1];
  62. txt[(int)len] = 0;
  63. datei->lese(txt, len);
  64. Text* name = new Text(txt);
  65. delete[] txt;
  66. zSts->teamName->set(name, i);
  67. }
  68. if (zSts->teamSize)
  69. zSts->teamSize->release();
  70. zSts->teamSize = new Array< int >();
  71. for (int i = 0; i < zSts->teamAnzahl; i++)
  72. {
  73. int size = 0;
  74. datei->lese((char*)&size, 4);
  75. zSts->teamSize->set(size, i);
  76. }
  77. datei->close();
  78. datei->release();
  79. return 1;
  80. }
  81. // constant
  82. int KartenLeser::getKarteId() const
  83. {
  84. return karteId;
  85. }
  86. Text* KartenLeser::getPfad() const
  87. {
  88. return pfad ? dynamic_cast<Text*>(pfad->getThis()) : 0;
  89. }
  90. Text* KartenLeser::zPfad() const
  91. {
  92. return pfad;
  93. }