KEBEditor.cpp 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. #include "KEBeschreibung.h"
  2. #include <TextFeld.h>
  3. #include <Text.h>
  4. #include <MausEreignis.h>
  5. #include "../../../../Global/Initialisierung.h"
  6. #include "../../../../Global/Variablen.h"
  7. #include <DateiSystem.h>
  8. bool KEBKnopfPressME( void *p, void *obj, MausEreignis me );
  9. // Inhalt der KEBEditor Klasse aus KEBEditor.h
  10. // Konstruktor
  11. KEBEditor::KEBEditor( Schrift *zSchrift, KEBeschreibung *zKeb )
  12. {
  13. beschreibung = initKnopf( 10, 10, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Beschreibung" );
  14. initToolTip( beschreibung, "Beschreibung bei der Kartenauswahl", zSchrift->getThis(), hauptScreen );
  15. beschreibung->setMausEreignisParameter( zKeb );
  16. beschreibung->setMausEreignis( KEBKnopfPressME );
  17. titelBild = initKnopf( 10, 40, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Titel Bild" );
  18. initToolTip( titelBild, "Titelbild während der Kartenauswahl (200x100)", zSchrift->getThis(), hauptScreen );
  19. titelBild->setMausEreignisParameter( zKeb );
  20. titelBild->setMausEreignis( KEBKnopfPressME );
  21. mapBild = initKnopf( 10, 70, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Minimap Bild" );
  22. initToolTip( mapBild, "Kartenvorschau Bild währed des erstellens einer Gruppe (348x348)", zSchrift->getThis(), hauptScreen );
  23. mapBild->setMausEreignisParameter( zKeb );
  24. mapBild->setMausEreignis( KEBKnopfPressME );
  25. ladenBild = initKnopf( 10, 100, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Laden Bild" );
  26. initToolTip( ladenBild, "Hintergrundbild beim Laden der Karte", zSchrift->getThis(), hauptScreen );
  27. ladenBild->setMausEreignisParameter( zKeb );
  28. ladenBild->setMausEreignis( KEBKnopfPressME );
  29. bild = initBildZ( 120, 10, 750, 510, ( BildZ::Style::normal | BildZ::Style::Alpha ) & ~BildZ::Style::Sichtbar, 0 );
  30. LTDSDatei *sd = new LTDSDatei();
  31. sd->setPfad( new Text( "data/schriften/ksgs.ltds" ) );
  32. sd->leseDaten();
  33. Schrift *ksgsS = sd->ladeSchrift();
  34. sd->release();
  35. text = initTextFeld( 120, 10, 750, 510, ksgsS ? ksgsS : zSchrift, ( TextFeld::Style::TextGebiet | TextFeld::Style::HScroll ) & ~TextFeld::Style::Sichtbar, "" );
  36. if( ksgsS )
  37. ksgsS->release();
  38. speichern = initKnopf( 10, 500, 100, 20, zSchrift, 0, "Speichern" );
  39. initToolTip( speichern, "Beschreibung speichern", zSchrift->getThis(), hauptScreen );
  40. speichern->setMausEreignisParameter( zKeb );
  41. speichern->setMausEreignis( KEBKnopfPressME );
  42. importieren = initKnopf( 10, 500, 100, 20, zSchrift, 0, "Importieren" );
  43. initToolTip( importieren, "Bild von Festplatte hochladen", zSchrift->getThis(), hauptScreen );
  44. importieren->setMausEreignisParameter( zKeb );
  45. importieren->setMausEreignis( KEBKnopfPressME );
  46. vorschau = initKnopf( 10, 470, 100, 20, zSchrift, 0, "Script Testen" );
  47. initToolTip( vorschau, "Die Beschreibung auf Scriptfehler testen", zSchrift->getThis(), hauptScreen );
  48. vorschau->setMausEreignisParameter( zKeb );
  49. vorschau->setMausEreignis( KEBKnopfPressME );
  50. jetzt = 0;
  51. sichtbar = 0;
  52. alpha = 0;
  53. tickVal = 0;
  54. ref = 1;
  55. }
  56. // Destruktor
  57. KEBEditor::~KEBEditor()
  58. {
  59. beschreibung->release();
  60. titelBild->release();
  61. mapBild->release();
  62. ladenBild->release();
  63. bild->release();
  64. text->release();
  65. speichern->release();
  66. importieren->release();
  67. vorschau->release();
  68. }
  69. // nicht constant
  70. void KEBEditor::setSichtbar( bool s )
  71. {
  72. sichtbar = s;
  73. }
  74. void KEBEditor::setText( Text *zText )
  75. {
  76. text->setText( zText->getText() );
  77. bild->removeStyle( BildZ::Style::Sichtbar );
  78. text->addStyle( TextFeld::Style::Sichtbar );
  79. importieren->removeStyle( Knopf::Style::Sichtbar );
  80. speichern->addStyle( Knopf::Style::Sichtbar );
  81. vorschau->addStyle( Knopf::Style::Sichtbar );
  82. }
  83. void KEBEditor::setBild( Bild *zBild )
  84. {
  85. bild->setBildZ( zBild->getThis() );
  86. text->removeStyle( TextFeld::Style::Sichtbar );
  87. bild->addStyle( BildZ::Style::Sichtbar );
  88. speichern->removeStyle( Knopf::Style::Sichtbar );
  89. importieren->addStyle( Knopf::Style::Sichtbar );
  90. vorschau->removeStyle( Knopf::Style::Sichtbar );
  91. }
  92. bool KEBEditor::tick( double tv )
  93. {
  94. bool ret = beschreibung->tick( tv );
  95. ret |= titelBild->tick( tv );
  96. ret |= mapBild->tick( tv );
  97. ret |= ladenBild->tick( tv );
  98. ret |= bild->tick( tv );
  99. ret |= text->tick( tv );
  100. ret |= speichern->tick( tv );
  101. ret |= importieren->tick( tv );
  102. ret |= vorschau->tick( tv );
  103. tickVal += tv * 150;
  104. int val = 0;
  105. if( tickVal > 1 )
  106. val = (int)tickVal;
  107. else
  108. return ret;
  109. if( sichtbar && alpha != 255 )
  110. {
  111. if( alpha + val > 255 )
  112. alpha = 255;
  113. else
  114. alpha += val;
  115. ret = 1;
  116. }
  117. if( !sichtbar && alpha != 0 )
  118. {
  119. if( alpha - val < 0 )
  120. alpha = 0;
  121. else
  122. alpha -= val;
  123. ret = 1;
  124. }
  125. return ret;
  126. }
  127. void KEBEditor::doMausEreignis( MausEreignis &me )
  128. {
  129. if( !sichtbar )
  130. return;
  131. beschreibung->setAlphaFeldFarbe( 0x5500FF00 );
  132. titelBild->setAlphaFeldFarbe( 0x5500FF00 );
  133. mapBild->setAlphaFeldFarbe( 0x5500FF00 );
  134. ladenBild->setAlphaFeldFarbe( 0x5500FF00 );
  135. bool mv = me.verarbeitet;
  136. beschreibung->doMausEreignis( me );
  137. if( !mv && me.verarbeitet && me.id == ME_RLinks )
  138. jetzt = 1;
  139. mv = me.verarbeitet;
  140. titelBild->doMausEreignis( me );
  141. if( !mv && me.verarbeitet && me.id == ME_RLinks )
  142. jetzt = 2;
  143. mv = me.verarbeitet;
  144. mapBild->doMausEreignis( me );
  145. if( !mv && me.verarbeitet && me.id == ME_RLinks )
  146. jetzt = 3;
  147. mv = me.verarbeitet;
  148. ladenBild->doMausEreignis( me );
  149. if( !mv && me.verarbeitet && me.id == ME_RLinks )
  150. jetzt = 4;
  151. if( jetzt == 1 )
  152. beschreibung->setAlphaFeldFarbe( 0x0000FF00 );
  153. if( jetzt == 2 )
  154. titelBild->setAlphaFeldFarbe( 0x0000FF00 );
  155. if( jetzt == 3 )
  156. mapBild->setAlphaFeldFarbe( 0x0000FF00 );
  157. if( jetzt == 4 )
  158. ladenBild->setAlphaFeldFarbe( 0x0000FF00 );
  159. bild->doMausEreignis( me );
  160. text->doMausEreignis( me );
  161. speichern->doMausEreignis( me );
  162. importieren->doMausEreignis( me );
  163. vorschau->doMausEreignis( me );
  164. }
  165. void KEBEditor::doTastaturEreignis( TastaturEreignis &te )
  166. {
  167. if( !sichtbar )
  168. return;
  169. text->doTastaturEreignis( te );
  170. }
  171. void KEBEditor::render( Bild &zRObj )
  172. {
  173. if( !alpha )
  174. return;
  175. zRObj.setAlpha( alpha );
  176. beschreibung->render( zRObj );
  177. titelBild->render( zRObj );
  178. mapBild->render( zRObj );
  179. ladenBild->render( zRObj );
  180. text->render( zRObj );
  181. bild->render( zRObj );
  182. speichern->render( zRObj );
  183. importieren->render( zRObj );
  184. vorschau->render( zRObj );
  185. zRObj.releaseAlpha();
  186. }
  187. // constant
  188. int KEBEditor::getKNum( Knopf *zK ) const
  189. {
  190. if( zK == beschreibung )
  191. return 1;
  192. if( zK == titelBild )
  193. return 2;
  194. if( zK == mapBild )
  195. return 3;
  196. if( zK == ladenBild )
  197. return 4;
  198. if( zK == speichern )
  199. return -1;
  200. if( zK == importieren )
  201. return -2;
  202. if( zK == vorschau )
  203. return -3;
  204. return 0;
  205. }
  206. Text *KEBEditor::zBeschreibung() const
  207. {
  208. return text->zText();
  209. }
  210. int KEBEditor::getJetzt() const
  211. {
  212. return jetzt;
  213. }
  214. bool KEBEditor::istSichtbar() const
  215. {
  216. return sichtbar;
  217. }
  218. // Reference Counting
  219. KEBEditor *KEBEditor::getThis()
  220. {
  221. ref++;
  222. return this;
  223. }
  224. KEBEditor *KEBEditor::release()
  225. {
  226. ref--;
  227. if( !ref )
  228. delete this;
  229. return 0;
  230. }