Resource.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. #pragma once
  2. #include <Bild.h>
  3. #include <Schrift.h>
  4. using namespace Framework;
  5. class ColorMode
  6. {
  7. private:
  8. int ref;
  9. public:
  10. ColorMode();
  11. virtual Bild *colorImage( Bild *zImg, int color );
  12. ColorMode *getThis();
  13. ColorMode *release();
  14. };
  15. class AlphaColorMode : public ColorMode
  16. {
  17. private:
  18. unsigned char alpha;
  19. public:
  20. AlphaColorMode( unsigned char alpha );
  21. Bild *colorImage( Bild *zImg, int color ) override;
  22. };
  23. class MaskColorMode : public ColorMode
  24. {
  25. private:
  26. int colorToReplace;
  27. public:
  28. MaskColorMode( int colorToReplace );
  29. Bild *colorImage( Bild *zImg, int color ) override;
  30. };
  31. enum ResourceIds
  32. {
  33. R_BARIERE,
  34. R_BASE,
  35. R_PFEIL_GESCHOSS,
  36. R_PFEIL,
  37. R_LEBEN,
  38. R_SCHILD,
  39. R_SCHUH,
  40. R_GEIST,
  41. R_ROLLE,
  42. R_ROLLE_OBEN,
  43. R_ROLLE_LINKS,
  44. R_ROLLE_RECHTS,
  45. R_ROLLE_UNTEN,
  46. R_STURM,
  47. R_STURM_OBEN,
  48. R_STURM_LINKS,
  49. R_STURM_RECHTS,
  50. R_STURM_UNTEN,
  51. R_DRACHENAUGE,
  52. R_DRACHENAUGE_GESCHOSS,
  53. R_FEUERBALL,
  54. R_FEUERBALL_GESCHOSS,
  55. R_FEUERBALL_TREFFER,
  56. R_ENTERHAKEN_SEIL,
  57. R_ENTERHAKEN_SPITZE,
  58. R_ENTERHAKEN_ITEM,
  59. R_MINE,
  60. R_MINE_GESCHOSS,
  61. R_RWEISHEIT,
  62. R_RBOSHEIT,
  63. R_RLEBEN,
  64. R_RTEMPO,
  65. R_RSTRENGTH,
  66. R_SCHALTER,
  67. R_SCHIENE,
  68. R_SPIELER_STIRBT,
  69. R_SPIELER,
  70. R_SPIELER_RECHTS,
  71. R_SPIELER_LINKS,
  72. R_BRAND,
  73. R_EXPLOSION,
  74. R_HEILUNG,
  75. R_SCHADEN,
  76. R_TUNNEL,
  77. R_UMLENKUNG,
  78. R_RWEISHEIT_EFFECT,
  79. R_RBOSHEIT_EFFECT,
  80. R_RLEBEN_EFFECT,
  81. R_RTEMPO_EFFECT,
  82. R_RSTRENGTH_EFFECT,
  83. R_KUGEL_GESCHOSS,
  84. R_KUGEL,
  85. R_GUI_SPIELER,
  86. R_GUI_ERF_RAND,
  87. R_GUI_ERF,
  88. R_GUI_INVENTAR_AUSWAHL,
  89. R_GUI_INVENTAR_HINTERGRUND,
  90. R_GUI_INVENTAR_HINTERGRUND_BENUTZT,
  91. R_GUI_LEBEN_RAND,
  92. R_GUI_LEVEL_RAND
  93. };
  94. class ResourceRegistry;
  95. class Resource
  96. {
  97. private:
  98. ResourceIds id;
  99. int color;
  100. int ref;
  101. RCArray< Bild > images;
  102. public:
  103. Resource( ResourceIds id, int color );
  104. virtual Resource *createColoredResource( int color, ColorMode *mode ) const;
  105. Iterator< Bild * > getImages() const;
  106. ResourceIds getId() const;
  107. int getColor() const;
  108. Bild *zImage( int id ) const;
  109. Bild *getImage( int id ) const;
  110. int getImageCount() const;
  111. Resource *getThis();
  112. Resource *release();
  113. friend ResourceRegistry;
  114. };
  115. class ResourceRegistry
  116. {
  117. private:
  118. RCArray< Resource > resources;
  119. Text spielPfad;
  120. Text mapPfad;
  121. Schrift *schrift;
  122. int ref;
  123. public:
  124. ResourceRegistry( Text spielPfad, Text mapPfad );
  125. ~ResourceRegistry();
  126. void setSchrift( Schrift *schrift );
  127. Schrift *zSchrift() const;
  128. Schrift *getSchrift() const;
  129. Resource *getResource( ResourceIds id, int color, ColorMode *mode = 0, Text path = "" );
  130. Resource *zResource( ResourceIds id, int color, ColorMode *mode = 0, Text path = "" );
  131. ResourceRegistry *getThis();
  132. ResourceRegistry *release();
  133. };