test.cpp 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382
  1. #include <KSGSStandart.h>
  2. var int besitzStatus;
  3. var int erwerbbarStatus;
  4. var Bild goldBild;
  5. var Bild silberBild;
  6. var Bild kupferBild;
  7. class TextErscheinen
  8. {
  9. private:
  10. var TextFeld beschreibung;
  11. var Text txt;
  12. var int num;
  13. var int län;
  14. var double z;
  15. public:
  16. func void init( int besitzStatus )
  17. {
  18. initTextFeld( beschreibung, 5, 5, 545, 180, "", 0x101 );
  19. txt = "Dies ist eine Karte für das Spiel Linie\n";
  20. txt += "Maximale Spieleranzahl: 10\n";
  21. txt += "Teamanzahl: 10\n";
  22. txt += "Maximale Spieler pro Team: 1\n";
  23. txt += "Spieltyp: Alle gegen Alle\n";
  24. if( besitzStatus == 1 )
  25. {
  26. txt += "Du besitzt die Testversion dieser Karte.\n";
  27. txt += "Anzahl verbleibender Spiele: ";
  28. txt += Rückruf( "GetTestVersionVerbleibend" );
  29. }
  30. if( besitzStatus == 2 )
  31. {
  32. txt += "Du besitzt die Vollversion dieser Karte.";
  33. }
  34. län = txt.getLänge();
  35. num = 0;
  36. z = 0;
  37. }
  38. func bool next( double zeit )
  39. {
  40. z += zeit;
  41. if( ( z > 0.03 ) && ( num < län ) )
  42. {
  43. var Text t;
  44. t = beschreibung.getText();
  45. while( z > 0.03 )
  46. {
  47. z -= 0.03;
  48. t.anhängen( txt.getTeilText( num, num + 1 ) );
  49. num += 1;
  50. if( num < län )
  51. {
  52. break;
  53. }
  54. }
  55. beschreibung.setText( t );
  56. return true;
  57. }
  58. return false;
  59. }
  60. func void render( Bild b )
  61. {
  62. beschreibung.render( b );
  63. }
  64. };
  65. class TestVersion
  66. {
  67. private:
  68. var double y;
  69. var int x;
  70. var double yS;
  71. var int alpha;
  72. var TextFeld tve;
  73. var TextFeld tvkosten;
  74. var TextFeld tvGoldTF;
  75. var TextFeld tvSilberTF;
  76. var TextFeld tvKupferTF;
  77. var BildO tvGoldBildO;
  78. var BildO tvSilberBildO;
  79. var BildO tvKupferBildO;
  80. var Knopf tvKaufen;
  81. var TextFeld tvNGK;
  82. public:
  83. func void init()
  84. {
  85. yS = 150;
  86. x = 0;
  87. y = 0;
  88. alpha = 0;
  89. initTextFeld( tve, 5, 0, 300, 20, "", 0x101 );
  90. initTextFeld( tvkosten, 5, 25, 50, 20, "", 0x701 );
  91. initTextFeld( tvGoldTF, 60, 25, 0, 0, "", 0x701 );
  92. initTextFeld( tvSilberTF, 90, 25, 0, 0, "", 0x701 );
  93. initTextFeld( tvKupferTF, 120, 25, 0, 0, "", 0x701 );
  94. initTextFeld( tvNGK, 5, 75, 200, 20, "", 0x101 );
  95. if( ( besitzStatus == 0 ) && ( erwerbbarStatus != 0 ) && ( erwerbbarStatus != 2 ) )
  96. {
  97. tve.setText( "10 Spiele Testversion" );
  98. tvkosten.setText( "Kosten: " );
  99. var int preis;
  100. preis = Rückruf( "GetPreis", 0 );
  101. var Text preisT = preis / 10000;
  102. tvGoldTF.setText( preisT );
  103. preisT = ( preis / 100 ) % 100;
  104. tvSilberTF.setText( preisT );
  105. preisT = preis % 100;
  106. tvKupferTF.setText( preisT );
  107. tvGoldTF.setGrößeNachText();
  108. tvSilberTF.setGrößeNachText();
  109. tvKupferTF.setGrößeNachText();
  110. tvGoldTF.setGröße( tvGoldTF.getBreite(), 20 );
  111. tvSilberTF.setGröße( tvSilberTF.getBreite(), 20 );
  112. tvKupferTF.setGröße( tvKupferTF.getBreite(), 20 );
  113. tvSilberTF.setPosition( tvSilberTF.getX() + tvGoldTF.getBreite(), tvSilberTF.getY() );
  114. tvKupferTF.setPosition( tvKupferTF.getX() + tvGoldTF.getBreite() + tvSilberTF.getBreite(), tvSilberTF.getY() );
  115. initBildO( tvGoldBildO, 60 + tvGoldTF.getBreite(), 25, goldBild );
  116. initBildO( tvSilberBildO, 90 + tvGoldTF.getBreite() + tvSilberTF.getBreite(), 25, silberBild );
  117. initBildO( tvKupferBildO, 120 + tvGoldTF.getBreite() + tvSilberTF.getBreite() + tvKupferTF.getBreite(), 25, kupferBild );
  118. initKnopf( tvKaufen, 5, 50, 100, 20, "Erwerben" );
  119. tvKaufen.setMausEreignis( "tvKME" );
  120. if( preis > Rückruf( "GetKupfer" ) )
  121. {
  122. tvKaufen.löscheStyle( 0x2 );
  123. tvNGK.setText( "Du hast nicht genug Geld." );
  124. }
  125. }
  126. }
  127. func bool tick( double z )
  128. {
  129. if( ( alpha == 255 ) && ( y >= 280 ) )
  130. {
  131. return tvKaufen.tick( z );
  132. }
  133. alpha += ( z * 100 );
  134. if( alpha > 255 )
  135. {
  136. alpha = 255;
  137. }
  138. y += ( yS * z );
  139. yS -= ( z * 40 );
  140. if( yS < 0 )
  141. {
  142. yS = 0;
  143. }
  144. if( y > 280 )
  145. {
  146. y = 280;
  147. }
  148. return true;
  149. }
  150. func void maus( MausEreignis me )
  151. {
  152. me.setMy( me.my - y );
  153. tvKaufen.doMausEreignis( me );
  154. me.setMy( me.my + y );
  155. }
  156. func void render( Bild b )
  157. {
  158. if( ( erwerbbarStatus != 0 ) && ( erwerbbarStatus != 2 ) )
  159. {
  160. b.setAlpha( alpha );
  161. if( b.setDrawOptions( 0, y, 300, 200 ) )
  162. {
  163. tve.render( b );
  164. tvkosten.render( b );
  165. tvGoldTF.render( b );
  166. tvSilberTF.render( b );
  167. tvKupferTF.render( b );
  168. tvGoldBildO.render( b );
  169. tvSilberBildO.render( b );
  170. tvKupferBildO.render( b );
  171. tvKaufen.render( b );
  172. tvNGK.render( b );
  173. b.releaseDrawOptions();
  174. }
  175. b.releaseAlpha();
  176. }
  177. }
  178. };
  179. class VollVersion
  180. {
  181. private:
  182. var double y;
  183. var int x;
  184. var double yS;
  185. var int alpha;
  186. var TextFeld vve;
  187. var TextFeld vvkosten;
  188. var TextFeld vvGoldTF;
  189. var TextFeld vvSilberTF;
  190. var TextFeld vvKupferTF;
  191. var BildO vvGoldBildO;
  192. var BildO vvSilberBildO;
  193. var BildO vvKupferBildO;
  194. var Knopf vvKaufen;
  195. var TextFeld vvNGK;
  196. public:
  197. func void init()
  198. {
  199. yS = 150;
  200. x = 0;
  201. y = 0;
  202. alpha = 0;
  203. initTextFeld( vve, 0, 0, 100, 20, "", 0x101 );
  204. initTextFeld( vvkosten, 410, 25, 50, 20, "", 0x701 );
  205. initTextFeld( vvGoldTF, 470, 25, 0, 0, "", 0x701 );
  206. initTextFeld( vvSilberTF, 500, 25, 0, 0, "", 0x701 );
  207. initTextFeld( vvKupferTF, 530, 25, 0, 0, "", 0x701 );
  208. initTextFeld( vvNGK, 390, 75, 160, 20, "", 0x101 );
  209. if( ( besitzStatus == 0 ) && ( erwerbbarStatus != 0 ) && ( erwerbbarStatus != 1 ) )
  210. {
  211. vve.setText( "Vollversion" );
  212. vve.setGrößeNachText();
  213. vve.setPosition( 550 - vve.getBreite(), vve.getY() );
  214. vvkosten.setText( "Kosten: " );
  215. var int preis;
  216. preis = Rückruf( "GetPreis", 1 );
  217. var Text preisT = preis / 10000;
  218. vvGoldTF.setText( preisT );
  219. preisT = ( preis / 100 ) % 100;
  220. vvSilberTF.setText( preisT );
  221. preisT = preis % 100;
  222. vvKupferTF.setText( preisT );
  223. vvGoldTF.setGrößeNachText();
  224. vvSilberTF.setGrößeNachText();
  225. vvKupferTF.setGrößeNachText();
  226. vvGoldTF.setGröße( vvGoldTF.getBreite(), 20 );
  227. vvSilberTF.setGröße( vvSilberTF.getBreite(), 20 );
  228. vvKupferTF.setGröße( vvKupferTF.getBreite(), 20 );
  229. vvKupferTF.setPosition( vvKupferTF.getX() - vvKupferTF.getBreite(), vvKupferTF.getY() );
  230. vvSilberTF.setPosition( ( vvSilberTF.getX() - vvKupferTF.getBreite() ) - vvSilberTF.getBreite(), vvSilberTF.getY() );
  231. vvGoldTF.setPosition( ( ( vvGoldTF.getX() - vvKupferTF.getBreite() ) - vvSilberTF.getBreite() ) - vvGoldTF.getBreite(), vvGoldTF.getY() );
  232. vvkosten.setPosition( vvGoldTF.getX() - 55, vvkosten.getY() );
  233. initBildO( vvGoldBildO, vvGoldTF.getX() + vvGoldTF.getBreite(), 25, goldBild );
  234. initBildO( vvSilberBildO, vvSilberTF.getX() + vvSilberTF.getBreite(), 25, silberBild );
  235. initBildO( vvKupferBildO, vvKupferTF.getX() + vvKupferTF.getBreite(), 25, kupferBild );
  236. initKnopf( vvKaufen, 450, 50, 100, 20, "Erwerben" );
  237. vvKaufen.setMausEreignis( "vvKME" );
  238. if( preis > Rückruf( "GetKupfer" ) )
  239. {
  240. vvKaufen.löscheStyle( 0x2 );
  241. vvNGK.setText( "Du hast nicht genug Geld." );
  242. }
  243. }
  244. }
  245. func bool tick( double z )
  246. {
  247. if( ( alpha == 255 ) && ( y >= 280 ) )
  248. {
  249. return vvKaufen.tick( z );
  250. }
  251. alpha += ( z * 100 );
  252. if( alpha > 255 )
  253. {
  254. alpha = 255;
  255. }
  256. y += ( yS * z );
  257. yS -= ( z * 40 );
  258. if( yS < 0 )
  259. {
  260. yS = 0;
  261. }
  262. if( y > 280 )
  263. {
  264. y = 280;
  265. }
  266. return true;
  267. }
  268. func void maus( MausEreignis me )
  269. {
  270. me.setMy( me.my - y );
  271. vvKaufen.doMausEreignis( me );
  272. me.setMy( me.my + y );
  273. }
  274. func void render( Bild b )
  275. {
  276. if( ( erwerbbarStatus != 0 ) && ( erwerbbarStatus != 1 ) )
  277. {
  278. b.setAlpha( alpha );
  279. if( b.setDrawOptions( 0, y, 700, 200 ) )
  280. {
  281. vve.render( b );
  282. vvkosten.render( b );
  283. vvGoldTF.render( b );
  284. vvSilberTF.render( b );
  285. vvKupferTF.render( b );
  286. vvGoldBildO.render( b );
  287. vvSilberBildO.render( b );
  288. vvKupferBildO.render( b );
  289. vvKaufen.render( b );
  290. vvNGK.render( b );
  291. b.releaseDrawOptions();
  292. }
  293. b.releaseAlpha();
  294. }
  295. }
  296. };
  297. var TextErscheinen beschreibung;
  298. var TestVersion tv;
  299. var VollVersion vv;
  300. func void start()
  301. {
  302. besitzStatus = Rückruf( "GetBesitzStatus" );
  303. erwerbbarStatus = Rückruf( "GetErwerbbarStatus" );
  304. goldBild = Rückruf( "GetBild", "data/bilder/system.ltdb", "system.ltdb/gold.jpg" );
  305. silberBild = Rückruf( "GetBild", "data/bilder/system.ltdb", "system.ltdb/silber.jpg" );
  306. kupferBild = Rückruf( "GetBild", "data/bilder/system.ltdb", "system.ltdb/kupfer.jpg" );
  307. beschreibung.init( besitzStatus );
  308. tv.init();
  309. vv.init();
  310. }
  311. func void initTextFeld( TextFeld tf, int x, int y, int br, int hö, Text t, int style )
  312. {
  313. tf.setPosition( x, y );
  314. tf.setGröße( br, hö );
  315. tf.setStyle( style );
  316. tf.setSchriftFarbe( 0xFFFFFFFF );
  317. tf.setText( t );
  318. }
  319. func void initBildO( BildO bo, int x, int y, Bild b )
  320. {
  321. bo.setPosition( x, y );
  322. bo.setGröße( b.getBreite(), b.getHöhe() );
  323. bo.setStyle( 0x1 );
  324. bo.setBild( b );
  325. }
  326. func void initKnopf( Knopf k, int x, int y, int br, int hö, Text t )
  327. {
  328. k.setPosition( x, y );
  329. k.setGröße( br, hö );
  330. k.setText( t );
  331. k.addStyle( 0x1 );
  332. }
  333. func bool maus( MausEreignis me )
  334. {
  335. tv.maus( me );
  336. vv.maus( me );
  337. return me.verarbeitet;
  338. }
  339. func bool tick( double z )
  340. {
  341. var bool ret;
  342. ret = beschreibung.next( z );
  343. ret |= tv.tick( z );
  344. ret |= vv.tick( z );
  345. return ret;
  346. }
  347. func void render( Bild rObj )
  348. {
  349. beschreibung.render( rObj );
  350. tv.render( rObj );
  351. vv.render( rObj );
  352. }
  353. func bool tvKME( MausEreignis me )
  354. {
  355. if( me.id == 3 )
  356. {
  357. Rückruf( "Kaufen", 0 );
  358. }
  359. return true;
  360. }
  361. func bool vvKME( MausEreignis me )
  362. {
  363. if( me.id == 3 )
  364. {
  365. Rückruf( "Kaufen", 1 );
  366. }
  367. return true;
  368. }