seite.ksgs 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376
  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( int xOff, int yOff, Bild b )
  63. {
  64. beschreibung.render( xOff, yOff, 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 false;
  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.my += y;
  155. tvKaufen.doMausEreignis( me );
  156. me.my -= y;
  157. }
  158. func void render( int xOff, int yOff, Bild b )
  159. {
  160. if( ( erwerbbarStatus != 0 ) && ( erwerbbarStatus != 2 ) )
  161. {
  162. b.setAlpha( alpha );
  163. var int yp = yOff + y;
  164. tve.render( xOff, yp, b );
  165. tvkosten.render( xOff, yp, b );
  166. tvGoldTF.render( xOff, yp, b );
  167. tvSilberTF.render( xOff, yp, b );
  168. tvKupferTF.render( xOff, yp, b );
  169. tvGoldBildO.render( xOff, yp, b );
  170. tvSilberBildO.render( xOff, yp, b );
  171. tvKupferBildO.render( xOff, yp, b );
  172. tvKaufen.render( xOff, yp, b );
  173. tvNGK.render( xOff, yp, b );
  174. b.releaseAlpha();
  175. }
  176. }
  177. };
  178. class VollVersion
  179. {
  180. private:
  181. var double y;
  182. var int x;
  183. var double yS;
  184. var int alpha;
  185. var TextFeld vve;
  186. var TextFeld vvkosten;
  187. var TextFeld vvGoldTF;
  188. var TextFeld vvSilberTF;
  189. var TextFeld vvKupferTF;
  190. var BildO vvGoldBildO;
  191. var BildO vvSilberBildO;
  192. var BildO vvKupferBildO;
  193. var Knopf vvKaufen;
  194. var TextFeld vvNGK;
  195. public:
  196. func void init()
  197. {
  198. yS = 150;
  199. x = 0;
  200. y = 0;
  201. alpha = 0;
  202. initTextFeld( vve, 0, 0, 100, 20, "", 0x101 );
  203. initTextFeld( vvkosten, 410, 25, 50, 20, "", 0x701 );
  204. initTextFeld( vvGoldTF, 470, 25, 0, 0, "", 0x701 );
  205. initTextFeld( vvSilberTF, 500, 25, 0, 0, "", 0x701 );
  206. initTextFeld( vvKupferTF, 530, 25, 0, 0, "", 0x701 );
  207. initTextFeld( vvNGK, 390, 75, 160, 20, "", 0x101 );
  208. if( ( besitzStatus == 0 ) && ( erwerbbarStatus != 0 ) && ( erwerbbarStatus != 1 ) )
  209. {
  210. vve.setText( "Vollversion" );
  211. vve.setGrößeNachText();
  212. vve.setPosition( 550 - vve.getBreite(), vve.getY() );
  213. vvkosten.setText( "Kosten: " );
  214. var int preis;
  215. preis = Rückruf( "GetPreis", 1 );
  216. var Text preisT = preis / 10000;
  217. vvGoldTF.setText( preisT );
  218. preisT = ( preis / 100 ) % 100;
  219. vvSilberTF.setText( preisT );
  220. preisT = preis % 100;
  221. vvKupferTF.setText( preisT );
  222. vvGoldTF.setGrößeNachText();
  223. vvSilberTF.setGrößeNachText();
  224. vvKupferTF.setGrößeNachText();
  225. vvGoldTF.setGröße( vvGoldTF.getBreite(), 20 );
  226. vvSilberTF.setGröße( vvSilberTF.getBreite(), 20 );
  227. vvKupferTF.setGröße( vvKupferTF.getBreite(), 20 );
  228. vvKupferTF.setPosition( vvKupferTF.getX() - vvKupferTF.getBreite(), vvKupferTF.getY() );
  229. vvSilberTF.setPosition( ( vvSilberTF.getX() - vvKupferTF.getBreite() ) - vvSilberTF.getBreite(), vvSilberTF.getY() );
  230. vvGoldTF.setPosition( ( ( vvGoldTF.getX() - vvKupferTF.getBreite() ) - vvSilberTF.getBreite() ) - vvGoldTF.getBreite(), vvGoldTF.getY() );
  231. vvkosten.setPosition( vvGoldTF.getX() - 55, vvkosten.getY() );
  232. initBildO( vvGoldBildO, vvGoldTF.getX() + vvGoldTF.getBreite(), 25, goldBild );
  233. initBildO( vvSilberBildO, vvSilberTF.getX() + vvSilberTF.getBreite(), 25, silberBild );
  234. initBildO( vvKupferBildO, vvKupferTF.getX() + vvKupferTF.getBreite(), 25, kupferBild );
  235. initKnopf( vvKaufen, 450, 50, 100, 20, "Erwerben" );
  236. vvKaufen.setMausEreignis( "vvKME" );
  237. if( preis > Rückruf( "GetKupfer" ) )
  238. {
  239. vvKaufen.löscheStyle( 0x2 );
  240. vvNGK.setText( "Du hast nicht genug Geld." );
  241. }
  242. }
  243. }
  244. func bool tick( double z )
  245. {
  246. if( ( alpha == 255 ) && ( y >= 280 ) )
  247. {
  248. return false;
  249. }
  250. alpha += ( z * 100 );
  251. if( alpha > 255 )
  252. {
  253. alpha = 255;
  254. }
  255. y += ( yS * z );
  256. yS -= ( z * 40 );
  257. if( yS < 0 )
  258. {
  259. yS = 0;
  260. }
  261. if( y > 280 )
  262. {
  263. y = 280;
  264. }
  265. return true;
  266. }
  267. func void maus( MausEreignis me )
  268. {
  269. vvKaufen.doMausEreignis( me );
  270. }
  271. func void render( int xOff, int yOff, Bild b )
  272. {
  273. if( ( erwerbbarStatus != 0 ) && ( erwerbbarStatus != 2 ) )
  274. {
  275. b.setAlpha( alpha );
  276. var int yp = yOff + y;
  277. vve.render( xOff, yp, b );
  278. vvkosten.render( xOff, yp, b );
  279. vvGoldTF.render( xOff, yp, b );
  280. vvSilberTF.render( xOff, yp, b );
  281. vvKupferTF.render( xOff, yp, b );
  282. vvGoldBildO.render( xOff, yp, b );
  283. vvSilberBildO.render( xOff, yp, b );
  284. vvKupferBildO.render( xOff, yp, b );
  285. vvKaufen.render( xOff, yp, b );
  286. vvNGK.render( xOff, yp, b );
  287. b.releaseAlpha();
  288. }
  289. }
  290. };
  291. var TextErscheinen beschreibung;
  292. var TestVersion tv;
  293. var VollVersion vv;
  294. func void start()
  295. {
  296. besitzStatus = Rückruf( "GetBesitzStatus" );
  297. erwerbbarStatus = Rückruf( "GetErwerbbarStatus" );
  298. goldBild = Rückruf( "GetBild", "data/bilder/system.ltdb", "system.ltdb/gold.jpg" );
  299. silberBild = Rückruf( "GetBild", "data/bilder/system.ltdb", "system.ltdb/silber.jpg" );
  300. kupferBild = Rückruf( "GetBild", "data/bilder/system.ltdb", "system.ltdb/kupfer.jpg" );
  301. beschreibung.init( besitzStatus );
  302. tv.init();
  303. vv.init();
  304. }
  305. func void initTextFeld( TextFeld tf, int x, int y, int br, int hö, Text t, int style )
  306. {
  307. tf.setPosition( x, y );
  308. tf.setGröße( br, hö );
  309. tf.setStyle( style );
  310. tf.setSchriftFarbe( 0xFFFFFFFF );
  311. tf.setText( t );
  312. }
  313. func void initBildO( BildO bo, int x, int y, Bild b )
  314. {
  315. bo.setPosition( x, y );
  316. bo.setGröße( b.getBreite(), b.getHöhe() );
  317. bo.setStyle( 0x1 );
  318. bo.setBild( b );
  319. }
  320. func void initKnopf( Knopf k, int x, int y, int br, int hö, Text t )
  321. {
  322. k.setPosition( x, y );
  323. k.setGröße( br, hö );
  324. k.setText( t );
  325. k.addStyle( 0x1 );
  326. }
  327. func bool maus( MausEreignis me )
  328. {
  329. tv.maus( me );
  330. vv.maus( me );
  331. return me.verarbeitet;
  332. }
  333. func bool tick( double z )
  334. {
  335. var bool ret;
  336. ret = beschreibung.next( z );
  337. ret |= tv.tick( z );
  338. ret |= vv.tick( z );
  339. return ret;
  340. }
  341. func void render( int xOff, int yOff, Bild rObj )
  342. {
  343. beschreibung.render( xOff, yOff, rObj );
  344. tv.render( xOff, yOff, rObj );
  345. vv.render( xOff, yOff, rObj );
  346. }
  347. func bool tvKME( MausEreignis me )
  348. {
  349. if( me.id == 3 )
  350. {
  351. Rückruf( "Kaufen", 0 );
  352. }
  353. return true;
  354. }
  355. func bool vvKME( MausEreignis me )
  356. {
  357. if( me.id == 3 )
  358. {
  359. Rückruf( "Kaufen", 1 );
  360. }
  361. return true;
  362. }