소스 검색

Funktion zum exakten festlegen von Koordinaten im Model 2D Editor hinzugefügt

Kolja Strohm 6 년 전
부모
커밋
4b9defe41a

+ 1 - 1
KSGClient/KSGClient.vcxproj

@@ -115,7 +115,7 @@
     <CustomBuildStep>
       <Command>copy "..\..\..\..\Allgemein\Framework\x64\Debug\Framework.dll" "framework.dll"
 copy "..\..\..\..\Allgemein\Network\x64\Debug\Network.dll" "network.dll"
-copy "..\..\..\..\Allgemein\GSL\x64\Debug\GSL.dll" "data\bin\GSL.dll"
+copy "..\..\..\..\Allgemein\GSL\GSL\x64\Debug\GSL.dll" "data\bin\GSL.dll"
 copy "..\..\..\..\Allgemein\KSGScript\x64\Debug\KSGScript.dll" "data\bin\KSGScript.dll"
 copy "..\..\Update\x64\Debug\Update.dll" "data\bin\Update.dll"
 copy "..\..\Minigames\Asteroids\x64\Debug\Asteroids.dll" "data\Minigames\Asteroids\bin\game.dll"

+ 52 - 21
KSGClient/NachLogin/Editor/Karte/Dateien/KEDModel2DEditor.cpp

@@ -40,6 +40,11 @@ void VertexData::setTextur( Vertex tp )
     textur = tp;
 }
 
+void VertexData::setPosition( Vertex p )
+{
+    vertex = p;
+}
+
 void VertexData::saveTextur( Punkt tPos, Punkt tGr )
 {
     textur = vertex - tPos;
@@ -443,15 +448,29 @@ EditorListe::EditorListe( Schrift *zSchrift )
     scroll = new VScrollBar();
     schrift = zSchrift->getThis();
     pName = initTextFeld( 0, 0, 70, 20, schrift, TextFeld::Style::TextFeld, "" );
-    texturKoordF = initFenster( 10, 10, 150, 80, zSchrift, ( Fenster::Style::normal | Fenster::Style::TitelHintergrund | Fenster::Style::BodyHintergrund ) & ~Fenster::Style::Sichtbar, "Texturkoordinaten" );
-    texturKoordF->setKBgFarbe( 0xFF000000 );
-    texturKoordF->setTBgFarbe( 0xFF000000 );
-    texturKoordF->setClosingMe( _closeFensterME );
-    tkxT = initTextFeld( 10, 10, 30, 20, zSchrift, TextFeld::Style::Text, "x:" );
-    tkyT = initTextFeld( 10, 40, 30, 20, zSchrift, TextFeld::Style::Text, "y:" );
-    tkx = initTextFeld( 40, 10, 90, 20, zSchrift, TextFeld::Style::TextFeld, "" );
-    tky = initTextFeld( 40, 40, 90, 20, zSchrift, TextFeld::Style::TextFeld, "" );
+    koordF = initFenster( 10, 10, 150, 140, zSchrift, ( Fenster::Style::normal | Fenster::Style::TitelHintergrund | Fenster::Style::BodyHintergrund ) & ~Fenster::Style::Sichtbar, "Koordinaten" );
+    koordF->setKBgFarbe( 0xFF000000 );
+    koordF->setTBgFarbe( 0xFF000000 );
+    koordF->setClosingMe( _closeFensterME );
+    kxT = initTextFeld( 10, 10, 30, 20, zSchrift, TextFeld::Style::Text, "x:" );
+    kyT = initTextFeld( 10, 40, 30, 20, zSchrift, TextFeld::Style::Text, "y:" );
+    kx = initTextFeld( 40, 10, 90, 20, zSchrift, TextFeld::Style::TextFeld, "" );
+    ky = initTextFeld( 40, 40, 90, 20, zSchrift, TextFeld::Style::TextFeld, "" );
+    tkxT = initTextFeld( 10, 70, 30, 20, zSchrift, TextFeld::Style::Text, "tx:" );
+    tkyT = initTextFeld( 10, 100, 30, 20, zSchrift, TextFeld::Style::Text, "ty:" );
+    tkx = initTextFeld( 40, 70, 90, 20, zSchrift, TextFeld::Style::TextFeld, "" );
+    tky = initTextFeld( 40, 100, 90, 20, zSchrift, TextFeld::Style::TextFeld, "" );
     int *polIP = &polI, *verIP = &verI;
+    TextFeld *kxTmp = kx;
+    TextFeld *kyTmp = ky;
+    auto saveK = [ polIP, verIP, kxTmp, kyTmp ]( void *p, void *o, TastaturEreignis te )
+    {
+        Data *data = (Data*)p;
+        data->zPolygon( *polIP )->zVertex( *verIP )->setPosition( Vertex( (float)(double)*kxTmp->zText(), (float)(double)*kyTmp->zText() ) );
+        return 1;
+    };
+    kx->setNTastaturEreignis( saveK );
+    ky->setNTastaturEreignis( saveK );
     TextFeld *tkxTmp = tkx;
     TextFeld *tkyTmp = tky;
     auto saveTK = [ polIP, verIP, tkxTmp, tkyTmp ]( void *p, void *o, TastaturEreignis te )
@@ -462,10 +481,14 @@ EditorListe::EditorListe( Schrift *zSchrift )
     };
     tkx->setNTastaturEreignis( saveTK );
     tky->setNTastaturEreignis( saveTK );
-    texturKoordF->addMember( tkxT );
-    texturKoordF->addMember( tkyT );
-    texturKoordF->addMember( tkx );
-    texturKoordF->addMember( tky );
+    koordF->addMember( kxT );
+    koordF->addMember( kyT );
+    koordF->addMember( kx );
+    koordF->addMember( ky );
+    koordF->addMember( tkxT );
+    koordF->addMember( tkyT );
+    koordF->addMember( tkx );
+    koordF->addMember( tky );
     polI = 0;
     verI = 0;
     data = 0;
@@ -481,7 +504,11 @@ EditorListe::~EditorListe()
     if( data )
         data->release();
     schrift->release();
-    texturKoordF->release();
+    koordF->release();
+    kxT->release();
+    kyT->release();
+    kx->release();
+    ky->release();
     tkxT->release();
     tkyT->release();
     tkx->release();
@@ -498,7 +525,7 @@ void EditorListe::setDataZ( Data *d )
 
 void EditorListe::doMausEreignis( MausEreignis &me )
 {
-    texturKoordF->doMausEreignis( me );
+    koordF->doMausEreignis( me );
     me.mx -= ram->getX();
     me.my -= ram->getY();
     if( me.mx < 0 || me.my < 0 || me.mx > ram->getBreite() || me.my > ram->getHeight() )
@@ -527,7 +554,7 @@ void EditorListe::doMausEreignis( MausEreignis &me )
             else if( me.mx > 115 && me.my > y + 1 && me.mx < 132 && me.my < y + 19 )
             { // Löschen
                 if( polI == i )
-                    texturKoordF->removeStyle( Fenster::Style::Sichtbar );
+                    koordF->removeStyle( Fenster::Style::Sichtbar );
                 data->removePolygon( i );
                 rend = 1;
                 break;
@@ -555,7 +582,7 @@ void EditorListe::doMausEreignis( MausEreignis &me )
                     if( me.mx > 115 && me.my > y + 1 && me.mx < 132 && me.my < y + 19 )
                     { // Löschen
                         if( polI == i && verI == j )
-                            texturKoordF->removeStyle( Fenster::Style::Sichtbar );
+                            koordF->removeStyle( Fenster::Style::Sichtbar );
                         pd->removeVertex( j );
                         rend = 1;
                     }
@@ -565,14 +592,14 @@ void EditorListe::doMausEreignis( MausEreignis &me )
                         rend = 1;
                     }
                     else if( me.mx > 5 && me.my > y + 5 && me.mx < 15 && me.my < y + 15 )
-                    { // Sichtbar und Unsichtbar
+                    { // Koordinaten fenster sichtbar machen
                         polI = i;
                         verI = j;
                         tkx->setNTastaturEreignisParameter( data );
                         tky->setNTastaturEreignisParameter( data );
                         tkx->setText( Text() += pd->zVertex( j )->getTPos().x );
                         tky->setText( Text() += pd->zVertex( j )->getTPos().y );
-                        texturKoordF->addStyle( Fenster::Style::Sichtbar );
+                        koordF->addStyle( Fenster::Style::Sichtbar );
                     }
                     else if( me.my > y && me.my < y + 20 && me.mx > 0 && me.mx < 133 )
                     { // Auswählen und Abwählen
@@ -591,14 +618,14 @@ void EditorListe::doMausEreignis( MausEreignis &me )
 
 void EditorListe::doTastaturEreignis( TastaturEreignis &te )
 {
-    texturKoordF->doTastaturEreignis( te );
+    koordF->doTastaturEreignis( te );
     if( data && data->getSelectedPolygon() >= 0 )
         pName->doTastaturEreignis( te );
 }
 
 bool EditorListe::tick( double zeit )
 {
-    rend |= texturKoordF->tick( zeit );
+    rend |= koordF->tick( zeit );
     if( data && data->getSelectedPolygon() >= 0 )
         rend |= pName->tick( zeit );
     bool ret = rend;
@@ -674,7 +701,11 @@ void EditorListe::render( Bild &zRObj )
                     schrift->setDrawPosition( 20, y + 4 );
                     schrift->renderText( &name, zRObj, 0xFFFFFFFF );
                     zRObj.drawLinieH( 5, y + 5, 10, 0xFFFFFFFF );
+                    zRObj.drawLinieH( 5, y + 10, 10, 0xFFFFFFFF );
+                    zRObj.drawLinieH( 5, y + 15, 10, 0xFFFFFFFF );
+                    zRObj.drawLinieV( 5, y + 5, 10, 0xFFFFFFFF );
                     zRObj.drawLinieV( 10, y + 5, 10, 0xFFFFFFFF );
+                    zRObj.drawLinieV( 15, y + 5, 10, 0xFFFFFFFF );
                     zRObj.drawLinie( Punkt( 115, y + 1 ), Punkt( 132, y + 18 ), 0xFFFF0000 );
                     zRObj.drawLinie( Punkt( 132, y + 1 ), Punkt( 115, y + 18 ), 0xFFFF0000 );
                     if( pd->zVertex( j )->istSichtbar() )
@@ -698,7 +729,7 @@ void EditorListe::render( Bild &zRObj )
     schrift->unlock();
     scroll->update( maxH, ram->getHeight() - 2 );
     zRObj.releaseDrawOptions();
-    texturKoordF->render( zRObj );
+    koordF->render( zRObj );
 }
 
 // Reference Counting

+ 6 - 1
KSGClient/NachLogin/Editor/Karte/Dateien/KEDModel2DEditor.h

@@ -27,6 +27,7 @@ namespace Model2DEditor
         // nicht constant
         void nachLinks( float num );
         void nachOben( float num );
+        void setPosition( Vertex p );
         void setTextur( Vertex tp );
         void saveTextur( Punkt tPos, Punkt tGr );
         void select( Punkt p1, Punkt p2 );
@@ -129,7 +130,11 @@ namespace Model2DEditor
         Array< bool > ausgeklappt;
         Schrift *schrift;
         TextFeld *pName;
-        Fenster *texturKoordF;
+        Fenster *koordF;
+        TextFeld *kxT;
+        TextFeld *kyT;
+        TextFeld *kx;
+        TextFeld *ky;
         TextFeld *tkxT;
         TextFeld *tkyT;
         TextFeld *tkx;

+ 1 - 1
KSGClient/NachLogin/Shop/Spiele/SpieleKaufen.cpp

@@ -719,7 +719,7 @@ int SpieleKaufenListe::doMausEreignis( MausEreignis &me )
 	{
 		if( einträge->z( i )->doMausEreignis( me ) )
 			ret = einträge->z( i )->getSpielId();
-		me.my += 100;
+		me.my -= 100;
 	}
 	if( ret )
 	{