소스 검색

Lesson 18.3

Godzil 3 년 전
부모
커밋
2ff8620cad
3개의 변경된 파일15개의 추가작업 그리고 12개의 파일을 삭제
  1. 2 2
      source/Game.cpp
  2. 11 8
      source/include/Components/Sprite.h
  3. 2 2
      source/include/Systems/Render.h

+ 2 - 2
source/Game.cpp

@@ -163,7 +163,7 @@ void Game::LoadLevel(int level)
 
             Entity tile = registry->createEntity();
             tile.addComponent<TransformComponent>(glm::vec2(x * (tileScale * tileSize), y * (tileScale * tileSize)), glm::vec2(tileScale, tileScale), 0.0);
-            tile.addComponent<SpriteComponent>("main-tileset", 0, tileSize, tileSize, srcRectX, srcRectY);
+            tile.addComponent<SpriteComponent>("main-tileset", 0, tileSize, tileSize, false, srcRectX, srcRectY);
         }
     }
     mapFile.close();
@@ -183,7 +183,7 @@ void Game::LoadLevel(int level)
     Entity radar = this->registry->createEntity();
     radar.addComponent<TransformComponent>(glm::vec2(this->windowsWidth - 75, 10), glm::vec2(1, 1), 0);
     radar.addComponent<RigidBodyComponent>(glm::vec2(0, 0));
-    radar.addComponent<SpriteComponent>("radar-image", 3, 64, 64);
+    radar.addComponent<SpriteComponent>("radar-image", 3, 64, 64, true);
     radar.addComponent<AnimationComponent>(8, 5, true);
 
     Entity tank = this->registry->createEntity();

+ 11 - 8
source/include/Components/Sprite.h

@@ -21,17 +21,20 @@ struct SpriteComponent
     uint32_t height;
     int32_t zIndex;
     SDL_Rect sourceRect;
+    bool isFixed;
 
-    explicit SpriteComponent(std::string assetId = "",
-                             int32_t zIndex = 0,
+    explicit SpriteComponent(std::string assetId = "", int32_t zIndex = 0,
                              uint32_t width = 0, uint32_t height = 0,
-                             uint32_t sourceRectX = 0, uint32_t sourceRectY = 0): assetId(assetId), width(width),
-                                                                                  height(height), zIndex(zIndex)
+                             bool isFixed = false,
+                             uint32_t sourceRectX = 0, uint32_t sourceRectY = 0) : assetId(assetId), width(width),
+                                                                                   height(height), zIndex(zIndex),
+                                                                                   isFixed(isFixed)
     {
-        this->sourceRect =
-        {
-            static_cast<int>(sourceRectX), static_cast<int>(sourceRectY),
-            static_cast<int>(width), static_cast<int>(height),
+        this->sourceRect = {
+            static_cast<int>(sourceRectX),
+            static_cast<int>(sourceRectY),
+            static_cast<int>(width),
+            static_cast<int>(height),
         };
     };
 };

+ 2 - 2
source/include/Systems/Render.h

@@ -55,8 +55,8 @@ public:
             SDL_Texture *texture = assetStore->getTexture(sprite.assetId);
             SDL_Rect destRect =
             {
-                static_cast<int>(transform.position.x - camera.x),
-                static_cast<int>(transform.position.y - camera.y),
+                static_cast<int>(transform.position.x - (sprite.isFixed?0.:camera.x)),
+                static_cast<int>(transform.position.y - (sprite.isFixed?0.:camera.y)),
                 static_cast<int>(sprite.width * transform.scale.x),
                 static_cast<int>(sprite.height * transform.scale.y)
             };