#include var int besitzStatus; var int erwerbbarStatus; var Bild goldBild; var Bild silberBild; var Bild kupferBild; class TextErscheinen { private: var TextFeld beschreibung; var Text txt; var int num; var int län; var double z; public: func void init( int besitzStatus ) { initTextFeld( beschreibung, 5, 5, 545, 180, "", 0x101 ); txt = "Dies ist eine Karte für das Spiel Linie\n"; txt += "Maximale Spieleranzahl: 10\n"; txt += "Teamanzahl: 10\n"; txt += "Maximale Spieler pro Team: 1\n"; txt += "Spieltyp: Alle gegen Alle\n"; if( besitzStatus == 1 ) { txt += "Du besitzt die Testversion dieser Karte.\n"; txt += "Anzahl verbleibender Spiele: "; txt += Rückruf( "GetTestVersionVerbleibend" ); } if( besitzStatus == 2 ) { txt += "Du besitzt die Vollversion dieser Karte."; } län = txt.getLänge(); num = 0; z = 0; } func bool next( double zeit ) { z += zeit; if( ( z > 0.03 ) && ( num < län ) ) { var Text t; t = beschreibung.getText(); while( z > 0.03 ) { z -= 0.03; t.anhängen( txt.getTeilText( num, num + 1 ) ); num += 1; if( num < län ) { break; } } beschreibung.setText( t ); return true; } return false; } func void render( Bild b ) { beschreibung.render( b ); } }; class TestVersion { private: var double y; var int x; var double yS; var int alpha; var TextFeld tve; var TextFeld tvkosten; var TextFeld tvGoldTF; var TextFeld tvSilberTF; var TextFeld tvKupferTF; var BildO tvGoldBildO; var BildO tvSilberBildO; var BildO tvKupferBildO; var Knopf tvKaufen; var TextFeld tvNGK; public: func void init() { yS = 150; x = 0; y = 0; alpha = 0; initTextFeld( tve, 5, 0, 300, 20, "", 0x101 ); initTextFeld( tvkosten, 5, 25, 50, 20, "", 0x701 ); initTextFeld( tvGoldTF, 60, 25, 0, 0, "", 0x701 ); initTextFeld( tvSilberTF, 90, 25, 0, 0, "", 0x701 ); initTextFeld( tvKupferTF, 120, 25, 0, 0, "", 0x701 ); initTextFeld( tvNGK, 5, 75, 200, 20, "", 0x101 ); if( ( besitzStatus == 0 ) && ( erwerbbarStatus != 0 ) && ( erwerbbarStatus != 2 ) ) { tve.setText( "10 Spiele Testversion" ); tvkosten.setText( "Kosten: " ); var int preis; preis = Rückruf( "GetPreis", 0 ); var Text preisT = preis / 10000; tvGoldTF.setText( preisT ); preisT = ( preis / 100 ) % 100; tvSilberTF.setText( preisT ); preisT = preis % 100; tvKupferTF.setText( preisT ); tvGoldTF.setGrößeNachText(); tvSilberTF.setGrößeNachText(); tvKupferTF.setGrößeNachText(); tvGoldTF.setGröße( tvGoldTF.getBreite(), 20 ); tvSilberTF.setGröße( tvSilberTF.getBreite(), 20 ); tvKupferTF.setGröße( tvKupferTF.getBreite(), 20 ); tvSilberTF.setPosition( tvSilberTF.getX() + tvGoldTF.getBreite(), tvSilberTF.getY() ); tvKupferTF.setPosition( tvKupferTF.getX() + tvGoldTF.getBreite() + tvSilberTF.getBreite(), tvSilberTF.getY() ); initBildO( tvGoldBildO, 60 + tvGoldTF.getBreite(), 25, goldBild ); initBildO( tvSilberBildO, 90 + tvGoldTF.getBreite() + tvSilberTF.getBreite(), 25, silberBild ); initBildO( tvKupferBildO, 120 + tvGoldTF.getBreite() + tvSilberTF.getBreite() + tvKupferTF.getBreite(), 25, kupferBild ); initKnopf( tvKaufen, 5, 50, 100, 20, "Erwerben" ); tvKaufen.setMausEreignis( "tvKME" ); if( preis > Rückruf( "GetKupfer" ) ) { tvKaufen.löscheStyle( 0x2 ); tvNGK.setText( "Du hast nicht genug Geld." ); } } } func bool tick( double z ) { if( ( alpha == 255 ) && ( y >= 280 ) ) { return tvKaufen.tick( z ); } alpha += ( z * 100 ); if( alpha > 255 ) { alpha = 255; } y += ( yS * z ); yS -= ( z * 40 ); if( yS < 0 ) { yS = 0; } if( y > 280 ) { y = 280; } return true; } func void maus( MausEreignis me ) { me.setMy( me.my - y ); tvKaufen.doMausEreignis( me ); me.setMy( me.my + y ); } func void render( Bild b ) { if( ( erwerbbarStatus != 0 ) && ( erwerbbarStatus != 2 ) ) { b.setAlpha( alpha ); if( b.setDrawOptions( 0, y, 300, 200 ) ) { tve.render( b ); tvkosten.render( b ); tvGoldTF.render( b ); tvSilberTF.render( b ); tvKupferTF.render( b ); tvGoldBildO.render( b ); tvSilberBildO.render( b ); tvKupferBildO.render( b ); tvKaufen.render( b ); tvNGK.render( b ); b.releaseDrawOptions(); } b.releaseAlpha(); } } }; class VollVersion { private: var double y; var int x; var double yS; var int alpha; var TextFeld vve; var TextFeld vvkosten; var TextFeld vvGoldTF; var TextFeld vvSilberTF; var TextFeld vvKupferTF; var BildO vvGoldBildO; var BildO vvSilberBildO; var BildO vvKupferBildO; var Knopf vvKaufen; var TextFeld vvNGK; public: func void init() { yS = 150; x = 0; y = 0; alpha = 0; initTextFeld( vve, 0, 0, 100, 20, "", 0x101 ); initTextFeld( vvkosten, 410, 25, 50, 20, "", 0x701 ); initTextFeld( vvGoldTF, 470, 25, 0, 0, "", 0x701 ); initTextFeld( vvSilberTF, 500, 25, 0, 0, "", 0x701 ); initTextFeld( vvKupferTF, 530, 25, 0, 0, "", 0x701 ); initTextFeld( vvNGK, 390, 75, 160, 20, "", 0x101 ); if( ( besitzStatus == 0 ) && ( erwerbbarStatus != 0 ) && ( erwerbbarStatus != 1 ) ) { vve.setText( "Vollversion" ); vve.setGrößeNachText(); vve.setPosition( 550 - vve.getBreite(), vve.getY() ); vvkosten.setText( "Kosten: " ); var int preis; preis = Rückruf( "GetPreis", 1 ); var Text preisT = preis / 10000; vvGoldTF.setText( preisT ); preisT = ( preis / 100 ) % 100; vvSilberTF.setText( preisT ); preisT = preis % 100; vvKupferTF.setText( preisT ); vvGoldTF.setGrößeNachText(); vvSilberTF.setGrößeNachText(); vvKupferTF.setGrößeNachText(); vvGoldTF.setGröße( vvGoldTF.getBreite(), 20 ); vvSilberTF.setGröße( vvSilberTF.getBreite(), 20 ); vvKupferTF.setGröße( vvKupferTF.getBreite(), 20 ); vvKupferTF.setPosition( vvKupferTF.getX() - vvKupferTF.getBreite(), vvKupferTF.getY() ); vvSilberTF.setPosition( ( vvSilberTF.getX() - vvKupferTF.getBreite() ) - vvSilberTF.getBreite(), vvSilberTF.getY() ); vvGoldTF.setPosition( ( ( vvGoldTF.getX() - vvKupferTF.getBreite() ) - vvSilberTF.getBreite() ) - vvGoldTF.getBreite(), vvGoldTF.getY() ); vvkosten.setPosition( vvGoldTF.getX() - 55, vvkosten.getY() ); initBildO( vvGoldBildO, vvGoldTF.getX() + vvGoldTF.getBreite(), 25, goldBild ); initBildO( vvSilberBildO, vvSilberTF.getX() + vvSilberTF.getBreite(), 25, silberBild ); initBildO( vvKupferBildO, vvKupferTF.getX() + vvKupferTF.getBreite(), 25, kupferBild ); initKnopf( vvKaufen, 450, 50, 100, 20, "Erwerben" ); vvKaufen.setMausEreignis( "vvKME" ); if( preis > Rückruf( "GetKupfer" ) ) { vvKaufen.löscheStyle( 0x2 ); vvNGK.setText( "Du hast nicht genug Geld." ); } } } func bool tick( double z ) { if( ( alpha == 255 ) && ( y >= 280 ) ) { return vvKaufen.tick( z ); } alpha += ( z * 100 ); if( alpha > 255 ) { alpha = 255; } y += ( yS * z ); yS -= ( z * 40 ); if( yS < 0 ) { yS = 0; } if( y > 280 ) { y = 280; } return true; } func void maus( MausEreignis me ) { me.setMy( me.my - y ); vvKaufen.doMausEreignis( me ); me.setMy( me.my + y ); } func void render( Bild b ) { if( ( erwerbbarStatus != 0 ) && ( erwerbbarStatus != 1 ) ) { b.setAlpha( alpha ); if( b.setDrawOptions( 0, y, 700, 200 ) ) { vve.render( b ); vvkosten.render( b ); vvGoldTF.render( b ); vvSilberTF.render( b ); vvKupferTF.render( b ); vvGoldBildO.render( b ); vvSilberBildO.render( b ); vvKupferBildO.render( b ); vvKaufen.render( b ); vvNGK.render( b ); b.releaseDrawOptions(); } b.releaseAlpha(); } } }; var TextErscheinen beschreibung; var TestVersion tv; var VollVersion vv; func void start() { besitzStatus = Rückruf( "GetBesitzStatus" ); erwerbbarStatus = Rückruf( "GetErwerbbarStatus" ); goldBild = Rückruf( "GetBild", "data/bilder/system.ltdb", "system.ltdb/gold.jpg" ); silberBild = Rückruf( "GetBild", "data/bilder/system.ltdb", "system.ltdb/silber.jpg" ); kupferBild = Rückruf( "GetBild", "data/bilder/system.ltdb", "system.ltdb/kupfer.jpg" ); beschreibung.init( besitzStatus ); tv.init(); vv.init(); } func void initTextFeld( TextFeld tf, int x, int y, int br, int hö, Text t, int style ) { tf.setPosition( x, y ); tf.setGröße( br, hö ); tf.setStyle( style ); tf.setSchriftFarbe( 0xFFFFFFFF ); tf.setText( t ); } func void initBildO( BildO bo, int x, int y, Bild b ) { bo.setPosition( x, y ); bo.setGröße( b.getBreite(), b.getHöhe() ); bo.setStyle( 0x1 ); bo.setBild( b ); } func void initKnopf( Knopf k, int x, int y, int br, int hö, Text t ) { k.setPosition( x, y ); k.setGröße( br, hö ); k.setText( t ); k.addStyle( 0x1 ); } func bool maus( MausEreignis me ) { tv.maus( me ); vv.maus( me ); return me.verarbeitet; } func bool tick( double z ) { var bool ret; ret = beschreibung.next( z ); ret |= tv.tick( z ); ret |= vv.tick( z ); return ret; } func void render( Bild rObj ) { beschreibung.render( rObj ); tv.render( rObj ); vv.render( rObj ); } func bool tvKME( MausEreignis me ) { if( me.id == 3 ) { Rückruf( "Kaufen", 0 ); } return true; } func bool vvKME( MausEreignis me ) { if( me.id == 3 ) { Rückruf( "Kaufen", 1 ); } return true; }