Bladeren bron

highlight the action target in world

Kolja Strohm 3 jaren geleden
bovenliggende
commit
2215d0fc44
4 gewijzigde bestanden met toevoegingen van 41 en 3 verwijderingen
  1. 0 1
      FactoryCraft/BasicBlocks.h
  2. 1 1
      FactoryCraft/Main.cpp
  3. 37 1
      FactoryCraft/World.cpp
  4. 3 0
      FactoryCraft/World.h

+ 0 - 1
FactoryCraft/BasicBlocks.h

@@ -31,7 +31,6 @@ public:
     virtual Block* createBlock( Framework::Vec3<int> position ) override;
     virtual void initializeSuperBlock( Block* zBlock )  override;
     virtual bool needsInstance() const override;
-
 };
 REGISTER( DirtBlockType, BlockType )
 

+ 1 - 1
FactoryCraft/Main.cpp

@@ -36,7 +36,7 @@ int KSGStart Framework::Start( Framework::Startparam p )
     WNDCLASS wc = Framework::F_Normal( p.hinst );
     wc.lpszClassName = "Factory Craft";
     window.erstellen( WS_POPUPWINDOW, wc );
-    Monitor m = Framework::getMonitor( 2 );
+    Monitor m = Framework::getMonitor( 1 );
     window.setBounds( Punkt( m.x, m.y ), Punkt( m.breite, m.height ) );
     window.setAnzeigeModus( SW_SHOWNORMAL );
     window.setVSchließAktion( [&window]( void* p, void* f ) {

+ 37 - 1
FactoryCraft/World.cpp

@@ -27,6 +27,8 @@ World::World( Bildschirm3D* zScreen )
     kam->setWelt( renderedWorld );
     zScreen->addKamera( kam );
     firstMessage = 1;
+    hasTarget = 0;
+    entityTarget = -1;
     start();
 }
 
@@ -61,7 +63,7 @@ void World::update( bool background )
             serverMessageReader->lese( (char*)&pos.x, 4 );
             serverMessageReader->lese( (char*)&pos.y, 4 );
             serverMessageReader->lese( (char*)&pos.z, 4 );
-            kam->setPosition( pos + Vec3<float>( 0.f, 0.f, 2.f ) );
+            kam->setPosition( pos + Vec3<float>( 0.f, 0.f, 1.5f ) );
             if( firstMessage )
             {
                 firstMessage = 0;
@@ -73,6 +75,40 @@ void World::update( bool background )
             ((Game*)(Menu*)menuRegister->get( "game" ))->updatePosition( pos );
             for( Dimension* dim : *dimensions )
                 dim->removeDistantChunks( { (int)pos.x, (int)pos.y } );
+            char b = 0;
+            serverMessageReader->lese( &b, 1 );
+            if( hasTarget && dimensions->hat( 0 ) )
+            {
+                if( entityTarget == -1 )
+                {
+                    auto block = zBlockAt( target, dimensions->z( 0 )->getDimensionId() );
+                    if( block.isA() )
+                        block.getA()->setAmbientFactor( block.getA()->getAmbientFactor() - 0.2 );
+                }
+            }
+            if( b == 1 )
+            {
+                serverMessageReader->lese( (char*)&entityTarget, 4 );
+                hasTarget = 1;
+            }
+            else if( b == 2 )
+            {
+                serverMessageReader->lese( (char*)&target.x, 4 );
+                serverMessageReader->lese( (char*)&target.y, 4 );
+                serverMessageReader->lese( (char*)&target.z, 4 );
+                hasTarget = 1;
+            }
+            else
+                hasTarget = 0;
+            if( hasTarget && dimensions->hat( 0 ) )
+            {
+                if( entityTarget == -1 )
+                {
+                    auto block = zBlockAt( target, dimensions->z( 0 )->getDimensionId() );
+                    if( block.isA() )
+                        block.getA()->setAmbientFactor( block.getA()->getAmbientFactor() + 0.2 );
+                }
+            }
         }
         network->zFactoryClient()->endMessageReading( background );
     }

+ 3 - 0
FactoryCraft/World.h

@@ -17,6 +17,9 @@ private:
     Framework::Welt3D* renderedWorld;
     Framework::Bildschirm3D* zScreenPtr;
     PlayerKam* kam;
+    Framework::Vec3<int> target;
+    int entityTarget;
+    bool hasTarget;
     bool firstMessage;
 
 public: