فهرست منبع

Einiege Fehler behoben

Kolja Strohm 5 سال پیش
والد
کامیت
573fc767bd

+ 16 - 13
Asteroids/Editor/Editor.cpp

@@ -271,23 +271,26 @@ void AsteroidsEditor::doTastaturEreignis( TastaturEreignis & te )
 
 bool AsteroidsEditor::tick( double z )
 {
-    if( ( status == WARTEND || status == START || ( daten && daten->hasAktions() ) ) && alpha != 100 )
+    if( ( status == WARTEND || status == START || ( daten && daten->hasAktions() ) ) )
     {
-        if( laden && !laden->istSichtbar() )
-            laden->setSichtbar( 1 );
-        if( alpha < 100 )
+        if( alpha != 100 )
         {
-            alpha += (unsigned char)( 100 * z );
-            if( alpha > 100 )
-                alpha = 100;
-        }
-        else
-        {
-            alpha -= (unsigned char)( 100 * z );
+            if( laden && !laden->istSichtbar() )
+                laden->setSichtbar( 1 );
             if( alpha < 100 )
-                alpha = 100;
+            {
+                alpha += (unsigned char)( 100 * z );
+                if( alpha > 100 )
+                    alpha = 100;
+            }
+            else
+            {
+                alpha -= (unsigned char)( 100 * z );
+                if( alpha < 100 )
+                    alpha = 100;
+            }
+            rend = 1;
         }
-        rend = 1;
     }
     else if( alpha != 255 )
     {

+ 4 - 0
Asteroids/Editor/Interface/Dialogs/ResourceDialog.cpp

@@ -23,6 +23,8 @@ ResourceDialog::ResourceDialog( TextRenderer *tr, ResourceDialogType typ, Editor
     m2v->setPosition( 5, 30 );
 
     bv = initBildZ( 5, 30, 390, 390, BildZ::Style::normal & ~Zeichnung::Style::Sichtbar, 0 );
+    addMember( bv->getThis() );
+    addMember( m2v->getThis() );
 
     paths = initAuswahlBox( 5, 5, 390, 20, tr->zSchrift(), AuswahlBox::Style::Normal | AuswahlBox::Style::Hintergrund, {} );
     if( ( typ | ALLOW_RESOURCES ) == typ )
@@ -64,6 +66,8 @@ ResourceDialog::ResourceDialog( TextRenderer *tr, ResourceDialogType typ, Editor
         {
             bv->removeStyle( Zeichnung::Style::Sichtbar );
             m2v->setModel2D( this->daten->loadModelFromPath( path.getText() ) );
+            m2v->zModel()->addStyle( Model2D::Style::Sichtbar | Model2D::Style::Mesh | Model2D::Style::Erlaubt );
+            m2v->zModel()->setFarbe( 0xFFFFFFFF );
             m2v->addStyle( Zeichnung::Style::Sichtbar );
         }
         else

+ 11 - 1
Asteroids/Editor/Interface/RightTools/ObjektOptionen/ObjektOptionen.cpp

@@ -79,9 +79,9 @@ ObjektTool::ObjektTool( Schrift *zSchrift, KarteDaten *daten )
     {
         if( me.id == ME_RLinks )
         {
+            cs.lock();
             if( dialog )
                 dialog->release();
-            cs.lock();
             dialog = new ResourceDialog( new TextRenderer( schrift->getThis() ), SELECT_MODEL2D, (KarteDaten*)this->daten->getThis(), [ this ]( const char *path )
             {
                 modelPath = path;
@@ -188,10 +188,15 @@ void ObjektTool::doMausEreignis( MausEreignis & me )
     bool vera = me.verarbeitet;
     if( hatStyleNicht( Zeichnung::Style::Sichtbar ) )
         me.verarbeitet = 1;
+    Punkt tmpM( me.mx, me.my );
+    me.mx = me.rmx;
+    me.my = me.rmy;
     cs.lock();
     if( dialog )
         dialog->doMausEreignis( me );
     cs.unlock();
+    me.mx = tmpM.x;
+    me.my = tmpM.y;
     me.mx -= pos.x;
     me.my -= pos.y;
     int ausw = objekte->getAuswahl();
@@ -201,6 +206,7 @@ void ObjektTool::doMausEreignis( MausEreignis & me )
         selectObject( *objekte->zEintrag( objekte->getAuswahl() )->zText() );
     if( objekte->getAuswahl() != ausw && objekte->getAuswahl() < 0 )
         selectObject( 0 );
+    neuesObjekt->doMausEreignis( me );
     model->doMausEreignis( me );
     changeModel->doMausEreignis( me );
     changeTextur->doMausEreignis( me );
@@ -282,6 +288,10 @@ void ObjektTool::render( Bild & rObj )
         team->render( rObj );
         rObj.releaseDrawOptions();
     }
+}
+
+void ObjektTool::renderDialogs( Bild &rObj )
+{
     cs.lock();
     if( dialog )
         dialog->render( rObj );

+ 1 - 0
Asteroids/Editor/Interface/RightTools/ObjektOptionen/ObjektOptionen.h

@@ -44,6 +44,7 @@ namespace Editor
         void doTastaturEreignis( TastaturEreignis &te ) override;
         bool tick( double tickVal ) override;
         void render( Bild &rObj ) override;
+        void renderDialogs( Bild &rObj ) override;
         void selectObject( int id );
     };
 }

+ 8 - 0
Asteroids/Editor/Interface/RightTools/RightTools.cpp

@@ -11,6 +11,9 @@ RightTool::RightTool()
 RightTool::~RightTool()
 {}
 
+void RightTool::renderDialogs( Bild &rObj )
+{}
+
 RightTool *RightTool::getThis()
 {
     ref++;
@@ -108,6 +111,11 @@ void RightTools::render( Bild &rObj )
         toolAuswahl->render( rObj );
         rObj.releaseDrawOptions();
     }
+    int anz = tools->getEintragAnzahl();
+    for( int i = 0; i < anz; i++ )
+    {
+        tools->z( i )->renderDialogs( rObj );
+    }
 }
 
 void RightTools::selectTool( int index )

+ 2 - 1
Asteroids/Editor/Interface/RightTools/RightTools.h

@@ -13,6 +13,7 @@ private:
 public:
     RightTool();
     virtual ~RightTool();
+    virtual void renderDialogs( Bild &rObj );
     RightTool *getThis();
     RightTool *release();
 };
@@ -20,7 +21,7 @@ public:
 class RightTools : public ZeichnungHintergrund
 {
 private:
-    AuswahlBox * toolAuswahl;
+    AuswahlBox *toolAuswahl;
     RCArray< RightTool > *tools;
     Punkt maxSize;
     int ref;

+ 18 - 0
Asteroids/Editor/Karte/EditorKarte.cpp

@@ -10,6 +10,22 @@
 
 using namespace Editor;
 
+
+SpielerDaten::SpielerDaten()
+    : Model()
+{}
+
+
+TeamDaten::TeamDaten()
+    : Model()
+{}
+
+
+ObjektDaten::ObjektDaten()
+    : Model()
+{}
+
+
 EditorObject::EditorObject()
     : Model2DObject()
 {}
@@ -199,6 +215,7 @@ KarteDaten::~KarteDaten()
     client->release();
     welt->release();
     Framework::getDLLRegister()->releaseDLL( "GSL.dll" );
+    cs.unlock();
 }
 
 void KarteDaten::addObjekt( ObjektDaten & daten, std::function< void( int ) > callBack )
@@ -518,6 +535,7 @@ void KarteDaten::loadUnusedResourcePaths( std::function< void( RCArray< Text > *
         mapPaths->release();
         callBack( result );
     } );
+    cs.unlock();
 }
 
 void KarteDaten::loadSpielResourcePathsFromFolder( const char *folderPath, RCArray< Text > * zPaths )

+ 6 - 0
Asteroids/Editor/Karte/EditorKarte.h

@@ -38,6 +38,8 @@ namespace Editor
         int skillPunkte;
         int m2d;
         int bild;
+
+        SpielerDaten();
     };
 
     struct TeamDaten : public Model
@@ -57,6 +59,8 @@ namespace Editor
         double energieSchild;
         double energieSchildEffizienz;
         int punkte;
+
+        TeamDaten();
     };
 
     struct ObjektDaten : public Model
@@ -74,6 +78,8 @@ namespace Editor
         double reparatur;
         double akkuLeistung;
         char team;
+
+        ObjektDaten();
     };
 
     class EditorObject : public Model2DObject