Browse Source

Ein paar Fehler behoben, bestätigen des end Dialoges mit Enter Taste möglich, Anzeige der zu vergebenen Skill Punkte hinzugefügt

Kolja Strohm 7 years ago
parent
commit
b275972c76

+ 2 - 2
Asteroids/Asteroids.vcxproj

@@ -198,7 +198,7 @@
     <ClInclude Include="Spiel\Karte\Strukturen.h" />
     <ClInclude Include="Spiel\Objekt\SpielObjekt.h" />
     <ClInclude Include="Spiel\Schuss\Laser.h" />
-    <ClInclude Include="Spiel\Ship\Ship.h" />
+    <ClInclude Include="Spiel\SpielerGUI\SpielerGUI.h" />
     <ClInclude Include="Spiel\Spieler\Spieler.h" />
     <ClInclude Include="Spiel\SpielKlasse.h" />
     <ClInclude Include="Spiel\Team\Team.h" />
@@ -228,7 +228,7 @@
     <ClCompile Include="Spiel\Karte\Strukturen.cpp" />
     <ClCompile Include="Spiel\Objekt\SpielObjekt.cpp" />
     <ClCompile Include="Spiel\Schuss\Laser.cpp" />
-    <ClCompile Include="Spiel\Ship\Ship.cpp" />
+    <ClCompile Include="Spiel\SpielerGUI\SpielerGUI.cpp" />
     <ClCompile Include="Spiel\Spieler\Spieler.cpp" />
     <ClCompile Include="Spiel\SpielKlasse.cpp" />
     <ClCompile Include="Spiel\Team\Team.cpp" />

+ 6 - 6
Asteroids/Asteroids.vcxproj.filters

@@ -60,9 +60,6 @@
     <ClInclude Include="Spiel\Chat\Chat.h">
       <Filter>Headerdateien</Filter>
     </ClInclude>
-    <ClInclude Include="Spiel\Ship\Ship.h">
-      <Filter>Headerdateien</Filter>
-    </ClInclude>
     <ClInclude Include="Spiel\Ende\Ende.h">
       <Filter>Headerdateien</Filter>
     </ClInclude>
@@ -114,6 +111,9 @@
     <ClInclude Include="Editor\Karte\EditorKarte.h">
       <Filter>Headerdateien</Filter>
     </ClInclude>
+    <ClInclude Include="Spiel\SpielerGUI\SpielerGUI.h">
+      <Filter>Headerdateien</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="Initialisierung\Initialisierung.cpp">
@@ -155,9 +155,6 @@
     <ClCompile Include="Spiel\Chat\Chat.cpp">
       <Filter>Quelldateien</Filter>
     </ClCompile>
-    <ClCompile Include="Spiel\Ship\Ship.cpp">
-      <Filter>Quelldateien</Filter>
-    </ClCompile>
     <ClCompile Include="Spiel\Spieler\Spieler.cpp">
       <Filter>Quelldateien</Filter>
     </ClCompile>
@@ -206,5 +203,8 @@
     <ClCompile Include="Editor\Karte\EditorKarte.cpp">
       <Filter>Quelldateien</Filter>
     </ClCompile>
+    <ClCompile Include="Spiel\SpielerGUI\SpielerGUI.cpp">
+      <Filter>Quelldateien</Filter>
+    </ClCompile>
   </ItemGroup>
 </Project>

+ 10 - 0
Asteroids/Spiel/Ende/Ende.cpp

@@ -63,6 +63,16 @@ void Ende::setGewonnen( char gewonnen )
 	}
 }
 
+void Ende::doTastaturEreignis( TastaturEreignis &te )
+{
+    if( te.taste == T_Enter && te.id == TE_Release )
+    {
+        ok->removeStyle( Knopf::Style::Sichtbar );
+        warten->addStyle( TextFeld::Style::Sichtbar );
+        weiter = 1;
+    }
+}
+
 void Ende::doMausEreignis( MausEreignis &me )
 {
 	bool vera = me.verarbeitet;

+ 1 - 0
Asteroids/Spiel/Ende/Ende.h

@@ -22,6 +22,7 @@ public:
 	~Ende();
 	// nicht constant
 	void setGewonnen( char gewonnen );
+    void doTastaturEreignis( TastaturEreignis &te );
 	void doMausEreignis( MausEreignis &me );
 	void render( Bild &zRObj );
 	// constant

+ 2 - 2
Asteroids/Spiel/Karte/Strukturen.cpp

@@ -16,7 +16,7 @@ RessourceStr::RessourceStr( Datei *zDatei, int karteId, Text *zGamePath )
 	pfad = 0;
 	if( txt.positionVon( "spiel:" ) == 0 )
 	{
-		pfad->setText( zGamePath->getText() );
+		pfad = new Text( zGamePath->getText() );
 		if( pfad )
 			pfad->append( txt.getTeilText( 6 ) );
 	}
@@ -37,7 +37,7 @@ RessourceStr::RessourceStr( Datei *zDatei, int karteId, Text *zGamePath )
 		m2d = datei->ladeModel( pfad->getTeilText( pos + 4 ) );
 		datei->release();
 	}
-	if( pfad->hat( ".ltdb/" ) )
+	if( pfad && pfad->hat( ".ltdb/" ) )
 	{
 		int pos = pfad->positionVon( ".ltdb/", pfad->anzahlVon( ".ltdb/" ) - 1 );
 		LTDBDatei *datei = new LTDBDatei();

+ 2 - 2
Asteroids/Spiel/Schuss/Laser.cpp

@@ -73,7 +73,7 @@ void Laser::render( Bild &zRObj )
 			break;
 		else
 		{
-			int x, y;
+			int x = 0, y = 0;
 			char outCodeOut = outCode1 ? outCode1 : outCode2;
 			if( outCodeOut & 8 )
 			{
@@ -166,7 +166,7 @@ int Laser::getSpieler() const
 
 double Laser::getIntensität() const
 {
-	return intensität;
+	return intensität + speed.getLength() / 10;
 }
 
 // Reference Counting

+ 11 - 6
Asteroids/Spiel/SpielKlasse.cpp

@@ -5,7 +5,7 @@
 #include <TastaturEreignis.h>
 #include <M2Datei.h>
 #include <DateiSystem.h>
-#include "Ship/Ship.h"
+#include "SpielerGUI/SpielerGUI.h"
 #include "Define.h"
 #include <Animation.h>
 
@@ -119,7 +119,7 @@ void SpielKlasse::setSchrift( Schrift *schrift )
 	if( !bestenliste )
 		bestenliste = new Bestenliste( schrift->getThis() );
 	if( !ship )
-		ship = new Ship( schrift );
+		ship = new SpielerGUI( schrift );
 }
 
 void SpielKlasse::setBildschirm( Bildschirm *screen )
@@ -163,11 +163,13 @@ void SpielKlasse::ladeDaten()
     flammenStartLTDB.leseDaten( 0 );
     Animation2DData *flammenStart = new Animation2DData();
     flammenStart->ladeAnimation( flammenStartLTDB.getThis() );
-    flammenStart->setFPS( 60 );
+    flammenStart->setFPS( 75 );
     flammenStart->setWiederhohlend( 0 );
     spielKlient->setLadenProzent( 7 );
     LTDBDatei flammenLTDB;
-    flammenLTDB.setDatei( new Text( "data/Minigames/Asteroids/bilder/f_burn.ltdb" ) );
+    Text *f_burn = new Text( gamePath->getText() );
+    f_burn->append( "/bilder/f_burn.ltdb" );
+    flammenLTDB.setDatei( f_burn );
     Animation2DData *flammenBurn = new Animation2DData();
     flammenBurn->ladeAnimation( flammenLTDB.getThis() );
     flammenBurn->setFPS( 60 );
@@ -251,8 +253,11 @@ void SpielKlasse::doMausEreignis( MausEreignis &me )
 void SpielKlasse::doTastaturEreignis( TastaturEreignis &te )
 {
 	bestenliste->doTastaturEreignis( te );
-	if( end )
-		return;
+    if( end )
+    {
+        end->doTastaturEreignis( te );
+        return;
+    }
 	if( !chat->istAktiv() )
 	{
 		if( istAmLeben() )

+ 1 - 1
Asteroids/Spiel/SpielKlasse.h

@@ -32,7 +32,7 @@ private:
 	RCArray< Laser > *schüsse;
 	Model2DData *shipData;
 	Bild *shipTextur;
-	Ship *ship;
+	SpielerGUI *ship;
 	bool rendern;
 	int spielZeit;
 	double rZeit;

+ 6 - 4
Asteroids/Spiel/Spieler/Spieler.cpp

@@ -12,7 +12,7 @@ Spieler::Spieler( InformationKlientV *zInfoK, Schrift *zSchrift, SpielerStr *zSt
 	sNum = zStr->id;
 	farbe = 0;
 	ship = new Model2D();
-	ship->setStyle( Model2D::Style::Sichtbar | Model2D::Style::Textur );
+	ship->setStyle( Model2D::Style::Sichtbar | Model2D::Style::Textur | Model2D::Style::Alpha );
 	team = 0;
 	info = zInfoK->getThis();
 	name = 0;
@@ -177,11 +177,13 @@ void Spieler::setTastataturStatus( TastaturStatus ts, bool aktiv, int sZ, Karte
                 flammenR->setAnimation( 0 );
             else
                 flammenR->setAnimation( -1 );
+            break;
         case T_ROT_R:
             if( aktiv )
                 flammenL->setAnimation( 0 );
             else
                 flammenL->setAnimation( -1 );
+            break;
         }
     }
 }
@@ -257,9 +259,9 @@ void Spieler::renderLeben( Bild &zRObj )
 	zRObj.drawLinieH( nText->getX() + 1, nText->getY() + 2, l, 0xFF00FF00 );
 	zRObj.drawLinieH( nText->getX() + 1, nText->getY() + 3, l, 0xFF00FF00 );
 	int e = (int)( energie * 100 / ( maxEnergie + team->maxEnergie ) * 1.5 + 0.5 );
-	zRObj.drawLinieH( nText->getX() + 1, nText->getY() + 26, e, 0xFFFFFF00 );
-	zRObj.drawLinieH( nText->getX() + 1, nText->getY() + 27, e, 0xFFFFFF00 );
-	zRObj.drawLinieH( nText->getX() + 1, nText->getY() + 28, e, 0xFFFFFF00 );
+	zRObj.drawLinieH( nText->getX() + 1, nText->getY() + 26, e, 0xFF0000FF );
+	zRObj.drawLinieH( nText->getX() + 1, nText->getY() + 27, e, 0xFF0000FF );
+	zRObj.drawLinieH( nText->getX() + 1, nText->getY() + 28, e, 0xFF0000FF );
     int e2 = (int)( (energie - calculateLaserCost() ) * 100 / ( maxEnergie + team->maxEnergie ) * 1.5 + 0.5 );
     if( e2 > 0 )
     {

+ 2 - 2
Asteroids/Spiel/Spieler/Spieler.h

@@ -12,7 +12,7 @@
 class Team;
 class Laser;
 class Karte;
-class Ship;
+class SpielerGUI;
 
 enum TastaturStatus
 {
@@ -25,7 +25,7 @@ enum TastaturStatus
 
 class Spieler
 {
-	friend class Ship;
+	friend class SpielerGUI;
 private:
 	int accountId;
 	int sNum;

+ 15 - 11
Asteroids/Spiel/Ship/Ship.cpp → Asteroids/Spiel/SpielerGUI/SpielerGUI.cpp

@@ -1,4 +1,4 @@
-#include "Ship.h"
+#include "SpielerGUI.h"
 #include "../../Initialisierung/Initialisierung.h"
 #include <MausEreignis.h>
 #include <Rahmen.h>
@@ -16,10 +16,10 @@ int getStellen( double d )
 
 // Inhalt der Ship Klasse aus Ship.h
 // Konstruktor
-Ship::Ship( Schrift *zSchrift )
+SpielerGUI::SpielerGUI( Schrift *zSchrift )
 {
 	ram = new LRahmen();
-	ram->setSize( 200, 282 );
+	ram->setSize( 200, 307 );
 	ram->setPosition( Punkt( BildschirmGröße().x - 210, 10 ) );
 	ram->setFarbe( 0xFFFFFFFF );
 	spieler = initTextFeld( 5, 5, 190, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "" );
@@ -73,11 +73,12 @@ Ship::Ship( Schrift *zSchrift )
 	laserEffizienzSkill->removeStyle( Knopf::Style::Erlaubt );
 	laserTempoSkill->removeStyle( Knopf::Style::Erlaubt );
 	netzwerkSkill->removeStyle( Knopf::Style::Erlaubt );
+    skillPoints = initTextFeld( 5, 280, 180, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::VCenter, "" );
 	ref = 1;
 }
 
 // Destruktor
-Ship::~Ship()
+SpielerGUI::~SpielerGUI()
 {
 	ram->release();
 	spieler->release();
@@ -103,10 +104,11 @@ Ship::~Ship()
 	laserEffizienzSkill->release();
 	laserTempoSkill->release();
 	netzwerkSkill->release();
+    skillPoints->release();
 }
 
 // nicht constant
-void Ship::update( Spieler *zSpieler )
+void SpielerGUI::update( Spieler *zSpieler )
 {
 	spieler->setText( zSpieler->name->getText() );
 	spieler->setSchriftFarbe( zSpieler->farbe );
@@ -207,9 +209,10 @@ void Ship::update( Spieler *zSpieler )
 	laserEffizienzSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
 	laserTempoSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
 	netzwerkSkill->setStyle( Knopf::Style::Erlaubt, zSpieler->hatSkill() );
+    skillPoints->setText( Text( zSpieler->skillPunkte ) += " Punkte" );
 }
 
-int Ship::doMausEreignis( MausEreignis &me )
+int SpielerGUI::doMausEreignis( MausEreignis &me )
 {
 	me.mx -= ram->getX();
 	me.my -= ram->getY();
@@ -253,7 +256,7 @@ int Ship::doMausEreignis( MausEreignis &me )
 	return -1;
 }
 
-bool Ship::tick( double tickVal )
+bool SpielerGUI::tick( double tickVal )
 {
 	bool ret = stabilitätSkill->tick( tickVal );
 	ret |= energieSkill->tick( tickVal );
@@ -268,7 +271,7 @@ bool Ship::tick( double tickVal )
 	return ret;
 }
 
-void Ship::render( Bild &zRObj )
+void SpielerGUI::render( Bild &zRObj )
 {
 	zRObj.alphaRegion( ram->getX() + 1, ram->getY() + 1, ram->getBreite() - 2, ram->getHeight() - 2, 0xA0000000 );
 	ram->render( zRObj );
@@ -297,20 +300,21 @@ void Ship::render( Bild &zRObj )
 	laserTempoSkill->render( zRObj );
 	netzwerk->render( zRObj );
 	netzwerkSkill->render( zRObj );
+    skillPoints->render( zRObj );
 	zRObj.releaseDrawOptions();
 }
 
 // Reference Counting
-Ship *Ship::getThis()
+SpielerGUI *SpielerGUI::getThis()
 {
 	ref++;
 	return this;
 }
 
-Ship *Ship::release()
+SpielerGUI *SpielerGUI::release()
 {
 	ref--;
 	if( !ref )
 		delete this;
-	return this;
+	return 0;
 }

+ 6 - 5
Asteroids/Spiel/Ship/Ship.h → Asteroids/Spiel/SpielerGUI/SpielerGUI.h

@@ -7,7 +7,7 @@
 
 using namespace Framework;
 
-class Ship
+class SpielerGUI
 {
 private:
 	LRahmen *ram;
@@ -34,21 +34,22 @@ private:
 	Knopf *laserEffizienzSkill;
 	Knopf *laserTempoSkill;
 	Knopf *netzwerkSkill;
+    TextFeld *skillPoints;
 	int ref;
 
 public:
 	// Konstruktor
-	Ship( Schrift *zSchrift );
+	SpielerGUI( Schrift *zSchrift );
 	// Destruktor
-	~Ship();
+	~SpielerGUI();
 	// nicht constant
 	void update( Spieler *zSpieler );
 	int doMausEreignis( MausEreignis &me );
 	bool tick( double tickVal );
 	void render( Bild &zRObj );
 	// Reference Counting
-	Ship *getThis();
-	Ship *release();
+	SpielerGUI *getThis();
+	SpielerGUI *release();
 };
 
 #endif