summary refs log tree commit diff stats
path: root/src/systems/rendering.cpp
blob: 8219732160e2522bfdeb85d7641f8a26b40466ea (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "rendering.h"
#include "game.h"
#include "components/animatable.h"
#include "components/transformable.h"

void RenderingSystem::tick(double)
{
  texture_.fill(texture_.entirety(), 0, 0, 0);

  std::set<id_type> spriteEntities =
    game_.getEntityManager().getEntitiesWithComponents<
      AnimatableComponent,
      TransformableComponent>();

  for (id_type entity : spriteEntities)
  {
    auto& sprite = game_.getEntityManager().
      getComponent<AnimatableComponent>(entity);

    auto& transform = game_.getEntityManager().
      getComponent<TransformableComponent>(entity);

    Rectangle dstrect {
      static_cast<int>(transform.getX()),
      static_cast<int>(transform.getY()),
      transform.getW(),
      transform.getH()};

    const AnimationSet& aset = sprite.getAnimationSet();
    texture_.blit(
      aset.getTexture(),
      aset.getFrameRect(sprite.getFrame()),
      dstrect);
  }

  texture_.renderScreen();
}