Browse Source

Ein paar balancing updates

Kolja Strohm 6 years ago
parent
commit
9ea3e69796

+ 150 - 130
Asteroids/Spiel/Karte/Karte.cpp

@@ -5,189 +5,209 @@
 // Konstruktor
 Karte::Karte()
 {
-	größe = Vec2< int >( 0, 0 );
-	spielerAnzahl = 0;
-	teamAnzahl = 0;
-	spielerFarbe = new Array< int >();
-	teamFarbe = new Array< int >();
-	teamName = new RCArray< Text >();
-	teamGröße = new Array< int >();
-	ressources = new RCArray< RessourceStr >();
-	objekte = new RCArray< ObjektStr >();
-	spieler = new RCArray< SpielerStr >();
-	teams = new RCArray< TeamStr >();
-	ref = 1;
+    größe = Vec2< int >( 0, 0 );
+    spielerAnzahl = 0;
+    teamAnzahl = 0;
+    spielerFarbe = new Array< int >();
+    teamFarbe = new Array< int >();
+    teamName = new RCArray< Text >();
+    teamGröße = new Array< int >();
+    ressources = new RCArray< RessourceStr >();
+    objekte = new RCArray< ObjektStr >();
+    spieler = new RCArray< SpielerStr >();
+    teams = new RCArray< TeamStr >();
+    ref = 1;
 }
 
 // Destruktor
 Karte::~Karte()
 {
-	spielerFarbe->release();
-	teamFarbe->release();
-	teamName->release();
-	teamGröße->release();
-	ressources->release();
-	objekte->release();
-	spieler->release();
-	teams->release();
+    spielerFarbe->release();
+    teamFarbe->release();
+    teamName->release();
+    teamGröße->release();
+    ressources->release();
+    objekte->release();
+    spieler->release();
+    teams->release();
 }
 
 // nicht constant
 void Karte::ladeSts( Datei *zDatei )
 {
-	zDatei->lese( (char*)&spielerAnzahl, 4 );
-	zDatei->lese( (char*)&teamAnzahl, 4 );
-	spielerFarbe->leeren();
-	for( int i = 0; i < spielerAnzahl; i++ )
-	{
-		int farbe = 0;
-		zDatei->lese( (char*)&farbe, 4 );
-		spielerFarbe->set( farbe, i );
-	}
-	teamFarbe->leeren();
-	for( int i = 0; i < teamAnzahl; i++ )
-	{
-		int farbe = 0;
-		zDatei->lese( (char*)&farbe, 4 );
-		teamFarbe->set( farbe, i );
-	}
-	teamName->leeren();
-	for( int i = 0; i < teamAnzahl; i++ )
-	{
-		char län = 0;
-		zDatei->lese( &län, 1 );
-		char *txt = new char[ län + 1 ];
-		txt[ (int)län ] = 0;
-		zDatei->lese( txt, län );
-		Text *name = new Text( txt );
-		delete[] txt;
-		teamName->set( name, i );
-	}
-	teamGröße->leeren();
-	for( int i = 0; i < teamAnzahl; i++ )
-	{
-		int größe = 0;
-		zDatei->lese( (char*)&größe, 4 );
-		teamGröße->set( größe, i );
-	}
+    zDatei->lese( (char*)&spielerAnzahl, 4 );
+    zDatei->lese( (char*)&teamAnzahl, 4 );
+    spielerFarbe->leeren();
+    for( int i = 0; i < spielerAnzahl; i++ )
+    {
+        int farbe = 0;
+        zDatei->lese( (char*)&farbe, 4 );
+        spielerFarbe->set( farbe, i );
+    }
+    teamFarbe->leeren();
+    for( int i = 0; i < teamAnzahl; i++ )
+    {
+        int farbe = 0;
+        zDatei->lese( (char*)&farbe, 4 );
+        teamFarbe->set( farbe, i );
+    }
+    teamName->leeren();
+    for( int i = 0; i < teamAnzahl; i++ )
+    {
+        char län = 0;
+        zDatei->lese( &län, 1 );
+        char *txt = new char[ län + 1 ];
+        txt[ (int)län ] = 0;
+        zDatei->lese( txt, län );
+        Text *name = new Text( txt );
+        delete[] txt;
+        teamName->set( name, i );
+    }
+    teamGröße->leeren();
+    for( int i = 0; i < teamAnzahl; i++ )
+    {
+        int größe = 0;
+        zDatei->lese( (char*)&größe, 4 );
+        teamGröße->set( größe, i );
+    }
 }
 
 void Karte::ladeMap( Datei *zDatei, int mapId, KSGClient::SpielServerClient *zSpielKlient, Text *zGamePath )
 {
-	int ressourceAnz = 0;
-	zDatei->lese( (char*)&ressourceAnz, 4 );
-	for( int i = 0; i < ressourceAnz; i++ )
-	{
-		ressources->add( new RessourceStr( zDatei, mapId, zGamePath ) );
-		zSpielKlient->setLadenProzent( 15 + (int)( 65 * ( (double)( i + 1 ) / ressourceAnz ) + 0.5 ) );
-	}
-	zDatei->lese( (char*)&größe.x, 4 );
-	zDatei->lese( (char*)&größe.y, 4 );
-	int objektAnzahl = 0;
-	zDatei->lese( (char*)&objektAnzahl, 4 );
-	for( int i = 0; i < objektAnzahl; i++ )
-	{
-		objekte->add( new ObjektStr( zDatei ) );
-		zSpielKlient->setLadenProzent( 70 + (int)( 10 * ( (double)( i + 1 ) / objektAnzahl ) + 0.5 ) );
-	}
-	for( int i = 0; i < spielerAnzahl; i++ )
-	{
-		spieler->add( new SpielerStr( zDatei ) );
-		zSpielKlient->setLadenProzent( 80 + (int)( 5 * ( (double)( i + 1 ) / spielerAnzahl ) + 0.5 ) );
-	}
-	for( int i = 0; i < teamAnzahl; i++ )
-	{
-		teams->add( new TeamStr( zDatei ) );
-		zSpielKlient->setLadenProzent( 85 + (int)( 5 * ( (double)( i + 1 ) / teamAnzahl ) + 0.5 ) );
-	}
+    int ressourceAnz = 0;
+    zDatei->lese( (char*)&ressourceAnz, 4 );
+    for( int i = 0; i < ressourceAnz; i++ )
+    {
+        ressources->add( new RessourceStr( zDatei, mapId, zGamePath ) );
+        zSpielKlient->setLadenProzent( 15 + (int)( 65 * ( (double)( i + 1 ) / ressourceAnz ) + 0.5 ) );
+    }
+    zDatei->lese( (char*)&größe.x, 4 );
+    zDatei->lese( (char*)&größe.y, 4 );
+    int objektAnzahl = 0;
+    zDatei->lese( (char*)&objektAnzahl, 4 );
+    for( int i = 0; i < objektAnzahl; i++ )
+    {
+        objekte->add( new ObjektStr( zDatei ) );
+        zSpielKlient->setLadenProzent( 70 + (int)( 10 * ( (double)( i + 1 ) / objektAnzahl ) + 0.5 ) );
+    }
+    for( int i = 0; i < spielerAnzahl; i++ )
+    {
+        spieler->add( new SpielerStr( zDatei ) );
+        zSpielKlient->setLadenProzent( 80 + (int)( 5 * ( (double)( i + 1 ) / spielerAnzahl ) + 0.5 ) );
+    }
+    for( int i = 0; i < teamAnzahl; i++ )
+    {
+        teams->add( new TeamStr( zDatei ) );
+        zSpielKlient->setLadenProzent( 85 + (int)( 5 * ( (double)( i + 1 ) / teamAnzahl ) + 0.5 ) );
+    }
 }
 
 // constant
 Vec2< int > Karte::getSize() const
 {
-	return größe;
+    return größe;
 }
 
 Spieler *Karte::createSpieler( int sNum, Schrift *zSchrift, KSGClient::InformationServerClient *zInfoK, Animation2DData *zFStart, Animation2DData *zFBurn ) const
 {
-	if( sNum < 0 || sNum >= spielerAnzahl )
-		return 0;
-	Spieler *ret = new Spieler( zInfoK, zSchrift, spieler->z( sNum ) );
-	int m2d = spieler->z( sNum )->m2d;
-	int bild = spieler->z( sNum )->bild;
-	for( auto i = &ressources->getArray(); i && i->set && i->var; i = i->next )
-	{
-		if( i->var->getId() == m2d )
-			ret->setModelData( i->var->zReccourceM2()->getThis(), zFStart, zFBurn );
-		if( i->var->getId() == bild )
-			ret->setSpielerFarbe( spielerFarbe->hat( sNum ) ? spielerFarbe->get( sNum ) : 0, i->var->zReccourceTxt() );
-	}
-	return ret;
+    if( sNum < 0 || sNum >= spielerAnzahl )
+        return 0;
+    SpielerStr *player = 0;
+    for( auto s = spieler->getArray(); s.set; s++ )
+    {
+        if( s.var->id == sNum + 1 )
+            player = s.var;
+    }
+    if( !player )
+        return 0;
+    Spieler *ret = new Spieler( zInfoK, zSchrift, player );
+    for( auto i = &ressources->getArray(); i && i->set && i->var; i = i->next )
+    {
+        if( i->var->getId() == player->m2d )
+            ret->setModelData( i->var->zReccourceM2()->getThis(), zFStart, zFBurn );
+        if( i->var->getId() == player->bild )
+            ret->setSpielerFarbe( spielerFarbe->hat( sNum ) ? spielerFarbe->get( sNum ) : 0, i->var->zReccourceTxt() );
+    }
+    return ret;
 }
 
 Team *Karte::createTeam( int tNum ) const
 {
-	if( tNum < 0 || tNum >= teamAnzahl )
-		return 0;
-	Team *ret = new Team( teamFarbe->get( tNum ), teamName->z( tNum )->getText(), teams->z( tNum ) );
-	return ret;
+    if( tNum < 0 || tNum >= teamAnzahl )
+        return 0;
+    TeamStr *team = 0;
+    for( auto t = teams->getArray(); t.set; t++ )
+    {
+        if( t.var->id == tNum + 1 )
+            team = t.var;
+    }
+    if( !team )
+        return 0;
+    Team *ret = new Team( teamFarbe->get( tNum ), teamName->z( tNum )->getText(), team );
+    return ret;
 }
 
-SpielObjekt *Karte::createZeichnung( int oNum, Schrift *zSchrift ) const
+SpielObjekt *Karte::createObjekt( int oNum, Schrift *zSchrift ) const
 {
-	if( oNum < 0 || oNum > objekte->getEintragAnzahl() )
-		return 0;
-	SpielObjekt *ret = new SpielObjekt( objekte->z( oNum ), zSchrift );
-	int m2d = objekte->z( oNum )->m2d;
-	int bild = objekte->z( oNum )->bild;
-	for( auto i = &ressources->getArray(); i && i->set && i->var; i = i->next )
-	{
-		if( i->var->getId() == m2d )
-			ret->setModelData( i->var->zReccourceM2()->getThis() );
-		if( i->var->getId() == bild )
-			ret->setTextur( i->var->zReccourceTxt()->getThis() );
-	}
-	return ret;
+    if( oNum < 0 || oNum > objekte->getEintragAnzahl() )
+        return 0;
+    ObjektStr *obj = 0;
+    for( auto o = objekte->getArray(); o.set; o++ )
+    {
+        if( o.var->id == oNum + 1 )
+            obj = o.var;
+    }
+    if( !obj )
+        return 0;
+    SpielObjekt *ret = new SpielObjekt( obj, zSchrift );
+    for( auto i = &ressources->getArray(); i && i->set && i->var; i = i->next )
+    {
+        if( i->var->getId() == obj->m2d )
+            ret->setModelData( i->var->zReccourceM2()->getThis() );
+        if( i->var->getId() == obj->bild )
+            ret->setTextur( i->var->zReccourceTxt()->getThis() );
+    }
+    return ret;
 }
 
 int Karte::getMaxTeamAnzahl() const
 {
-	return teamAnzahl;
+    return teamAnzahl;
 }
 
 int Karte::getMaxSpielerAnzahl() const
 {
-	return spielerAnzahl;
+    return spielerAnzahl;
 }
 
 int Karte::getZeichnungAnzahl() const
 {
-	return objekte->getEintragAnzahl();
+    return objekte->getEintragAnzahl();
 }
 
 int Karte::getTeamNummer( int sNum ) const
 {
-	int min = teamGröße->get( 0 );
-	for( int i = 1; i <= teamAnzahl; i++ )
-	{
-		if( sNum < min )
-			return i - 1;
-		min += teamGröße->hat( i ) ? teamGröße->get( i ) : 0;
-	}
-	return -1;
+    int min = teamGröße->get( 0 );
+    for( int i = 1; i <= teamAnzahl; i++ )
+    {
+        if( sNum < min )
+            return i - 1;
+        min += teamGröße->hat( i ) ? teamGröße->get( i ) : 0;
+    }
+    return -1;
 }
 
 // Reference Counting
 Karte *Karte::getThis()
 {
-	ref++;
-	return this;
+    ref++;
+    return this;
 }
 
 Karte *Karte::release()
 {
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
+    ref--;
+    if( !ref )
+        delete this;
+    return 0;
 }

+ 1 - 1
Asteroids/Spiel/Karte/Karte.h

@@ -39,7 +39,7 @@ public:
 	Vec2< int > getSize() const;
 	Spieler *createSpieler( int sNum, Schrift *zSchrift, KSGClient::InformationServerClient *zInfoK, Animation2DData *zFStart, Animation2DData *zFBurn ) const;
 	Team *createTeam( int tNum ) const;
-	SpielObjekt *createZeichnung( int oNum, Schrift *zSchrift ) const;
+	SpielObjekt *createObjekt( int oNum, Schrift *zSchrift ) const;
 	int getMaxTeamAnzahl() const;
 	int getMaxSpielerAnzahl() const;
 	int getZeichnungAnzahl() const;

+ 1 - 1
Asteroids/Spiel/SpielKlasse.cpp

@@ -213,7 +213,7 @@ void SpielKlasse::ladeDaten()
     flammenBurn->release();
 	spielKlient->setLadenProzent( 95 );
 	for( int i = 0; i < map->getZeichnungAnzahl(); i++ )
-		objekte->set( map->createZeichnung( i, schrift ), i );
+		objekte->set( map->createObjekt( i, schrift ), i );
 	bestenliste->setTeamAnzahl( map->getMaxTeamAnzahl() );
 	spielKlient->setLadenProzent( 100 );
 }

+ 3 - 3
Asteroids/Spiel/Spieler/Spieler.cpp

@@ -449,7 +449,7 @@ void Spieler::setSkill( int art )
     switch( art )
     {
     case 0: // Max Stabilität
-        current.maxStabilität += 10;
+        current.maxStabilität += 20;
         team->maxStabilität = team->getMaxStabilitätBonus();
         break;
     case 1: // Max Energie
@@ -457,7 +457,7 @@ void Spieler::setSkill( int art )
         team->maxEnergie = team->getMaxEnergieBonus();
         break;
     case 2: // Reparatur
-        current.reparatur += 0.1;
+        current.reparatur += 0.2;
         team->reparatur = team->getReperaturBonus();
         break;
     case 3: // Laser Intensität
@@ -493,7 +493,7 @@ void Spieler::setSkill( int art )
         team->akkuLeistung = team->getAkkuLeistungBonus();
         break;
     case 9: // Akkuleistung
-        current.akkuLeistung += 0.4;
+        current.akkuLeistung += 0.2;
         team->akkuLeistung = team->getAkkuLeistungBonus();
         break;
     case 10: // Antrieb Effizienz