asteroids_shop.cpp 9.1 KB

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