void IComponent::OnUpdate(uint32 timePassed) { if (m_fadeActive) { if (m_fadeTimePassed < m_fadeTime) { float fadeTime = static_cast<float>(m_fadeTime); float fadeTimePassed = static_cast<float>(m_fadeTimePassed); D3DXCOLOR colorChange = ((m_fadeTo - m_fadeSrc) * 1000.0f) / fadeTime; SetColorMod((colorChange * fadeTimePassed) / 1000.0f + m_fadeSrc); } else { m_fadeActive = false; SetColorMod(m_fadeTo); } m_isVisible = (m_colorMod.a > 0.0f); m_fadeTimePassed += timePassed; } if (m_moveActive) { if (m_moveTimePassed < m_moveTime) { Utils::Vector2 position; position.x = floor(((m_moveTo.x - m_moveSrc.x) * 1000.0f) / m_moveTime * m_moveTimePassed / 1000.0f + m_moveSrc.x); position.y = floor(((m_moveTo.y - m_moveSrc.y) * 1000.0f) / m_moveTime * m_moveTimePassed / 1000.0f + m_moveSrc.y); SetPosition(position); } else { m_moveActive = false; SetPosition(m_moveTo); } m_moveTimePassed += timePassed; } }
void ResourceManager::AddSurfaceWithTransparencyAndTint(std::string key, std::string file_path, SDL_Color alpha, SDL_Color tint) { auto surface = std::make_shared<SDL2pp::Surface>(SDL2pp::Surface(file_path)); surface->SetBlendMode(SDL_BLENDMODE_NONE); surface->SetColorKey(true, SDL_MapRGB(&surface->Lock().GetFormat(), alpha.r, alpha.g, alpha.b)); surface->SetColorMod(tint.r, tint.g, tint.b); surface->SetAlphaMod(205); surfaces_[key] = surface; }