Skip to content
Snippets Groups Projects
Select Git revision
  • ce1229757b71c72e29f9d2ec8a36465cf8c71014
  • master default protected
2 results

FordFulkersonAlgorithm.cs

Blame
  • Effect.cpp 1.40 KiB
    /**
     * Effect.cpp
     *
     * @author Frederik Keens
     */
    
    #include "Effect.hpp"
    #include "../core/Spritesheet.hpp"
    
    #include <vector>
    
    namespace advanced_wars
    {
    
    Effect::Effect(int x, int y, EffectId id, bool repeat)
        : m_x(x), m_y(y), m_id(id), m_repeat(repeat), m_start(0) {
    
          };
    
    void Effect::render(Engine& engine, int scale)
    {
        Spritesheet* spritesheet = engine.getSpritesheet();
        if (m_start == 0)
        {
            m_start = engine.getStage();
        }
    
        int step =
            engine.getStage() % spritesheet->getEffectTextures().at(static_cast<int>(m_id)).second;
    
        SDL_Rect src;
        src.x = step * spritesheet->getEffectWidth() + step * spritesheet->getEffectHeight();
        src.y = 0;
        src.w = spritesheet->getEffectWidth();
        src.h = spritesheet->getEffectHeight();
    
        SDL_Rect dest;
        dest.x = (m_x * spritesheet->getTileWidth() * scale) - 8;
        dest.y = (m_y * spritesheet->getTileHeight() * scale) - 8;
        dest.w = spritesheet->getEffectWidth() * scale;
        dest.h = spritesheet->getEffectHeight() * scale;
    
        SDL_RenderCopyEx(
            engine.renderer(), spritesheet->getEffectTextures().at(static_cast<int>(m_id)).first, &src,
            &dest, 0, NULL, SDL_FLIP_NONE);
    }
    
    bool Effect::isFinished(Engine& engine)
    {
        return engine.getStage() - m_start >
                   engine.getSpritesheet()->getEffectTextures().at(static_cast<int>(m_id)).second &&
               !m_repeat;
    }
    
    } // namespace advanced_wars