linie_shop.cpp 9.5 KB

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